// Copyright 2014 PDFium Authors. All rights reserved.
|
// Use of this source code is governed by a BSD-style license that can be
|
// found in the LICENSE file.
|
|
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
#ifndef XFA_FDE_CSS_FDE_CSS_H_
|
#define XFA_FDE_CSS_FDE_CSS_H_
|
|
#include "core/fxge/include/fx_dib.h"
|
#include "xfa/fgas/crt/fgas_stream.h"
|
#include "xfa/fgas/crt/fgas_utils.h"
|
#include "xfa/fgas/font/fgas_font.h"
|
|
class CFDE_CSSAccelerator;
|
class CFDE_CSSDeclaration;
|
class CFDE_CSSSelector;
|
class CXFA_CSSTagProvider;
|
class IFDE_CSSBoundaryStyle;
|
class IFDE_CSSComputedStyle;
|
class IFDE_CSSFontStyle;
|
class IFDE_CSSParagraphStyle;
|
class IFDE_CSSPositionStyle;
|
class IFDE_CSSRule;
|
class IFDE_CSSStyleSheet;
|
class IFDE_CSSValue;
|
class IFDE_CSSValueList;
|
|
#define FDE_CSSMEDIATYPE_Braille 0x01
|
#define FDE_CSSMEDIATYPE_Emboss 0x02
|
#define FDE_CSSMEDIATYPE_Handheld 0x04
|
#define FDE_CSSMEDIATYPE_Print 0x08
|
#define FDE_CSSMEDIATYPE_Projection 0x10
|
#define FDE_CSSMEDIATYPE_Screen 0x20
|
#define FDE_CSSMEDIATYPE_TTY 0x40
|
#define FDE_CSSMEDIATYPE_TV 0x80
|
#define FDE_CSSMEDIATYPE_ALL 0xFF
|
|
#define FDE_CSSUNITBITS (3)
|
#define FDE_CSSUNITMASK ((1 << FDE_CSSUNITBITS) - 1)
|
|
enum FDE_CSSVALUETYPE {
|
FDE_CSSVALUETYPE_Primitive = 1,
|
FDE_CSSVALUETYPE_List = 2,
|
FDE_CSSVALUETYPE_Shorthand,
|
};
|
|
enum FDE_CSSPRIMITIVETYPE {
|
FDE_CSSPRIMITIVETYPE_Unknown = 0,
|
FDE_CSSPRIMITIVETYPE_Number = 1,
|
FDE_CSSPRIMITIVETYPE_Percent = 2,
|
FDE_CSSPRIMITIVETYPE_EMS = 3,
|
FDE_CSSPRIMITIVETYPE_EXS = 4,
|
FDE_CSSPRIMITIVETYPE_PX = 5,
|
FDE_CSSPRIMITIVETYPE_CM = 6,
|
FDE_CSSPRIMITIVETYPE_MM = 7,
|
FDE_CSSPRIMITIVETYPE_IN = 8,
|
FDE_CSSPRIMITIVETYPE_PT = 9,
|
FDE_CSSPRIMITIVETYPE_PC = 10,
|
FDE_CSSPRIMITIVETYPE_String = 19,
|
FDE_CSSPRIMITIVETYPE_URI = 20,
|
FDE_CSSPRIMITIVETYPE_RGB = 25,
|
FDE_CSSPRIMITIVETYPE_Enum,
|
FDE_CSSPRIMITIVETYPE_Function,
|
};
|
|
enum FDE_CSSPROPERTYVALUE {
|
FDE_CSSPROPERTYVALUE_Bolder,
|
FDE_CSSPROPERTYVALUE_LowerLatin,
|
FDE_CSSPROPERTYVALUE_Lowercase,
|
FDE_CSSPROPERTYVALUE_LowerGreek,
|
FDE_CSSPROPERTYVALUE_Sesame,
|
FDE_CSSPROPERTYVALUE_None,
|
FDE_CSSPROPERTYVALUE_NwResize,
|
FDE_CSSPROPERTYVALUE_WResize,
|
FDE_CSSPROPERTYVALUE_Dot,
|
FDE_CSSPROPERTYVALUE_End,
|
FDE_CSSPROPERTYVALUE_Ltr,
|
FDE_CSSPROPERTYVALUE_Pre,
|
FDE_CSSPROPERTYVALUE_Rtl,
|
FDE_CSSPROPERTYVALUE_Sub,
|
FDE_CSSPROPERTYVALUE_Top,
|
FDE_CSSPROPERTYVALUE_Visible,
|
FDE_CSSPROPERTYVALUE_Filled,
|
FDE_CSSPROPERTYVALUE_SwResize,
|
FDE_CSSPROPERTYVALUE_NoRepeat,
|
FDE_CSSPROPERTYVALUE_Default,
|
FDE_CSSPROPERTYVALUE_Transparent,
|
FDE_CSSPROPERTYVALUE_Ridge,
|
FDE_CSSPROPERTYVALUE_Right,
|
FDE_CSSPROPERTYVALUE_HorizontalTb,
|
FDE_CSSPROPERTYVALUE_DistributeLetter,
|
FDE_CSSPROPERTYVALUE_DoubleCircle,
|
FDE_CSSPROPERTYVALUE_Ruby,
|
FDE_CSSPROPERTYVALUE_Collapse,
|
FDE_CSSPROPERTYVALUE_Normal,
|
FDE_CSSPROPERTYVALUE_Avoid,
|
FDE_CSSPROPERTYVALUE_UpperRoman,
|
FDE_CSSPROPERTYVALUE_Auto,
|
FDE_CSSPROPERTYVALUE_Text,
|
FDE_CSSPROPERTYVALUE_XSmall,
|
FDE_CSSPROPERTYVALUE_Thin,
|
FDE_CSSPROPERTYVALUE_Repeat,
|
FDE_CSSPROPERTYVALUE_Small,
|
FDE_CSSPROPERTYVALUE_NeResize,
|
FDE_CSSPROPERTYVALUE_NoContent,
|
FDE_CSSPROPERTYVALUE_Outside,
|
FDE_CSSPROPERTYVALUE_EResize,
|
FDE_CSSPROPERTYVALUE_TableRow,
|
FDE_CSSPROPERTYVALUE_Bottom,
|
FDE_CSSPROPERTYVALUE_Underline,
|
FDE_CSSPROPERTYVALUE_CjkIdeographic,
|
FDE_CSSPROPERTYVALUE_SeResize,
|
FDE_CSSPROPERTYVALUE_Fixed,
|
FDE_CSSPROPERTYVALUE_Double,
|
FDE_CSSPROPERTYVALUE_Solid,
|
FDE_CSSPROPERTYVALUE_RubyBaseGroup,
|
FDE_CSSPROPERTYVALUE_OpenQuote,
|
FDE_CSSPROPERTYVALUE_Lighter,
|
FDE_CSSPROPERTYVALUE_LowerRoman,
|
FDE_CSSPROPERTYVALUE_Strict,
|
FDE_CSSPROPERTYVALUE_TableCaption,
|
FDE_CSSPROPERTYVALUE_Oblique,
|
FDE_CSSPROPERTYVALUE_Decimal,
|
FDE_CSSPROPERTYVALUE_Loose,
|
FDE_CSSPROPERTYVALUE_Hebrew,
|
FDE_CSSPROPERTYVALUE_Hidden,
|
FDE_CSSPROPERTYVALUE_Dashed,
|
FDE_CSSPROPERTYVALUE_Embed,
|
FDE_CSSPROPERTYVALUE_TableRowGroup,
|
FDE_CSSPROPERTYVALUE_TableColumn,
|
FDE_CSSPROPERTYVALUE_Static,
|
FDE_CSSPROPERTYVALUE_Outset,
|
FDE_CSSPROPERTYVALUE_DecimalLeadingZero,
|
FDE_CSSPROPERTYVALUE_KeepWords,
|
FDE_CSSPROPERTYVALUE_KatakanaIroha,
|
FDE_CSSPROPERTYVALUE_Super,
|
FDE_CSSPROPERTYVALUE_Center,
|
FDE_CSSPROPERTYVALUE_TableHeaderGroup,
|
FDE_CSSPROPERTYVALUE_Inside,
|
FDE_CSSPROPERTYVALUE_XxLarge,
|
FDE_CSSPROPERTYVALUE_Triangle,
|
FDE_CSSPROPERTYVALUE_RubyTextGroup,
|
FDE_CSSPROPERTYVALUE_Circle,
|
FDE_CSSPROPERTYVALUE_Hiragana,
|
FDE_CSSPROPERTYVALUE_RepeatX,
|
FDE_CSSPROPERTYVALUE_RepeatY,
|
FDE_CSSPROPERTYVALUE_Move,
|
FDE_CSSPROPERTYVALUE_HiraganaIroha,
|
FDE_CSSPROPERTYVALUE_RubyBase,
|
FDE_CSSPROPERTYVALUE_Scroll,
|
FDE_CSSPROPERTYVALUE_Smaller,
|
FDE_CSSPROPERTYVALUE_TableFooterGroup,
|
FDE_CSSPROPERTYVALUE_Baseline,
|
FDE_CSSPROPERTYVALUE_Separate,
|
FDE_CSSPROPERTYVALUE_Armenian,
|
FDE_CSSPROPERTYVALUE_Open,
|
FDE_CSSPROPERTYVALUE_Relative,
|
FDE_CSSPROPERTYVALUE_Thick,
|
FDE_CSSPROPERTYVALUE_Justify,
|
FDE_CSSPROPERTYVALUE_Middle,
|
FDE_CSSPROPERTYVALUE_Always,
|
FDE_CSSPROPERTYVALUE_DistributeSpace,
|
FDE_CSSPROPERTYVALUE_LineEdge,
|
FDE_CSSPROPERTYVALUE_PreWrap,
|
FDE_CSSPROPERTYVALUE_Medium,
|
FDE_CSSPROPERTYVALUE_NResize,
|
FDE_CSSPROPERTYVALUE_ListItem,
|
FDE_CSSPROPERTYVALUE_Show,
|
FDE_CSSPROPERTYVALUE_Currentcolor,
|
FDE_CSSPROPERTYVALUE_NoCloseQuote,
|
FDE_CSSPROPERTYVALUE_VerticalLr,
|
FDE_CSSPROPERTYVALUE_VerticalRl,
|
FDE_CSSPROPERTYVALUE_Pointer,
|
FDE_CSSPROPERTYVALUE_XxSmall,
|
FDE_CSSPROPERTYVALUE_Bold,
|
FDE_CSSPROPERTYVALUE_Both,
|
FDE_CSSPROPERTYVALUE_SmallCaps,
|
FDE_CSSPROPERTYVALUE_Katakana,
|
FDE_CSSPROPERTYVALUE_After,
|
FDE_CSSPROPERTYVALUE_Horizontal,
|
FDE_CSSPROPERTYVALUE_Dotted,
|
FDE_CSSPROPERTYVALUE_Disc,
|
FDE_CSSPROPERTYVALUE_Georgian,
|
FDE_CSSPROPERTYVALUE_Inline,
|
FDE_CSSPROPERTYVALUE_Overline,
|
FDE_CSSPROPERTYVALUE_Wait,
|
FDE_CSSPROPERTYVALUE_BreakAll,
|
FDE_CSSPROPERTYVALUE_UpperAlpha,
|
FDE_CSSPROPERTYVALUE_Capitalize,
|
FDE_CSSPROPERTYVALUE_Nowrap,
|
FDE_CSSPROPERTYVALUE_TextBottom,
|
FDE_CSSPROPERTYVALUE_NoOpenQuote,
|
FDE_CSSPROPERTYVALUE_Groove,
|
FDE_CSSPROPERTYVALUE_Progress,
|
FDE_CSSPROPERTYVALUE_Larger,
|
FDE_CSSPROPERTYVALUE_CloseQuote,
|
FDE_CSSPROPERTYVALUE_TableCell,
|
FDE_CSSPROPERTYVALUE_PreLine,
|
FDE_CSSPROPERTYVALUE_Absolute,
|
FDE_CSSPROPERTYVALUE_InlineTable,
|
FDE_CSSPROPERTYVALUE_BidiOverride,
|
FDE_CSSPROPERTYVALUE_InlineBlock,
|
FDE_CSSPROPERTYVALUE_Inset,
|
FDE_CSSPROPERTYVALUE_Crosshair,
|
FDE_CSSPROPERTYVALUE_UpperLatin,
|
FDE_CSSPROPERTYVALUE_Help,
|
FDE_CSSPROPERTYVALUE_Hide,
|
FDE_CSSPROPERTYVALUE_Uppercase,
|
FDE_CSSPROPERTYVALUE_SResize,
|
FDE_CSSPROPERTYVALUE_Table,
|
FDE_CSSPROPERTYVALUE_Blink,
|
FDE_CSSPROPERTYVALUE_Block,
|
FDE_CSSPROPERTYVALUE_Start,
|
FDE_CSSPROPERTYVALUE_TableColumnGroup,
|
FDE_CSSPROPERTYVALUE_Italic,
|
FDE_CSSPROPERTYVALUE_LineThrough,
|
FDE_CSSPROPERTYVALUE_KeepAll,
|
FDE_CSSPROPERTYVALUE_LowerAlpha,
|
FDE_CSSPROPERTYVALUE_RunIn,
|
FDE_CSSPROPERTYVALUE_Square,
|
FDE_CSSPROPERTYVALUE_XLarge,
|
FDE_CSSPROPERTYVALUE_Large,
|
FDE_CSSPROPERTYVALUE_Before,
|
FDE_CSSPROPERTYVALUE_Left,
|
FDE_CSSPROPERTYVALUE_TextTop,
|
FDE_CSSPROPERTYVALUE_RubyText,
|
FDE_CSSPROPERTYVALUE_NoDisplay,
|
FDE_CSSPROPERTYVALUE_MAX
|
};
|
|
enum FDE_CSSPROPERTY {
|
FDE_CSSPROPERTY_WritingMode,
|
FDE_CSSPROPERTY_ColumnRuleWidth,
|
FDE_CSSPROPERTY_BorderLeft,
|
FDE_CSSPROPERTY_ColumnRule,
|
FDE_CSSPROPERTY_Height,
|
FDE_CSSPROPERTY_CounterReset,
|
FDE_CSSPROPERTY_Content,
|
FDE_CSSPROPERTY_RubyPosition,
|
FDE_CSSPROPERTY_BackgroundColor,
|
FDE_CSSPROPERTY_Width,
|
FDE_CSSPROPERTY_Src,
|
FDE_CSSPROPERTY_Top,
|
FDE_CSSPROPERTY_Margin,
|
FDE_CSSPROPERTY_BorderColor,
|
FDE_CSSPROPERTY_Widows,
|
FDE_CSSPROPERTY_BorderBottomColor,
|
FDE_CSSPROPERTY_TextIndent,
|
FDE_CSSPROPERTY_Right,
|
FDE_CSSPROPERTY_TextEmphasisStyle,
|
FDE_CSSPROPERTY_PaddingLeft,
|
FDE_CSSPROPERTY_ColumnWidth,
|
FDE_CSSPROPERTY_MarginLeft,
|
FDE_CSSPROPERTY_Border,
|
FDE_CSSPROPERTY_BorderTop,
|
FDE_CSSPROPERTY_RubyOverhang,
|
FDE_CSSPROPERTY_PageBreakBefore,
|
FDE_CSSPROPERTY_MaxHeight,
|
FDE_CSSPROPERTY_MinWidth,
|
FDE_CSSPROPERTY_BorderLeftColor,
|
FDE_CSSPROPERTY_Bottom,
|
FDE_CSSPROPERTY_Quotes,
|
FDE_CSSPROPERTY_MaxWidth,
|
FDE_CSSPROPERTY_PaddingRight,
|
FDE_CSSPROPERTY_ListStyleImage,
|
FDE_CSSPROPERTY_WhiteSpace,
|
FDE_CSSPROPERTY_BorderBottom,
|
FDE_CSSPROPERTY_ListStyleType,
|
FDE_CSSPROPERTY_WordBreak,
|
FDE_CSSPROPERTY_OverflowX,
|
FDE_CSSPROPERTY_OverflowY,
|
FDE_CSSPROPERTY_BorderTopColor,
|
FDE_CSSPROPERTY_FontFamily,
|
FDE_CSSPROPERTY_Cursor,
|
FDE_CSSPROPERTY_RubyAlign,
|
FDE_CSSPROPERTY_ColumnRuleColor,
|
FDE_CSSPROPERTY_FontWeight,
|
FDE_CSSPROPERTY_BorderRightStyle,
|
FDE_CSSPROPERTY_MinHeight,
|
FDE_CSSPROPERTY_Color,
|
FDE_CSSPROPERTY_LetterSpacing,
|
FDE_CSSPROPERTY_EmptyCells,
|
FDE_CSSPROPERTY_TextAlign,
|
FDE_CSSPROPERTY_RubySpan,
|
FDE_CSSPROPERTY_Position,
|
FDE_CSSPROPERTY_BorderStyle,
|
FDE_CSSPROPERTY_BorderBottomStyle,
|
FDE_CSSPROPERTY_BorderCollapse,
|
FDE_CSSPROPERTY_ColumnCount,
|
FDE_CSSPROPERTY_BorderRightWidth,
|
FDE_CSSPROPERTY_UnicodeBidi,
|
FDE_CSSPROPERTY_VerticalAlign,
|
FDE_CSSPROPERTY_PaddingTop,
|
FDE_CSSPROPERTY_Columns,
|
FDE_CSSPROPERTY_Overflow,
|
FDE_CSSPROPERTY_TableLayout,
|
FDE_CSSPROPERTY_FontVariant,
|
FDE_CSSPROPERTY_ListStyle,
|
FDE_CSSPROPERTY_BackgroundPosition,
|
FDE_CSSPROPERTY_BorderWidth,
|
FDE_CSSPROPERTY_TextEmphasisColor,
|
FDE_CSSPROPERTY_BorderLeftStyle,
|
FDE_CSSPROPERTY_PageBreakInside,
|
FDE_CSSPROPERTY_TextEmphasis,
|
FDE_CSSPROPERTY_BorderBottomWidth,
|
FDE_CSSPROPERTY_ColumnGap,
|
FDE_CSSPROPERTY_Orphans,
|
FDE_CSSPROPERTY_BorderRight,
|
FDE_CSSPROPERTY_FontSize,
|
FDE_CSSPROPERTY_PageBreakAfter,
|
FDE_CSSPROPERTY_CaptionSide,
|
FDE_CSSPROPERTY_BackgroundRepeat,
|
FDE_CSSPROPERTY_BorderTopStyle,
|
FDE_CSSPROPERTY_BorderSpacing,
|
FDE_CSSPROPERTY_TextTransform,
|
FDE_CSSPROPERTY_FontStyle,
|
FDE_CSSPROPERTY_Font,
|
FDE_CSSPROPERTY_LineHeight,
|
FDE_CSSPROPERTY_MarginRight,
|
FDE_CSSPROPERTY_Float,
|
FDE_CSSPROPERTY_BorderLeftWidth,
|
FDE_CSSPROPERTY_Display,
|
FDE_CSSPROPERTY_Clear,
|
FDE_CSSPROPERTY_ColumnRuleStyle,
|
FDE_CSSPROPERTY_TextCombine,
|
FDE_CSSPROPERTY_ListStylePosition,
|
FDE_CSSPROPERTY_Visibility,
|
FDE_CSSPROPERTY_PaddingBottom,
|
FDE_CSSPROPERTY_BackgroundAttachment,
|
FDE_CSSPROPERTY_BackgroundImage,
|
FDE_CSSPROPERTY_LineBreak,
|
FDE_CSSPROPERTY_Background,
|
FDE_CSSPROPERTY_BorderTopWidth,
|
FDE_CSSPROPERTY_WordSpacing,
|
FDE_CSSPROPERTY_BorderRightColor,
|
FDE_CSSPROPERTY_CounterIncrement,
|
FDE_CSSPROPERTY_Left,
|
FDE_CSSPROPERTY_TextDecoration,
|
FDE_CSSPROPERTY_Padding,
|
FDE_CSSPROPERTY_MarginBottom,
|
FDE_CSSPROPERTY_MarginTop,
|
FDE_CSSPROPERTY_Direction,
|
FDE_CSSPROPERTY_MAX
|
};
|
|
enum FDE_CSSPERSUDO {
|
FDE_CSSPERSUDO_After,
|
FDE_CSSPERSUDO_Before,
|
FDE_CSSPERSUDO_NONE
|
};
|
enum FDE_CSSSELECTORTYPE {
|
FDE_CSSSELECTORTYPE_Element,
|
FDE_CSSSELECTORTYPE_Descendant,
|
FDE_CSSSELECTORTYPE_Class,
|
FDE_CSSSELECTORTYPE_Persudo,
|
FDE_CSSSELECTORTYPE_ID,
|
};
|
|
enum FDE_CSSRULETYPE {
|
FDE_CSSRULETYPE_Unknown = 0,
|
FDE_CSSRULETYPE_Style = 1,
|
FDE_CSSRULETYPE_Media = 4,
|
FDE_CSSRULETYPE_FontFace = 5,
|
};
|
|
enum FDE_CSSSYNTAXSTATUS {
|
FDE_CSSSYNTAXSTATUS_Error,
|
FDE_CSSSYNTAXSTATUS_EOS,
|
FDE_CSSSYNTAXSTATUS_None,
|
FDE_CSSSYNTAXSTATUS_Charset,
|
FDE_CSSSYNTAXSTATUS_ImportRule,
|
FDE_CSSSYNTAXSTATUS_ImportClose,
|
FDE_CSSSYNTAXSTATUS_PageRule,
|
FDE_CSSSYNTAXSTATUS_StyleRule,
|
FDE_CSSSYNTAXSTATUS_FontFaceRule,
|
FDE_CSSSYNTAXSTATUS_MediaRule,
|
FDE_CSSSYNTAXSTATUS_MediaType,
|
FDE_CSSSYNTAXSTATUS_URI,
|
FDE_CSSSYNTAXSTATUS_Selector,
|
FDE_CSSSYNTAXSTATUS_DeclOpen,
|
FDE_CSSSYNTAXSTATUS_DeclClose,
|
FDE_CSSSYNTAXSTATUS_PropertyName,
|
FDE_CSSSYNTAXSTATUS_PropertyValue,
|
};
|
|
enum FDE_CSSLENGTHUNIT {
|
FDE_CSSLENGTHUNIT_Auto,
|
FDE_CSSLENGTHUNIT_None,
|
FDE_CSSLENGTHUNIT_Normal,
|
FDE_CSSLENGTHUNIT_Point,
|
FDE_CSSLENGTHUNIT_Percent,
|
};
|
|
enum FDE_CSSBKGATTACHMENT {
|
FDE_CSSBKGATTACHMENT_Scroll,
|
FDE_CSSBKGATTACHMENT_Fixed,
|
};
|
|
enum FDE_CSSBKGREPEAT {
|
FDE_CSSBKGREPEAT_Repeat,
|
FDE_CSSBKGREPEAT_RepeatX,
|
FDE_CSSBKGREPEAT_RepeatY,
|
FDE_CSSBKGREPEAT_NoRepeat,
|
};
|
|
enum FDE_CSSBORDERSTYLE {
|
FDE_CSSBORDERSTYLE_None,
|
FDE_CSSBORDERSTYLE_Hidden,
|
FDE_CSSBORDERSTYLE_Dotted,
|
FDE_CSSBORDERSTYLE_Dashed,
|
FDE_CSSBORDERSTYLE_Solid,
|
FDE_CSSBORDERSTYLE_Double,
|
FDE_CSSBORDERSTYLE_Groove,
|
FDE_CSSBORDERSTYLE_Ridge,
|
FDE_CSSBORDERSTYLE_Inset,
|
FDE_CSSBORDERSTYLE_outset,
|
};
|
|
enum FDE_CSSCLEAR {
|
FDE_CSSCLEAR_None,
|
FDE_CSSCLEAR_Left,
|
FDE_CSSCLEAR_Right,
|
FDE_CSSCLEAR_Both,
|
};
|
|
enum FDE_CSSDISPLAY {
|
FDE_CSSDISPLAY_None,
|
FDE_CSSDISPLAY_ListItem,
|
FDE_CSSDISPLAY_RunIn,
|
FDE_CSSDISPLAY_Block,
|
FDE_CSSDISPLAY_Inline,
|
FDE_CSSDISPLAY_InlineBlock,
|
FDE_CSSDISPLAY_InlineTable,
|
FDE_CSSDISPLAY_Table,
|
FDE_CSSDISPLAY_TableRow,
|
FDE_CSSDISPLAY_TableCell,
|
FDE_CSSDISPLAY_TableCaption,
|
FDE_CSSDISPLAY_TableColumn,
|
FDE_CSSDISPLAY_TableRowGroup,
|
FDE_CSSDISPLAY_TableColumnGroup,
|
FDE_CSSDISPLAY_TableHeaderGroup,
|
FDE_CSSDISPLAY_TableFooterGroup,
|
FDE_CSSDISPLAY_Ruby,
|
FDE_CSSDISPLAY_RubyBase,
|
FDE_CSSDISPLAY_RubyText,
|
FDE_CSSDISPLSY_RubyBaseGroup,
|
FDE_CSSDISPLAY_RubyTextGroup,
|
};
|
|
enum FDE_CSSVISIBILITY {
|
FDE_CSSVISIBILITY_Visible,
|
FDE_CSSVISIBILITY_Hidden,
|
FDE_CSSVISIBILITY_Collapse,
|
};
|
|
enum FDE_CSSFONTSTYLE {
|
FDE_CSSFONTSTYLE_Normal,
|
FDE_CSSFONTSTYLE_Italic,
|
};
|
|
enum FDE_CSSFLOAT {
|
FDE_CSSFLOAT_None,
|
FDE_CSSFLOAT_Left,
|
FDE_CSSFLOAT_Right,
|
};
|
|
enum FDE_CSSWRITINGMODE {
|
FDE_CSSWRITINGMODE_HorizontalTb,
|
FDE_CSSWRITINGMODE_VerticalRl,
|
FDE_CSSWRITINGMODE_VerticalLr,
|
};
|
|
enum FDE_CSSWORDBREAK {
|
FDE_CSSWORDBREAK_Normal,
|
FDE_CSSWORDBREAK_KeepAll,
|
FDE_CSSWORDBREAK_BreakAll,
|
FDE_CSSWORDBREAK_KeepWords,
|
};
|
|
enum FDE_CSSPAGEBREAK {
|
FDE_CSSPAGEBREAK_Auto,
|
FDE_CSSPAGEBREAK_Always,
|
FDE_CSSPAGEBREAK_Avoid,
|
FDE_CSSPAGEBREAK_Left,
|
FDE_CSSPAGEBREAK_Right,
|
};
|
|
enum FDE_CSSOVERFLOW {
|
FDE_CSSOVERFLOW_Visible,
|
FDE_CSSOVERFLOW_Hidden,
|
FDE_CSSOVERFLOW_Scroll,
|
FDE_CSSOVERFLOW_Auto,
|
FDE_CSSOVERFLOW_NoDisplay,
|
FDE_CSSOVERFLOW_NoContent,
|
};
|
|
enum FDE_CSSLINEBREAK {
|
FDE_CSSLINEBREAK_Auto,
|
FDE_CSSLINEBREAK_Loose,
|
FDE_CSSLINEBREAK_Normal,
|
FDE_CSSLINEBREAK_Strict,
|
};
|
|
enum FDE_CSSTEXTEMPHASISFILL {
|
FDE_CSSTEXTEMPHASISFILL_Filled,
|
FDE_CSSTEXTEMPHASISFILL_Open,
|
};
|
|
enum FDE_CSSTEXTEMPHASISMARK {
|
FDE_CSSTEXTEMPHASISMARK_None,
|
FDE_CSSTEXTEMPHASISMARK_Auto,
|
FDE_CSSTEXTEMPHASISMARK_Dot,
|
FDE_CSSTEXTEMPHASISMARK_Circle,
|
FDE_CSSTEXTEMPHASISMARK_DoubleCircle,
|
FDE_CSSTEXTEMPHASISMARK_Triangle,
|
FDE_CSSTEXTEMPHASISMARK_Sesame,
|
FDE_CSSTEXTEMPHASISMARK_Custom,
|
};
|
|
enum FDE_CSSTEXTCOMBINE {
|
FDE_CSSTEXTCOMBINE_Horizontal,
|
FDE_CSSTEXTCOMBINE_None,
|
};
|
|
enum FDE_CSSCURSOR {
|
FDE_CSSCURSOR_Auto,
|
FDE_CSSCURSOR_Crosshair,
|
FDE_CSSCURSOR_Default,
|
FDE_CSSCURSOR_Pointer,
|
FDE_CSSCURSOR_Move,
|
FDE_CSSCURSOR_EResize,
|
FDE_CSSCURSOR_NeResize,
|
FDE_CSSCURSOR_NwResize,
|
FDE_CSSCURSOR_NResize,
|
FDE_CSSCURSOR_SeResize,
|
FDE_CSSCURSOR_SwResize,
|
FDE_CSSCURSOR_SResize,
|
FDE_CSSCURSOR_WResize,
|
FDE_CSSCURSOR_Text,
|
FDE_CSSCURSOR_Wait,
|
FDE_CSSCURSOR_Help,
|
FDE_CSSCURSOR_Progress,
|
};
|
|
enum FDE_CSSPOSITION {
|
FDE_CSSPOSITION_Static,
|
FDE_CSSPOSITION_Relative,
|
FDE_CSSPOSITION_Absolute,
|
FDE_CSSPOSITION_Fixed,
|
};
|
|
enum FDE_CSSCAPTIONSIDE {
|
FDE_CSSCAPTIONSIDE_Top,
|
FDE_CSSCAPTIONSIDE_Bottom,
|
FDE_CSSCAPTIONSIDE_Left,
|
FDE_CSSCAPTIONSIDE_Right,
|
FDE_CSSCAPTIONSIDE_Before,
|
FDE_CSSCAPTIONSIDE_After,
|
};
|
|
enum FDE_CSSRUBYALIGN {
|
FDE_CSSRUBYALIGN_Auto,
|
FDE_CSSRUBYALIGN_Start,
|
FDE_CSSRUBYALIGN_Left,
|
FDE_CSSRUBYALIGN_Center,
|
FDE_CSSRUBYALIGN_End,
|
FDE_CSSRUBYALIGN_Right,
|
FDE_CSSRUBYALIGN_DistributeLetter,
|
FDE_CSSRUBYALIGN_DistributeSpace,
|
FDE_CSSRUBYALIGN_LineEdge,
|
};
|
|
enum FDE_CSSRUBYOVERHANG {
|
FDE_CSSRUBYOVERHANG_Auto,
|
FDE_CSSRUBYOVERHANG_Start,
|
FDE_CSSRUBYOVERHANG_End,
|
FDE_CSSRUBYOVERHANG_None,
|
};
|
|
enum FDE_CSSRUBYPOSITION {
|
FDE_CSSRUBYPOSITION_Before,
|
FDE_CSSRUBYPOSITION_After,
|
FDE_CSSRUBYPOSITION_Right,
|
FDE_CSSRUBYPOSITION_Inline,
|
};
|
|
enum FDE_CSSRUBYSPAN {
|
FDE_CSSRUBYSPAN_None,
|
FDE_CSSRUBYSPAN_Attr,
|
};
|
|
enum FDE_CSSTEXTALIGN {
|
FDE_CSSTEXTALIGN_Left,
|
FDE_CSSTEXTALIGN_Right,
|
FDE_CSSTEXTALIGN_Center,
|
FDE_CSSTEXTALIGN_Justify,
|
FDE_CSSTEXTALIGN_JustifyAll,
|
};
|
|
enum FDE_CSSVERTICALALIGN {
|
FDE_CSSVERTICALALIGN_Baseline,
|
FDE_CSSVERTICALALIGN_Sub,
|
FDE_CSSVERTICALALIGN_Super,
|
FDE_CSSVERTICALALIGN_Top,
|
FDE_CSSVERTICALALIGN_TextTop,
|
FDE_CSSVERTICALALIGN_Middle,
|
FDE_CSSVERTICALALIGN_Bottom,
|
FDE_CSSVERTICALALIGN_TextBottom,
|
FDE_CSSVERTICALALIGN_Number,
|
};
|
|
enum FDE_CSSLISTSTYLETYPE {
|
FDE_CSSLISTSTYLETYPE_Disc,
|
FDE_CSSLISTSTYLETYPE_Circle,
|
FDE_CSSLISTSTYLETYPE_Square,
|
FDE_CSSLISTSTYLETYPE_Decimal,
|
FDE_CSSLISTSTYLETYPE_DecimalLeadingZero,
|
FDE_CSSLISTSTYLETYPE_LowerRoman,
|
FDE_CSSLISTSTYLETYPE_UpperRoman,
|
FDE_CSSLISTSTYLETYPE_LowerGreek,
|
FDE_CSSLISTSTYLETYPE_LowerLatin,
|
FDE_CSSLISTSTYLETYPE_UpperLatin,
|
FDE_CSSLISTSTYLETYPE_Armenian,
|
FDE_CSSLISTSTYLETYPE_Georgian,
|
FDE_CSSLISTSTYLETYPE_LowerAlpha,
|
FDE_CSSLISTSTYLETYPE_UpperAlpha,
|
FDE_CSSLISTSTYLETYPE_None,
|
FDE_CSSLISTSTYLETYPE_CjkIdeographic,
|
FDE_CSSLISTSTYLETYPE_Hebrew,
|
FDE_CSSLISTSTYLETYPE_Hiragana,
|
FDE_CSSLISTSTYLETYPE_HiraganaIroha,
|
FDE_CSSLISTSTYLETYPE_Katakana,
|
FDE_CSSLISTSTYLETYPE_KatakanaIroha,
|
};
|
|
enum FDE_CSSLISTSTYLEPOSITION {
|
FDE_CSSLISTSTYLEPOSITION_Outside,
|
FDE_CSSLISTSTYLEPOSITION_Inside,
|
};
|
|
enum FDE_CSSWHITESPACE {
|
FDE_CSSWHITESPACE_Normal,
|
FDE_CSSWHITESPACE_Pre,
|
FDE_CSSWHITESPACE_Nowrap,
|
FDE_CSSWHITESPACE_PreWrap,
|
FDE_CSSWHITESPACE_PreLine,
|
};
|
|
enum FDE_CSSFONTVARIANT {
|
FDE_CSSFONTVARIANT_Normal,
|
FDE_CSSFONTVARIANT_SmallCaps,
|
};
|
|
enum FDE_CSSTEXTTRANSFORM {
|
FDE_CSSTEXTTRANSFORM_None,
|
FDE_CSSTEXTTRANSFORM_Capitalize,
|
FDE_CSSTEXTTRANSFORM_UpperCase,
|
FDE_CSSTEXTTRANSFORM_LowerCase,
|
};
|
|
enum FDE_CSSTEXTDECORATION {
|
FDE_CSSTEXTDECORATION_None = 0,
|
FDE_CSSTEXTDECORATION_Underline = 1,
|
FDE_CSSTEXTDECORATION_Overline = 2,
|
FDE_CSSTEXTDECORATION_LineThrough = 4,
|
FDE_CSSTEXTDECORATION_Blink = 8,
|
FDE_CSSTEXTDECORATION_Double = 16,
|
};
|
|
enum FDE_CSSSTYLESHEETGROUP {
|
FDE_CSSSTYLESHEETGROUP_UserAgent,
|
FDE_CSSSTYLESHEETGROUP_User,
|
FDE_CSSSTYLESHEETGROUP_Author,
|
FDE_CSSSTYLESHEETGROUP_MAX,
|
};
|
|
enum FDE_CSSSTYLESHEETPRIORITY {
|
FDE_CSSSTYLESHEETPRIORITY_High,
|
FDE_CSSSTYLESHEETPRIORITY_Mid,
|
FDE_CSSSTYLESHEETPRIORITY_Low,
|
FDE_CSSSTYLESHEETPRIORITY_MAX,
|
};
|
|
class IFDE_CSSValue {
|
public:
|
virtual ~IFDE_CSSValue() {}
|
virtual FDE_CSSVALUETYPE GetType() const = 0;
|
};
|
|
class IFDE_CSSPrimitiveValue : public IFDE_CSSValue {
|
public:
|
// IFDE_CSSValue
|
FDE_CSSVALUETYPE GetType() const override;
|
|
virtual FDE_CSSPRIMITIVETYPE GetPrimitiveType() const = 0;
|
virtual FX_ARGB GetRGBColor() const = 0;
|
virtual FX_FLOAT GetFloat() const = 0;
|
virtual const FX_WCHAR* GetString(int32_t& iLength) const = 0;
|
virtual FDE_CSSPROPERTYVALUE GetEnum() const = 0;
|
virtual const FX_WCHAR* GetFuncName() const = 0;
|
virtual int32_t CountArgs() const = 0;
|
virtual IFDE_CSSValue* GetArgs(int32_t index) const = 0;
|
};
|
|
class IFDE_CSSValueList : public IFDE_CSSValue {
|
public:
|
// IFDE_CSSValue
|
FDE_CSSVALUETYPE GetType() const override;
|
|
virtual int32_t CountValues() const = 0;
|
virtual IFDE_CSSValue* GetValue(int32_t index) const = 0;
|
};
|
|
class IFDE_CSSRule {
|
public:
|
virtual ~IFDE_CSSRule() {}
|
virtual FDE_CSSRULETYPE GetType() const = 0;
|
};
|
|
typedef CFX_MassArrayTemplate<IFDE_CSSRule*> CFDE_CSSRuleArray;
|
|
class IFDE_CSSStyleRule : public IFDE_CSSRule {
|
public:
|
// IFDE_CSSValue
|
FDE_CSSRULETYPE GetType() const override;
|
|
virtual int32_t CountSelectorLists() const = 0;
|
virtual CFDE_CSSSelector* GetSelectorList(int32_t index) const = 0;
|
virtual CFDE_CSSDeclaration* GetDeclaration() = 0;
|
};
|
|
class IFDE_CSSMediaRule : public IFDE_CSSRule {
|
public:
|
// IFDE_CSSValue
|
FDE_CSSRULETYPE GetType() const override;
|
|
virtual uint32_t GetMediaList() const = 0;
|
virtual int32_t CountRules() const = 0;
|
virtual IFDE_CSSRule* GetRule(int32_t index) = 0;
|
};
|
|
class IFDE_CSSFontFaceRule : public IFDE_CSSRule {
|
public:
|
// IFDE_CSSValue
|
FDE_CSSRULETYPE GetType() const override;
|
|
virtual CFDE_CSSDeclaration* GetDeclaration() = 0;
|
};
|
|
class IFDE_CSSStyleSheet : public IFX_Retainable {
|
public:
|
static IFDE_CSSStyleSheet* LoadHTMLStandardStyleSheet();
|
static IFDE_CSSStyleSheet* LoadFromStream(
|
const CFX_WideString& szUrl,
|
IFX_Stream* pStream,
|
uint16_t wCodePage,
|
uint32_t dwMediaList = FDE_CSSMEDIATYPE_ALL);
|
static IFDE_CSSStyleSheet* LoadFromBuffer(
|
const CFX_WideString& szUrl,
|
const FX_WCHAR* pBuffer,
|
int32_t iBufSize,
|
uint16_t wCodePage,
|
uint32_t dwMediaList = FDE_CSSMEDIATYPE_ALL);
|
virtual FX_BOOL GetUrl(CFX_WideString& szUrl) = 0;
|
virtual uint32_t GetMediaList() const = 0;
|
virtual uint16_t GetCodePage() const = 0;
|
|
virtual int32_t CountRules() const = 0;
|
virtual IFDE_CSSRule* GetRule(int32_t index) = 0;
|
};
|
|
typedef CFX_ArrayTemplate<IFDE_CSSStyleSheet*> CFDE_CSSStyleSheetArray;
|
|
struct FDE_CSSLENGTH {
|
FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit) {
|
m_iData = eUnit;
|
return *this;
|
}
|
FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
|
m_iData = ((intptr_t)(fValue * 1024.0f) << FDE_CSSUNITBITS) | eUnit;
|
return *this;
|
}
|
FDE_CSSLENGTHUNIT GetUnit() const {
|
return (FDE_CSSLENGTHUNIT)(m_iData & FDE_CSSUNITMASK);
|
}
|
FX_FLOAT GetValue() const { return (m_iData >> FDE_CSSUNITBITS) / 1024.0f; }
|
FX_BOOL NonZero() const { return (m_iData >> FDE_CSSUNITBITS) != 0; }
|
|
private:
|
intptr_t m_iData;
|
};
|
|
struct FDE_CSSPOINT {
|
FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit) {
|
x.Set(eUnit);
|
y.Set(eUnit);
|
return *this;
|
}
|
FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
|
x.Set(eUnit, fValue);
|
y.Set(eUnit, fValue);
|
return *this;
|
}
|
FDE_CSSLENGTH x, y;
|
};
|
|
struct FDE_CSSSIZE {
|
FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit) {
|
cx.Set(eUnit);
|
cy.Set(eUnit);
|
return *this;
|
}
|
FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
|
cx.Set(eUnit, fValue);
|
cy.Set(eUnit, fValue);
|
return *this;
|
}
|
FDE_CSSLENGTH cx, cy;
|
};
|
|
struct FDE_CSSRECT {
|
FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit) {
|
left.Set(eUnit);
|
top.Set(eUnit);
|
right.Set(eUnit);
|
bottom.Set(eUnit);
|
return *this;
|
}
|
FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
|
left.Set(eUnit, fValue);
|
top.Set(eUnit, fValue);
|
right.Set(eUnit, fValue);
|
bottom.Set(eUnit, fValue);
|
return *this;
|
}
|
|
FDE_CSSLENGTH left, top, right, bottom;
|
};
|
|
class IFDE_CSSFontStyle {
|
public:
|
virtual ~IFDE_CSSFontStyle() {}
|
|
virtual int32_t CountFontFamilies() const = 0;
|
virtual const FX_WCHAR* GetFontFamily(int32_t index) const = 0;
|
virtual uint16_t GetFontWeight() const = 0;
|
virtual FDE_CSSFONTVARIANT GetFontVariant() const = 0;
|
virtual FDE_CSSFONTSTYLE GetFontStyle() const = 0;
|
virtual FX_FLOAT GetFontSize() const = 0;
|
virtual FX_ARGB GetColor() const = 0;
|
virtual void SetFontWeight(uint16_t wFontWeight) = 0;
|
virtual void SetFontVariant(FDE_CSSFONTVARIANT eFontVariant) = 0;
|
virtual void SetFontStyle(FDE_CSSFONTSTYLE eFontStyle) = 0;
|
virtual void SetFontSize(FX_FLOAT fFontSize) = 0;
|
virtual void SetColor(FX_ARGB dwFontColor) = 0;
|
};
|
|
class IFDE_CSSBoundaryStyle {
|
public:
|
virtual ~IFDE_CSSBoundaryStyle() {}
|
|
virtual const FDE_CSSRECT* GetBorderWidth() const = 0;
|
virtual const FDE_CSSRECT* GetMarginWidth() const = 0;
|
virtual const FDE_CSSRECT* GetPaddingWidth() const = 0;
|
virtual void SetMarginWidth(const FDE_CSSRECT& rect) = 0;
|
virtual void SetPaddingWidth(const FDE_CSSRECT& rect) = 0;
|
};
|
|
class IFDE_CSSPositionStyle {
|
public:
|
virtual ~IFDE_CSSPositionStyle() {}
|
virtual FDE_CSSDISPLAY GetDisplay() const = 0;
|
};
|
|
class IFDE_CSSParagraphStyle {
|
public:
|
virtual ~IFDE_CSSParagraphStyle() {}
|
|
virtual FX_FLOAT GetLineHeight() const = 0;
|
virtual const FDE_CSSLENGTH& GetTextIndent() const = 0;
|
virtual FDE_CSSTEXTALIGN GetTextAlign() const = 0;
|
virtual FDE_CSSVERTICALALIGN GetVerticalAlign() const = 0;
|
virtual FX_FLOAT GetNumberVerticalAlign() const = 0;
|
virtual uint32_t GetTextDecoration() const = 0;
|
virtual const FDE_CSSLENGTH& GetLetterSpacing() const = 0;
|
virtual void SetLineHeight(FX_FLOAT fLineHeight) = 0;
|
virtual void SetTextIndent(const FDE_CSSLENGTH& textIndent) = 0;
|
virtual void SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) = 0;
|
virtual void SetNumberVerticalAlign(FX_FLOAT fAlign) = 0;
|
virtual void SetTextDecoration(uint32_t dwTextDecoration) = 0;
|
virtual void SetLetterSpacing(const FDE_CSSLENGTH& letterSpacing) = 0;
|
};
|
|
class IFDE_CSSComputedStyle : public IFX_Retainable {
|
public:
|
virtual void Reset() = 0;
|
virtual IFDE_CSSFontStyle* GetFontStyles() = 0;
|
virtual IFDE_CSSBoundaryStyle* GetBoundaryStyles() = 0;
|
virtual IFDE_CSSPositionStyle* GetPositionStyles() = 0;
|
virtual IFDE_CSSParagraphStyle* GetParagraphStyles() = 0;
|
virtual FX_BOOL GetCustomStyle(const CFX_WideStringC& wsName,
|
CFX_WideString& wsValue) const = 0;
|
};
|
|
#endif // XFA_FDE_CSS_FDE_CSS_H_
|