OLD | NEW |
| (Empty) |
1 // Copyright 2014 PDFium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
6 | |
7 #ifndef XFA_SRC_FDE_CSS_FDE_CSS_H_ | |
8 #define XFA_SRC_FDE_CSS_FDE_CSS_H_ | |
9 | |
10 #include "core/include/fxge/fx_dib.h" | |
11 #include "xfa/src/fgas/font/fgas_font.h" | |
12 #include "xfa/src/fgas/crt/fgas_stream.h" | |
13 #include "xfa/src/fgas/crt/fgas_utils.h" | |
14 | |
15 class IFDE_CSSValue; | |
16 class IFDE_CSSValueList; | |
17 class IFDE_CSSDeclaration; | |
18 class IFDE_CSSSelector; | |
19 class IFDE_CSSRule; | |
20 class IFDE_CSSStyleSheet; | |
21 class IFDE_CSSStyleSheetCache; | |
22 class IFDE_CSSSyntaxParser; | |
23 class IFDE_CSSRubyStyle; | |
24 class IFDE_CSSMultiColumnStyle; | |
25 class IFDE_CSSGeneratedContentStyle; | |
26 class IFDE_CSSFontStyle; | |
27 class IFDE_CSSBoundaryStyle; | |
28 class IFDE_CSSPositionStyle; | |
29 class IFDE_CSSParagraphStyle; | |
30 class IFDE_CSSBackgroundStyle; | |
31 class IFDE_CSSListStyle; | |
32 class IFDE_CSSTableStyle; | |
33 class IFDE_CSSVisualStyle; | |
34 class IFDE_CSSComputedStyle; | |
35 class IFDE_CSSTagProvider; | |
36 class IFDE_CSSAccelerator; | |
37 class IFDE_CSSStyleSelector; | |
38 | |
39 enum FDE_CSSVALUETYPE { | |
40 FDE_CSSVALUETYPE_Primitive = 1, | |
41 FDE_CSSVALUETYPE_List = 2, | |
42 FDE_CSSVALUETYPE_Shorthand, | |
43 }; | |
44 enum FDE_CSSPRIMITIVETYPE { | |
45 FDE_CSSPRIMITIVETYPE_Unknown = 0, | |
46 FDE_CSSPRIMITIVETYPE_Number = 1, | |
47 FDE_CSSPRIMITIVETYPE_Percent = 2, | |
48 FDE_CSSPRIMITIVETYPE_EMS = 3, | |
49 FDE_CSSPRIMITIVETYPE_EXS = 4, | |
50 FDE_CSSPRIMITIVETYPE_PX = 5, | |
51 FDE_CSSPRIMITIVETYPE_CM = 6, | |
52 FDE_CSSPRIMITIVETYPE_MM = 7, | |
53 FDE_CSSPRIMITIVETYPE_IN = 8, | |
54 FDE_CSSPRIMITIVETYPE_PT = 9, | |
55 FDE_CSSPRIMITIVETYPE_PC = 10, | |
56 FDE_CSSPRIMITIVETYPE_String = 19, | |
57 FDE_CSSPRIMITIVETYPE_URI = 20, | |
58 FDE_CSSPRIMITIVETYPE_RGB = 25, | |
59 FDE_CSSPRIMITIVETYPE_Enum, | |
60 FDE_CSSPRIMITIVETYPE_Function, | |
61 }; | |
62 enum FDE_CSSPROPERTYVALUE { | |
63 FDE_CSSPROPERTYVALUE_Bolder, | |
64 FDE_CSSPROPERTYVALUE_LowerLatin, | |
65 FDE_CSSPROPERTYVALUE_Lowercase, | |
66 FDE_CSSPROPERTYVALUE_LowerGreek, | |
67 FDE_CSSPROPERTYVALUE_Sesame, | |
68 FDE_CSSPROPERTYVALUE_None, | |
69 FDE_CSSPROPERTYVALUE_NwResize, | |
70 FDE_CSSPROPERTYVALUE_WResize, | |
71 FDE_CSSPROPERTYVALUE_Dot, | |
72 FDE_CSSPROPERTYVALUE_End, | |
73 FDE_CSSPROPERTYVALUE_Ltr, | |
74 FDE_CSSPROPERTYVALUE_Pre, | |
75 FDE_CSSPROPERTYVALUE_Rtl, | |
76 FDE_CSSPROPERTYVALUE_Sub, | |
77 FDE_CSSPROPERTYVALUE_Top, | |
78 FDE_CSSPROPERTYVALUE_Visible, | |
79 FDE_CSSPROPERTYVALUE_Filled, | |
80 FDE_CSSPROPERTYVALUE_SwResize, | |
81 FDE_CSSPROPERTYVALUE_NoRepeat, | |
82 FDE_CSSPROPERTYVALUE_Default, | |
83 FDE_CSSPROPERTYVALUE_Transparent, | |
84 FDE_CSSPROPERTYVALUE_Ridge, | |
85 FDE_CSSPROPERTYVALUE_Right, | |
86 FDE_CSSPROPERTYVALUE_HorizontalTb, | |
87 FDE_CSSPROPERTYVALUE_DistributeLetter, | |
88 FDE_CSSPROPERTYVALUE_DoubleCircle, | |
89 FDE_CSSPROPERTYVALUE_Ruby, | |
90 FDE_CSSPROPERTYVALUE_Collapse, | |
91 FDE_CSSPROPERTYVALUE_Normal, | |
92 FDE_CSSPROPERTYVALUE_Avoid, | |
93 FDE_CSSPROPERTYVALUE_UpperRoman, | |
94 FDE_CSSPROPERTYVALUE_Auto, | |
95 FDE_CSSPROPERTYVALUE_Text, | |
96 FDE_CSSPROPERTYVALUE_XSmall, | |
97 FDE_CSSPROPERTYVALUE_Thin, | |
98 FDE_CSSPROPERTYVALUE_Repeat, | |
99 FDE_CSSPROPERTYVALUE_Small, | |
100 FDE_CSSPROPERTYVALUE_NeResize, | |
101 FDE_CSSPROPERTYVALUE_NoContent, | |
102 FDE_CSSPROPERTYVALUE_Outside, | |
103 FDE_CSSPROPERTYVALUE_EResize, | |
104 FDE_CSSPROPERTYVALUE_TableRow, | |
105 FDE_CSSPROPERTYVALUE_Bottom, | |
106 FDE_CSSPROPERTYVALUE_Underline, | |
107 FDE_CSSPROPERTYVALUE_CjkIdeographic, | |
108 FDE_CSSPROPERTYVALUE_SeResize, | |
109 FDE_CSSPROPERTYVALUE_Fixed, | |
110 FDE_CSSPROPERTYVALUE_Double, | |
111 FDE_CSSPROPERTYVALUE_Solid, | |
112 FDE_CSSPROPERTYVALUE_RubyBaseGroup, | |
113 FDE_CSSPROPERTYVALUE_OpenQuote, | |
114 FDE_CSSPROPERTYVALUE_Lighter, | |
115 FDE_CSSPROPERTYVALUE_LowerRoman, | |
116 FDE_CSSPROPERTYVALUE_Strict, | |
117 FDE_CSSPROPERTYVALUE_TableCaption, | |
118 FDE_CSSPROPERTYVALUE_Oblique, | |
119 FDE_CSSPROPERTYVALUE_Decimal, | |
120 FDE_CSSPROPERTYVALUE_Loose, | |
121 FDE_CSSPROPERTYVALUE_Hebrew, | |
122 FDE_CSSPROPERTYVALUE_Hidden, | |
123 FDE_CSSPROPERTYVALUE_Dashed, | |
124 FDE_CSSPROPERTYVALUE_Embed, | |
125 FDE_CSSPROPERTYVALUE_TableRowGroup, | |
126 FDE_CSSPROPERTYVALUE_TableColumn, | |
127 FDE_CSSPROPERTYVALUE_Static, | |
128 FDE_CSSPROPERTYVALUE_Outset, | |
129 FDE_CSSPROPERTYVALUE_DecimalLeadingZero, | |
130 FDE_CSSPROPERTYVALUE_KeepWords, | |
131 FDE_CSSPROPERTYVALUE_KatakanaIroha, | |
132 FDE_CSSPROPERTYVALUE_Super, | |
133 FDE_CSSPROPERTYVALUE_Center, | |
134 FDE_CSSPROPERTYVALUE_TableHeaderGroup, | |
135 FDE_CSSPROPERTYVALUE_Inside, | |
136 FDE_CSSPROPERTYVALUE_XxLarge, | |
137 FDE_CSSPROPERTYVALUE_Triangle, | |
138 FDE_CSSPROPERTYVALUE_RubyTextGroup, | |
139 FDE_CSSPROPERTYVALUE_Circle, | |
140 FDE_CSSPROPERTYVALUE_Hiragana, | |
141 FDE_CSSPROPERTYVALUE_RepeatX, | |
142 FDE_CSSPROPERTYVALUE_RepeatY, | |
143 FDE_CSSPROPERTYVALUE_Move, | |
144 FDE_CSSPROPERTYVALUE_HiraganaIroha, | |
145 FDE_CSSPROPERTYVALUE_RubyBase, | |
146 FDE_CSSPROPERTYVALUE_Scroll, | |
147 FDE_CSSPROPERTYVALUE_Smaller, | |
148 FDE_CSSPROPERTYVALUE_TableFooterGroup, | |
149 FDE_CSSPROPERTYVALUE_Baseline, | |
150 FDE_CSSPROPERTYVALUE_Separate, | |
151 FDE_CSSPROPERTYVALUE_Armenian, | |
152 FDE_CSSPROPERTYVALUE_Open, | |
153 FDE_CSSPROPERTYVALUE_Relative, | |
154 FDE_CSSPROPERTYVALUE_Thick, | |
155 FDE_CSSPROPERTYVALUE_Justify, | |
156 FDE_CSSPROPERTYVALUE_Middle, | |
157 FDE_CSSPROPERTYVALUE_Always, | |
158 FDE_CSSPROPERTYVALUE_DistributeSpace, | |
159 FDE_CSSPROPERTYVALUE_LineEdge, | |
160 FDE_CSSPROPERTYVALUE_PreWrap, | |
161 FDE_CSSPROPERTYVALUE_Medium, | |
162 FDE_CSSPROPERTYVALUE_NResize, | |
163 FDE_CSSPROPERTYVALUE_ListItem, | |
164 FDE_CSSPROPERTYVALUE_Show, | |
165 FDE_CSSPROPERTYVALUE_Currentcolor, | |
166 FDE_CSSPROPERTYVALUE_NoCloseQuote, | |
167 FDE_CSSPROPERTYVALUE_VerticalLr, | |
168 FDE_CSSPROPERTYVALUE_VerticalRl, | |
169 FDE_CSSPROPERTYVALUE_Pointer, | |
170 FDE_CSSPROPERTYVALUE_XxSmall, | |
171 FDE_CSSPROPERTYVALUE_Bold, | |
172 FDE_CSSPROPERTYVALUE_Both, | |
173 FDE_CSSPROPERTYVALUE_SmallCaps, | |
174 FDE_CSSPROPERTYVALUE_Katakana, | |
175 FDE_CSSPROPERTYVALUE_After, | |
176 FDE_CSSPROPERTYVALUE_Horizontal, | |
177 FDE_CSSPROPERTYVALUE_Dotted, | |
178 FDE_CSSPROPERTYVALUE_Disc, | |
179 FDE_CSSPROPERTYVALUE_Georgian, | |
180 FDE_CSSPROPERTYVALUE_Inline, | |
181 FDE_CSSPROPERTYVALUE_Overline, | |
182 FDE_CSSPROPERTYVALUE_Wait, | |
183 FDE_CSSPROPERTYVALUE_BreakAll, | |
184 FDE_CSSPROPERTYVALUE_UpperAlpha, | |
185 FDE_CSSPROPERTYVALUE_Capitalize, | |
186 FDE_CSSPROPERTYVALUE_Nowrap, | |
187 FDE_CSSPROPERTYVALUE_TextBottom, | |
188 FDE_CSSPROPERTYVALUE_NoOpenQuote, | |
189 FDE_CSSPROPERTYVALUE_Groove, | |
190 FDE_CSSPROPERTYVALUE_Progress, | |
191 FDE_CSSPROPERTYVALUE_Larger, | |
192 FDE_CSSPROPERTYVALUE_CloseQuote, | |
193 FDE_CSSPROPERTYVALUE_TableCell, | |
194 FDE_CSSPROPERTYVALUE_PreLine, | |
195 FDE_CSSPROPERTYVALUE_Absolute, | |
196 FDE_CSSPROPERTYVALUE_InlineTable, | |
197 FDE_CSSPROPERTYVALUE_BidiOverride, | |
198 FDE_CSSPROPERTYVALUE_InlineBlock, | |
199 FDE_CSSPROPERTYVALUE_Inset, | |
200 FDE_CSSPROPERTYVALUE_Crosshair, | |
201 FDE_CSSPROPERTYVALUE_UpperLatin, | |
202 FDE_CSSPROPERTYVALUE_Help, | |
203 FDE_CSSPROPERTYVALUE_Hide, | |
204 FDE_CSSPROPERTYVALUE_Uppercase, | |
205 FDE_CSSPROPERTYVALUE_SResize, | |
206 FDE_CSSPROPERTYVALUE_Table, | |
207 FDE_CSSPROPERTYVALUE_Blink, | |
208 FDE_CSSPROPERTYVALUE_Block, | |
209 FDE_CSSPROPERTYVALUE_Start, | |
210 FDE_CSSPROPERTYVALUE_TableColumnGroup, | |
211 FDE_CSSPROPERTYVALUE_Italic, | |
212 FDE_CSSPROPERTYVALUE_LineThrough, | |
213 FDE_CSSPROPERTYVALUE_KeepAll, | |
214 FDE_CSSPROPERTYVALUE_LowerAlpha, | |
215 FDE_CSSPROPERTYVALUE_RunIn, | |
216 FDE_CSSPROPERTYVALUE_Square, | |
217 FDE_CSSPROPERTYVALUE_XLarge, | |
218 FDE_CSSPROPERTYVALUE_Large, | |
219 FDE_CSSPROPERTYVALUE_Before, | |
220 FDE_CSSPROPERTYVALUE_Left, | |
221 FDE_CSSPROPERTYVALUE_TextTop, | |
222 FDE_CSSPROPERTYVALUE_RubyText, | |
223 FDE_CSSPROPERTYVALUE_NoDisplay, | |
224 FDE_CSSPROPERTYVALUE_MAX | |
225 }; | |
226 class IFDE_CSSValue { | |
227 public: | |
228 virtual ~IFDE_CSSValue() {} | |
229 virtual FDE_CSSVALUETYPE GetType() const = 0; | |
230 }; | |
231 class IFDE_CSSPrimitiveValue : public IFDE_CSSValue { | |
232 public: | |
233 virtual FDE_CSSVALUETYPE GetType() const { | |
234 return FDE_CSSVALUETYPE_Primitive; | |
235 } | |
236 virtual FDE_CSSPRIMITIVETYPE GetPrimitiveType() const = 0; | |
237 virtual FX_ARGB GetRGBColor() const = 0; | |
238 virtual FX_FLOAT GetFloat() const = 0; | |
239 virtual const FX_WCHAR* GetString(int32_t& iLength) const = 0; | |
240 virtual FDE_CSSPROPERTYVALUE GetEnum() const = 0; | |
241 virtual const FX_WCHAR* GetFuncName() const = 0; | |
242 virtual int32_t CountArgs() const = 0; | |
243 virtual IFDE_CSSValue* GetArgs(int32_t index) const = 0; | |
244 }; | |
245 class IFDE_CSSValueList : public IFDE_CSSValue { | |
246 public: | |
247 virtual FDE_CSSVALUETYPE GetType() const { return FDE_CSSVALUETYPE_List; } | |
248 virtual int32_t CountValues() const = 0; | |
249 virtual IFDE_CSSValue* GetValue(int32_t index) const = 0; | |
250 }; | |
251 enum FDE_CSSPROPERTY { | |
252 FDE_CSSPROPERTY_WritingMode, | |
253 FDE_CSSPROPERTY_ColumnRuleWidth, | |
254 FDE_CSSPROPERTY_BorderLeft, | |
255 FDE_CSSPROPERTY_ColumnRule, | |
256 FDE_CSSPROPERTY_Height, | |
257 FDE_CSSPROPERTY_CounterReset, | |
258 FDE_CSSPROPERTY_Content, | |
259 FDE_CSSPROPERTY_RubyPosition, | |
260 FDE_CSSPROPERTY_BackgroundColor, | |
261 FDE_CSSPROPERTY_Width, | |
262 FDE_CSSPROPERTY_Src, | |
263 FDE_CSSPROPERTY_Top, | |
264 FDE_CSSPROPERTY_Margin, | |
265 FDE_CSSPROPERTY_BorderColor, | |
266 FDE_CSSPROPERTY_Widows, | |
267 FDE_CSSPROPERTY_BorderBottomColor, | |
268 FDE_CSSPROPERTY_TextIndent, | |
269 FDE_CSSPROPERTY_Right, | |
270 FDE_CSSPROPERTY_TextEmphasisStyle, | |
271 FDE_CSSPROPERTY_PaddingLeft, | |
272 FDE_CSSPROPERTY_ColumnWidth, | |
273 FDE_CSSPROPERTY_MarginLeft, | |
274 FDE_CSSPROPERTY_Border, | |
275 FDE_CSSPROPERTY_BorderTop, | |
276 FDE_CSSPROPERTY_RubyOverhang, | |
277 FDE_CSSPROPERTY_PageBreakBefore, | |
278 FDE_CSSPROPERTY_MaxHeight, | |
279 FDE_CSSPROPERTY_MinWidth, | |
280 FDE_CSSPROPERTY_BorderLeftColor, | |
281 FDE_CSSPROPERTY_Bottom, | |
282 FDE_CSSPROPERTY_Quotes, | |
283 FDE_CSSPROPERTY_MaxWidth, | |
284 FDE_CSSPROPERTY_PaddingRight, | |
285 FDE_CSSPROPERTY_ListStyleImage, | |
286 FDE_CSSPROPERTY_WhiteSpace, | |
287 FDE_CSSPROPERTY_BorderBottom, | |
288 FDE_CSSPROPERTY_ListStyleType, | |
289 FDE_CSSPROPERTY_WordBreak, | |
290 FDE_CSSPROPERTY_OverflowX, | |
291 FDE_CSSPROPERTY_OverflowY, | |
292 FDE_CSSPROPERTY_BorderTopColor, | |
293 FDE_CSSPROPERTY_FontFamily, | |
294 FDE_CSSPROPERTY_Cursor, | |
295 FDE_CSSPROPERTY_RubyAlign, | |
296 FDE_CSSPROPERTY_ColumnRuleColor, | |
297 FDE_CSSPROPERTY_FontWeight, | |
298 FDE_CSSPROPERTY_BorderRightStyle, | |
299 FDE_CSSPROPERTY_MinHeight, | |
300 FDE_CSSPROPERTY_Color, | |
301 FDE_CSSPROPERTY_LetterSpacing, | |
302 FDE_CSSPROPERTY_EmptyCells, | |
303 FDE_CSSPROPERTY_TextAlign, | |
304 FDE_CSSPROPERTY_RubySpan, | |
305 FDE_CSSPROPERTY_Position, | |
306 FDE_CSSPROPERTY_BorderStyle, | |
307 FDE_CSSPROPERTY_BorderBottomStyle, | |
308 FDE_CSSPROPERTY_BorderCollapse, | |
309 FDE_CSSPROPERTY_ColumnCount, | |
310 FDE_CSSPROPERTY_BorderRightWidth, | |
311 FDE_CSSPROPERTY_UnicodeBidi, | |
312 FDE_CSSPROPERTY_VerticalAlign, | |
313 FDE_CSSPROPERTY_PaddingTop, | |
314 FDE_CSSPROPERTY_Columns, | |
315 FDE_CSSPROPERTY_Overflow, | |
316 FDE_CSSPROPERTY_TableLayout, | |
317 FDE_CSSPROPERTY_FontVariant, | |
318 FDE_CSSPROPERTY_ListStyle, | |
319 FDE_CSSPROPERTY_BackgroundPosition, | |
320 FDE_CSSPROPERTY_BorderWidth, | |
321 FDE_CSSPROPERTY_TextEmphasisColor, | |
322 FDE_CSSPROPERTY_BorderLeftStyle, | |
323 FDE_CSSPROPERTY_PageBreakInside, | |
324 FDE_CSSPROPERTY_TextEmphasis, | |
325 FDE_CSSPROPERTY_BorderBottomWidth, | |
326 FDE_CSSPROPERTY_ColumnGap, | |
327 FDE_CSSPROPERTY_Orphans, | |
328 FDE_CSSPROPERTY_BorderRight, | |
329 FDE_CSSPROPERTY_FontSize, | |
330 FDE_CSSPROPERTY_PageBreakAfter, | |
331 FDE_CSSPROPERTY_CaptionSide, | |
332 FDE_CSSPROPERTY_BackgroundRepeat, | |
333 FDE_CSSPROPERTY_BorderTopStyle, | |
334 FDE_CSSPROPERTY_BorderSpacing, | |
335 FDE_CSSPROPERTY_TextTransform, | |
336 FDE_CSSPROPERTY_FontStyle, | |
337 FDE_CSSPROPERTY_Font, | |
338 FDE_CSSPROPERTY_LineHeight, | |
339 FDE_CSSPROPERTY_MarginRight, | |
340 FDE_CSSPROPERTY_Float, | |
341 FDE_CSSPROPERTY_BorderLeftWidth, | |
342 FDE_CSSPROPERTY_Display, | |
343 FDE_CSSPROPERTY_Clear, | |
344 FDE_CSSPROPERTY_ColumnRuleStyle, | |
345 FDE_CSSPROPERTY_TextCombine, | |
346 FDE_CSSPROPERTY_ListStylePosition, | |
347 FDE_CSSPROPERTY_Visibility, | |
348 FDE_CSSPROPERTY_PaddingBottom, | |
349 FDE_CSSPROPERTY_BackgroundAttachment, | |
350 FDE_CSSPROPERTY_BackgroundImage, | |
351 FDE_CSSPROPERTY_LineBreak, | |
352 FDE_CSSPROPERTY_Background, | |
353 FDE_CSSPROPERTY_BorderTopWidth, | |
354 FDE_CSSPROPERTY_WordSpacing, | |
355 FDE_CSSPROPERTY_BorderRightColor, | |
356 FDE_CSSPROPERTY_CounterIncrement, | |
357 FDE_CSSPROPERTY_Left, | |
358 FDE_CSSPROPERTY_TextDecoration, | |
359 FDE_CSSPROPERTY_Padding, | |
360 FDE_CSSPROPERTY_MarginBottom, | |
361 FDE_CSSPROPERTY_MarginTop, | |
362 FDE_CSSPROPERTY_Direction, | |
363 FDE_CSSPROPERTY_MAX | |
364 }; | |
365 class IFDE_CSSDeclaration { | |
366 public: | |
367 virtual ~IFDE_CSSDeclaration() {} | |
368 virtual IFDE_CSSValue* GetProperty(FDE_CSSPROPERTY eProperty, | |
369 FX_BOOL& bImportant) const = 0; | |
370 virtual FX_POSITION GetStartPosition() const = 0; | |
371 virtual void GetNextProperty(FX_POSITION& pos, | |
372 FDE_CSSPROPERTY& eProperty, | |
373 IFDE_CSSValue*& pValue, | |
374 FX_BOOL& bImportant) const = 0; | |
375 virtual FX_POSITION GetStartCustom() const = 0; | |
376 virtual void GetNextCustom(FX_POSITION& pos, | |
377 CFX_WideString& wsName, | |
378 CFX_WideString& wsValue) const = 0; | |
379 }; | |
380 typedef CFX_ArrayTemplate<IFDE_CSSDeclaration*> CFDE_CSSDeclarationArray; | |
381 enum FDE_CSSPERSUDO { | |
382 FDE_CSSPERSUDO_After, | |
383 FDE_CSSPERSUDO_Before, | |
384 FDE_CSSPERSUDO_NONE | |
385 }; | |
386 enum FDE_CSSSELECTORTYPE { | |
387 FDE_CSSSELECTORTYPE_Element, | |
388 FDE_CSSSELECTORTYPE_Descendant, | |
389 FDE_CSSSELECTORTYPE_Class, | |
390 FDE_CSSSELECTORTYPE_Persudo, | |
391 FDE_CSSSELECTORTYPE_ID, | |
392 }; | |
393 class IFDE_CSSSelector { | |
394 public: | |
395 virtual ~IFDE_CSSSelector() {} | |
396 virtual FDE_CSSSELECTORTYPE GetType() const = 0; | |
397 virtual FX_DWORD GetNameHash() const = 0; | |
398 virtual IFDE_CSSSelector* GetNextSelector() const = 0; | |
399 }; | |
400 #define FDE_CSSMEDIATYPE_Braille 0x01 | |
401 #define FDE_CSSMEDIATYPE_Emboss 0x02 | |
402 #define FDE_CSSMEDIATYPE_Handheld 0x04 | |
403 #define FDE_CSSMEDIATYPE_Print 0x08 | |
404 #define FDE_CSSMEDIATYPE_Projection 0x10 | |
405 #define FDE_CSSMEDIATYPE_Screen 0x20 | |
406 #define FDE_CSSMEDIATYPE_TTY 0x40 | |
407 #define FDE_CSSMEDIATYPE_TV 0x80 | |
408 #define FDE_CSSMEDIATYPE_ALL 0xFF | |
409 enum FDE_CSSRULETYPE { | |
410 FDE_CSSRULETYPE_Unknown = 0, | |
411 FDE_CSSRULETYPE_Style = 1, | |
412 FDE_CSSRULETYPE_Media = 4, | |
413 FDE_CSSRULETYPE_FontFace = 5, | |
414 }; | |
415 class IFDE_CSSRule { | |
416 public: | |
417 virtual ~IFDE_CSSRule() {} | |
418 virtual FDE_CSSRULETYPE GetType() const = 0; | |
419 }; | |
420 typedef CFX_MassArrayTemplate<IFDE_CSSRule*> CFDE_CSSRuleArray; | |
421 class IFDE_CSSStyleRule : public IFDE_CSSRule { | |
422 public: | |
423 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_Style; } | |
424 virtual int32_t CountSelectorLists() const = 0; | |
425 virtual IFDE_CSSSelector* GetSelectorList(int32_t index) const = 0; | |
426 virtual IFDE_CSSDeclaration* GetDeclaration() const = 0; | |
427 }; | |
428 class IFDE_CSSMediaRule : public IFDE_CSSRule { | |
429 public: | |
430 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_Media; } | |
431 virtual FX_DWORD GetMediaList() const = 0; | |
432 virtual int32_t CountRules() const = 0; | |
433 virtual IFDE_CSSRule* GetRule(int32_t index) = 0; | |
434 }; | |
435 class IFDE_CSSFontFaceRule : public IFDE_CSSRule { | |
436 public: | |
437 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_FontFace; } | |
438 virtual IFDE_CSSDeclaration* GetDeclaration() const = 0; | |
439 }; | |
440 class IFDE_CSSStyleSheet : public IFX_Unknown { | |
441 public: | |
442 static IFDE_CSSStyleSheet* LoadHTMLStandardStyleSheet(); | |
443 static IFDE_CSSStyleSheet* LoadFromStream( | |
444 const CFX_WideString& szUrl, | |
445 IFX_Stream* pStream, | |
446 FX_WORD wCodePage, | |
447 FX_DWORD dwMediaList = FDE_CSSMEDIATYPE_ALL); | |
448 static IFDE_CSSStyleSheet* LoadFromBuffer( | |
449 const CFX_WideString& szUrl, | |
450 const FX_WCHAR* pBuffer, | |
451 int32_t iBufSize, | |
452 FX_WORD wCodePage, | |
453 FX_DWORD dwMediaList = FDE_CSSMEDIATYPE_ALL); | |
454 virtual FX_BOOL GetUrl(CFX_WideString& szUrl) = 0; | |
455 virtual FX_DWORD GetMediaList() const = 0; | |
456 virtual FX_WORD GetCodePage() const = 0; | |
457 | |
458 virtual int32_t CountRules() const = 0; | |
459 virtual IFDE_CSSRule* GetRule(int32_t index) = 0; | |
460 }; | |
461 typedef CFX_ArrayTemplate<IFDE_CSSStyleSheet*> CFDE_CSSStyleSheetArray; | |
462 #define FDE_CSSUSERSTYLESHEET (FX_BSTRC("#USERSHEET")) | |
463 #define FDE_CSSUAGENTSTYLESHEET (FX_BSTRC("#AGENTSHEET")) | |
464 class IFDE_CSSStyleSheetCache { | |
465 public: | |
466 static IFDE_CSSStyleSheetCache* Create(); | |
467 virtual ~IFDE_CSSStyleSheetCache() {} | |
468 virtual void Release() = 0; | |
469 virtual void SetMaxItems(int32_t iMaxCount = 5) = 0; | |
470 virtual void AddStyleSheet(const CFX_ByteStringC& szKey, | |
471 IFDE_CSSStyleSheet* pStyleSheet) = 0; | |
472 virtual IFDE_CSSStyleSheet* GetStyleSheet( | |
473 const CFX_ByteStringC& szKey) const = 0; | |
474 virtual void RemoveStyleSheet(const CFX_ByteStringC& szKey) = 0; | |
475 }; | |
476 enum FDE_CSSSYNTAXSTATUS { | |
477 FDE_CSSSYNTAXSTATUS_Error, | |
478 FDE_CSSSYNTAXSTATUS_EOS, | |
479 FDE_CSSSYNTAXSTATUS_None, | |
480 FDE_CSSSYNTAXSTATUS_Charset, | |
481 FDE_CSSSYNTAXSTATUS_ImportRule, | |
482 FDE_CSSSYNTAXSTATUS_ImportClose, | |
483 FDE_CSSSYNTAXSTATUS_PageRule, | |
484 FDE_CSSSYNTAXSTATUS_StyleRule, | |
485 FDE_CSSSYNTAXSTATUS_FontFaceRule, | |
486 FDE_CSSSYNTAXSTATUS_MediaRule, | |
487 FDE_CSSSYNTAXSTATUS_MediaType, | |
488 FDE_CSSSYNTAXSTATUS_URI, | |
489 FDE_CSSSYNTAXSTATUS_Selector, | |
490 FDE_CSSSYNTAXSTATUS_DeclOpen, | |
491 FDE_CSSSYNTAXSTATUS_DeclClose, | |
492 FDE_CSSSYNTAXSTATUS_PropertyName, | |
493 FDE_CSSSYNTAXSTATUS_PropertyValue, | |
494 }; | |
495 class IFDE_CSSSyntaxParser { | |
496 public: | |
497 static IFDE_CSSSyntaxParser* Create(); | |
498 virtual ~IFDE_CSSSyntaxParser() {} | |
499 virtual void Release() = 0; | |
500 virtual FX_BOOL Init(IFX_Stream* pStream, | |
501 int32_t iCSSPlaneSize, | |
502 int32_t iTextDataSize = 32, | |
503 FX_BOOL bOnlyDeclaration = FALSE) = 0; | |
504 virtual FX_BOOL Init(const FX_WCHAR* pBuffer, | |
505 int32_t iBufferSize, | |
506 int32_t iTextDatSize = 32, | |
507 FX_BOOL bOnlyDeclaration = FALSE) = 0; | |
508 | |
509 virtual FDE_CSSSYNTAXSTATUS DoSyntaxParse() = 0; | |
510 virtual const FX_WCHAR* GetCurrentString(int32_t& iLength) const = 0; | |
511 }; | |
512 enum FDE_CSSLENGTHUNIT { | |
513 FDE_CSSLENGTHUNIT_Auto, | |
514 FDE_CSSLENGTHUNIT_None, | |
515 FDE_CSSLENGTHUNIT_Normal, | |
516 FDE_CSSLENGTHUNIT_Point, | |
517 FDE_CSSLENGTHUNIT_Percent, | |
518 }; | |
519 #define FDE_CSSUNITBITS (3) | |
520 #define FDE_CSSUNITMASK ((1 << FDE_CSSUNITBITS) - 1) | |
521 struct FDE_CSSLENGTH { | |
522 FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit) { | |
523 m_iData = eUnit; | |
524 return *this; | |
525 } | |
526 FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) { | |
527 m_iData = ((intptr_t)(fValue * 1024.0f) << FDE_CSSUNITBITS) | eUnit; | |
528 return *this; | |
529 } | |
530 FDE_CSSLENGTHUNIT GetUnit() const { | |
531 return (FDE_CSSLENGTHUNIT)(m_iData & FDE_CSSUNITMASK); | |
532 } | |
533 FX_FLOAT GetValue() const { return (m_iData >> FDE_CSSUNITBITS) / 1024.0f; } | |
534 FX_BOOL NonZero() const { return (m_iData >> FDE_CSSUNITBITS) != 0; } | |
535 | |
536 private: | |
537 intptr_t m_iData; | |
538 }; | |
539 struct FDE_CSSPOINT { | |
540 FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit) { | |
541 x.Set(eUnit); | |
542 y.Set(eUnit); | |
543 return *this; | |
544 } | |
545 FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) { | |
546 x.Set(eUnit, fValue); | |
547 y.Set(eUnit, fValue); | |
548 return *this; | |
549 } | |
550 FDE_CSSLENGTH x, y; | |
551 }; | |
552 struct FDE_CSSSIZE { | |
553 FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit) { | |
554 cx.Set(eUnit); | |
555 cy.Set(eUnit); | |
556 return *this; | |
557 } | |
558 FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) { | |
559 cx.Set(eUnit, fValue); | |
560 cy.Set(eUnit, fValue); | |
561 return *this; | |
562 } | |
563 FDE_CSSLENGTH cx, cy; | |
564 }; | |
565 struct FDE_CSSRECT { | |
566 FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit) { | |
567 left.Set(eUnit); | |
568 top.Set(eUnit); | |
569 right.Set(eUnit); | |
570 bottom.Set(eUnit); | |
571 return *this; | |
572 } | |
573 FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) { | |
574 left.Set(eUnit, fValue); | |
575 top.Set(eUnit, fValue); | |
576 right.Set(eUnit, fValue); | |
577 bottom.Set(eUnit, fValue); | |
578 return *this; | |
579 } | |
580 | |
581 FDE_CSSLENGTH left, top, right, bottom; | |
582 }; | |
583 enum FDE_CSSBKGATTACHMENT { | |
584 FDE_CSSBKGATTACHMENT_Scroll, | |
585 FDE_CSSBKGATTACHMENT_Fixed, | |
586 }; | |
587 enum FDE_CSSBKGREPEAT { | |
588 FDE_CSSBKGREPEAT_Repeat, | |
589 FDE_CSSBKGREPEAT_RepeatX, | |
590 FDE_CSSBKGREPEAT_RepeatY, | |
591 FDE_CSSBKGREPEAT_NoRepeat, | |
592 }; | |
593 enum FDE_CSSBORDERSTYLE { | |
594 FDE_CSSBORDERSTYLE_None, | |
595 FDE_CSSBORDERSTYLE_Hidden, | |
596 FDE_CSSBORDERSTYLE_Dotted, | |
597 FDE_CSSBORDERSTYLE_Dashed, | |
598 FDE_CSSBORDERSTYLE_Solid, | |
599 FDE_CSSBORDERSTYLE_Double, | |
600 FDE_CSSBORDERSTYLE_Groove, | |
601 FDE_CSSBORDERSTYLE_Ridge, | |
602 FDE_CSSBORDERSTYLE_Inset, | |
603 FDE_CSSBORDERSTYLE_outset, | |
604 }; | |
605 enum FDE_CSSCLEAR { | |
606 FDE_CSSCLEAR_None, | |
607 FDE_CSSCLEAR_Left, | |
608 FDE_CSSCLEAR_Right, | |
609 FDE_CSSCLEAR_Both, | |
610 }; | |
611 enum FDE_CSSDISPLAY { | |
612 FDE_CSSDISPLAY_None, | |
613 FDE_CSSDISPLAY_ListItem, | |
614 FDE_CSSDISPLAY_RunIn, | |
615 FDE_CSSDISPLAY_Block, | |
616 FDE_CSSDISPLAY_Inline, | |
617 FDE_CSSDISPLAY_InlineBlock, | |
618 FDE_CSSDISPLAY_InlineTable, | |
619 FDE_CSSDISPLAY_Table, | |
620 FDE_CSSDISPLAY_TableRow, | |
621 FDE_CSSDISPLAY_TableCell, | |
622 FDE_CSSDISPLAY_TableCaption, | |
623 FDE_CSSDISPLAY_TableColumn, | |
624 FDE_CSSDISPLAY_TableRowGroup, | |
625 FDE_CSSDISPLAY_TableColumnGroup, | |
626 FDE_CSSDISPLAY_TableHeaderGroup, | |
627 FDE_CSSDISPLAY_TableFooterGroup, | |
628 FDE_CSSDISPLAY_Ruby, | |
629 FDE_CSSDISPLAY_RubyBase, | |
630 FDE_CSSDISPLAY_RubyText, | |
631 FDE_CSSDISPLSY_RubyBaseGroup, | |
632 FDE_CSSDISPLAY_RubyTextGroup, | |
633 }; | |
634 enum FDE_CSSVISIBILITY { | |
635 FDE_CSSVISIBILITY_Visible, | |
636 FDE_CSSVISIBILITY_Hidden, | |
637 FDE_CSSVISIBILITY_Collapse, | |
638 }; | |
639 enum FDE_CSSFONTSTYLE { | |
640 FDE_CSSFONTSTYLE_Normal, | |
641 FDE_CSSFONTSTYLE_Italic, | |
642 }; | |
643 enum FDE_CSSFLOAT { | |
644 FDE_CSSFLOAT_None, | |
645 FDE_CSSFLOAT_Left, | |
646 FDE_CSSFLOAT_Right, | |
647 }; | |
648 enum FDE_CSSWRITINGMODE { | |
649 FDE_CSSWRITINGMODE_HorizontalTb, | |
650 FDE_CSSWRITINGMODE_VerticalRl, | |
651 FDE_CSSWRITINGMODE_VerticalLr, | |
652 }; | |
653 enum FDE_CSSWORDBREAK { | |
654 FDE_CSSWORDBREAK_Normal, | |
655 FDE_CSSWORDBREAK_KeepAll, | |
656 FDE_CSSWORDBREAK_BreakAll, | |
657 FDE_CSSWORDBREAK_KeepWords, | |
658 }; | |
659 enum FDE_CSSPAGEBREAK { | |
660 FDE_CSSPAGEBREAK_Auto, | |
661 FDE_CSSPAGEBREAK_Always, | |
662 FDE_CSSPAGEBREAK_Avoid, | |
663 FDE_CSSPAGEBREAK_Left, | |
664 FDE_CSSPAGEBREAK_Right, | |
665 }; | |
666 enum FDE_CSSOVERFLOW { | |
667 FDE_CSSOVERFLOW_Visible, | |
668 FDE_CSSOVERFLOW_Hidden, | |
669 FDE_CSSOVERFLOW_Scroll, | |
670 FDE_CSSOVERFLOW_Auto, | |
671 FDE_CSSOVERFLOW_NoDisplay, | |
672 FDE_CSSOVERFLOW_NoContent, | |
673 }; | |
674 enum FDE_CSSLINEBREAK { | |
675 FDE_CSSLINEBREAK_Auto, | |
676 FDE_CSSLINEBREAK_Loose, | |
677 FDE_CSSLINEBREAK_Normal, | |
678 FDE_CSSLINEBREAK_Strict, | |
679 }; | |
680 enum FDE_CSSTEXTEMPHASISFILL { | |
681 FDE_CSSTEXTEMPHASISFILL_Filled, | |
682 FDE_CSSTEXTEMPHASISFILL_Open, | |
683 }; | |
684 enum FDE_CSSTEXTEMPHASISMARK { | |
685 FDE_CSSTEXTEMPHASISMARK_None, | |
686 FDE_CSSTEXTEMPHASISMARK_Auto, | |
687 FDE_CSSTEXTEMPHASISMARK_Dot, | |
688 FDE_CSSTEXTEMPHASISMARK_Circle, | |
689 FDE_CSSTEXTEMPHASISMARK_DoubleCircle, | |
690 FDE_CSSTEXTEMPHASISMARK_Triangle, | |
691 FDE_CSSTEXTEMPHASISMARK_Sesame, | |
692 FDE_CSSTEXTEMPHASISMARK_Custom, | |
693 }; | |
694 enum FDE_CSSTEXTCOMBINE { | |
695 FDE_CSSTEXTCOMBINE_Horizontal, | |
696 FDE_CSSTEXTCOMBINE_None, | |
697 }; | |
698 enum FDE_CSSCURSOR { | |
699 FDE_CSSCURSOR_Auto, | |
700 FDE_CSSCURSOR_Crosshair, | |
701 FDE_CSSCURSOR_Default, | |
702 FDE_CSSCURSOR_Pointer, | |
703 FDE_CSSCURSOR_Move, | |
704 FDE_CSSCURSOR_EResize, | |
705 FDE_CSSCURSOR_NeResize, | |
706 FDE_CSSCURSOR_NwResize, | |
707 FDE_CSSCURSOR_NResize, | |
708 FDE_CSSCURSOR_SeResize, | |
709 FDE_CSSCURSOR_SwResize, | |
710 FDE_CSSCURSOR_SResize, | |
711 FDE_CSSCURSOR_WResize, | |
712 FDE_CSSCURSOR_Text, | |
713 FDE_CSSCURSOR_Wait, | |
714 FDE_CSSCURSOR_Help, | |
715 FDE_CSSCURSOR_Progress, | |
716 }; | |
717 enum FDE_CSSPOSITION { | |
718 FDE_CSSPOSITION_Static, | |
719 FDE_CSSPOSITION_Relative, | |
720 FDE_CSSPOSITION_Absolute, | |
721 FDE_CSSPOSITION_Fixed, | |
722 }; | |
723 enum FDE_CSSCAPTIONSIDE { | |
724 FDE_CSSCAPTIONSIDE_Top, | |
725 FDE_CSSCAPTIONSIDE_Bottom, | |
726 FDE_CSSCAPTIONSIDE_Left, | |
727 FDE_CSSCAPTIONSIDE_Right, | |
728 FDE_CSSCAPTIONSIDE_Before, | |
729 FDE_CSSCAPTIONSIDE_After, | |
730 }; | |
731 enum FDE_CSSRUBYALIGN { | |
732 FDE_CSSRUBYALIGN_Auto, | |
733 FDE_CSSRUBYALIGN_Start, | |
734 FDE_CSSRUBYALIGN_Left, | |
735 FDE_CSSRUBYALIGN_Center, | |
736 FDE_CSSRUBYALIGN_End, | |
737 FDE_CSSRUBYALIGN_Right, | |
738 FDE_CSSRUBYALIGN_DistributeLetter, | |
739 FDE_CSSRUBYALIGN_DistributeSpace, | |
740 FDE_CSSRUBYALIGN_LineEdge, | |
741 }; | |
742 enum FDE_CSSRUBYOVERHANG { | |
743 FDE_CSSRUBYOVERHANG_Auto, | |
744 FDE_CSSRUBYOVERHANG_Start, | |
745 FDE_CSSRUBYOVERHANG_End, | |
746 FDE_CSSRUBYOVERHANG_None, | |
747 }; | |
748 enum FDE_CSSRUBYPOSITION { | |
749 FDE_CSSRUBYPOSITION_Before, | |
750 FDE_CSSRUBYPOSITION_After, | |
751 FDE_CSSRUBYPOSITION_Right, | |
752 FDE_CSSRUBYPOSITION_Inline, | |
753 }; | |
754 enum FDE_CSSRUBYSPAN { | |
755 FDE_CSSRUBYSPAN_None, | |
756 FDE_CSSRUBYSPAN_Attr, | |
757 }; | |
758 enum FDE_CSSTEXTALIGN { | |
759 FDE_CSSTEXTALIGN_Left, | |
760 FDE_CSSTEXTALIGN_Right, | |
761 FDE_CSSTEXTALIGN_Center, | |
762 FDE_CSSTEXTALIGN_Justify, | |
763 FDE_CSSTEXTALIGN_JustifyAll, | |
764 }; | |
765 enum FDE_CSSVERTICALALIGN { | |
766 FDE_CSSVERTICALALIGN_Baseline, | |
767 FDE_CSSVERTICALALIGN_Sub, | |
768 FDE_CSSVERTICALALIGN_Super, | |
769 FDE_CSSVERTICALALIGN_Top, | |
770 FDE_CSSVERTICALALIGN_TextTop, | |
771 FDE_CSSVERTICALALIGN_Middle, | |
772 FDE_CSSVERTICALALIGN_Bottom, | |
773 FDE_CSSVERTICALALIGN_TextBottom, | |
774 FDE_CSSVERTICALALIGN_Number, | |
775 }; | |
776 enum FDE_CSSLISTSTYLETYPE { | |
777 FDE_CSSLISTSTYLETYPE_Disc, | |
778 FDE_CSSLISTSTYLETYPE_Circle, | |
779 FDE_CSSLISTSTYLETYPE_Square, | |
780 FDE_CSSLISTSTYLETYPE_Decimal, | |
781 FDE_CSSLISTSTYLETYPE_DecimalLeadingZero, | |
782 FDE_CSSLISTSTYLETYPE_LowerRoman, | |
783 FDE_CSSLISTSTYLETYPE_UpperRoman, | |
784 FDE_CSSLISTSTYLETYPE_LowerGreek, | |
785 FDE_CSSLISTSTYLETYPE_LowerLatin, | |
786 FDE_CSSLISTSTYLETYPE_UpperLatin, | |
787 FDE_CSSLISTSTYLETYPE_Armenian, | |
788 FDE_CSSLISTSTYLETYPE_Georgian, | |
789 FDE_CSSLISTSTYLETYPE_LowerAlpha, | |
790 FDE_CSSLISTSTYLETYPE_UpperAlpha, | |
791 FDE_CSSLISTSTYLETYPE_None, | |
792 FDE_CSSLISTSTYLETYPE_CjkIdeographic, | |
793 FDE_CSSLISTSTYLETYPE_Hebrew, | |
794 FDE_CSSLISTSTYLETYPE_Hiragana, | |
795 FDE_CSSLISTSTYLETYPE_HiraganaIroha, | |
796 FDE_CSSLISTSTYLETYPE_Katakana, | |
797 FDE_CSSLISTSTYLETYPE_KatakanaIroha, | |
798 }; | |
799 enum FDE_CSSLISTSTYLEPOSITION { | |
800 FDE_CSSLISTSTYLEPOSITION_Outside, | |
801 FDE_CSSLISTSTYLEPOSITION_Inside, | |
802 }; | |
803 enum FDE_CSSWHITESPACE { | |
804 FDE_CSSWHITESPACE_Normal, | |
805 FDE_CSSWHITESPACE_Pre, | |
806 FDE_CSSWHITESPACE_Nowrap, | |
807 FDE_CSSWHITESPACE_PreWrap, | |
808 FDE_CSSWHITESPACE_PreLine, | |
809 }; | |
810 enum FDE_CSSFONTVARIANT { | |
811 FDE_CSSFONTVARIANT_Normal, | |
812 FDE_CSSFONTVARIANT_SmallCaps, | |
813 }; | |
814 enum FDE_CSSTEXTTRANSFORM { | |
815 FDE_CSSTEXTTRANSFORM_None, | |
816 FDE_CSSTEXTTRANSFORM_Capitalize, | |
817 FDE_CSSTEXTTRANSFORM_UpperCase, | |
818 FDE_CSSTEXTTRANSFORM_LowerCase, | |
819 }; | |
820 enum FDE_CSSTEXTDECORATION { | |
821 FDE_CSSTEXTDECORATION_None = 0, | |
822 FDE_CSSTEXTDECORATION_Underline = 1, | |
823 FDE_CSSTEXTDECORATION_Overline = 2, | |
824 FDE_CSSTEXTDECORATION_LineThrough = 4, | |
825 FDE_CSSTEXTDECORATION_Blink = 8, | |
826 FDE_CSSTEXTDECORATION_Double = 16, | |
827 }; | |
828 class IFDE_CSSRubyStyle { | |
829 public: | |
830 virtual ~IFDE_CSSRubyStyle() {} | |
831 virtual FDE_CSSRUBYALIGN GetRubyAlign() const = 0; | |
832 virtual FDE_CSSRUBYOVERHANG GetRubyOverhang() const = 0; | |
833 virtual FDE_CSSRUBYPOSITION GetRubyPosition() const = 0; | |
834 virtual FDE_CSSRUBYSPAN GetRubySpanType() const = 0; | |
835 virtual IFDE_CSSValue* GetRubySpanAttr() const = 0; | |
836 }; | |
837 class IFDE_CSSMultiColumnStyle { | |
838 public: | |
839 virtual ~IFDE_CSSMultiColumnStyle() {} | |
840 virtual const FDE_CSSLENGTH& GetColumnCount() const = 0; | |
841 virtual const FDE_CSSLENGTH& GetColumnGap() const = 0; | |
842 virtual FX_ARGB GetColumnRuleColor() const = 0; | |
843 virtual FDE_CSSBORDERSTYLE GetColumnRuleStyle() const = 0; | |
844 virtual const FDE_CSSLENGTH& GetColumnRuleWidth() const = 0; | |
845 virtual const FDE_CSSLENGTH& GetColumnWidth() const = 0; | |
846 virtual void SetColumnCount(const FDE_CSSLENGTH& columnCount) = 0; | |
847 virtual void SetColumnGap(const FDE_CSSLENGTH& columnGap) = 0; | |
848 virtual void SetColumnRuleColor(FX_ARGB dwColumnRuleColor) = 0; | |
849 virtual void SetColumnRuleStyle(FDE_CSSBORDERSTYLE eColumnRuleStyle) = 0; | |
850 virtual void SetColumnRuleWidth(const FDE_CSSLENGTH& columnRuleWidth) = 0; | |
851 virtual void SetColumnWidth(const FDE_CSSLENGTH& columnWidth) = 0; | |
852 }; | |
853 class IFDE_CSSGeneratedContentStyle { | |
854 public: | |
855 virtual ~IFDE_CSSGeneratedContentStyle() {} | |
856 virtual int32_t CountCounters() = 0; | |
857 virtual const FX_WCHAR* GetCounterIdentifier(int32_t index) = 0; | |
858 virtual FX_BOOL GetCounterReset(int32_t index, int32_t& iValue) = 0; | |
859 virtual FX_BOOL GetCounterIncrement(int32_t index, int32_t& iValue) = 0; | |
860 virtual IFDE_CSSValueList* GetContent() const = 0; | |
861 virtual int32_t CountQuotes() const = 0; | |
862 virtual const FX_WCHAR* GetQuotes(int32_t index) const = 0; | |
863 }; | |
864 class IFDE_CSSFontStyle { | |
865 public: | |
866 virtual ~IFDE_CSSFontStyle() {} | |
867 virtual int32_t CountFontFamilies() const = 0; | |
868 virtual const FX_WCHAR* GetFontFamily(int32_t index) const = 0; | |
869 virtual FX_WORD GetFontWeight() const = 0; | |
870 virtual FDE_CSSFONTVARIANT GetFontVariant() const = 0; | |
871 virtual FDE_CSSFONTSTYLE GetFontStyle() const = 0; | |
872 virtual FX_FLOAT GetFontSize() const = 0; | |
873 virtual FX_ARGB GetColor() const = 0; | |
874 virtual void SetFontWeight(FX_WORD wFontWeight) = 0; | |
875 virtual void SetFontVariant(FDE_CSSFONTVARIANT eFontVariant) = 0; | |
876 virtual void SetFontStyle(FDE_CSSFONTSTYLE eFontStyle) = 0; | |
877 virtual void SetFontSize(FX_FLOAT fFontSize) = 0; | |
878 virtual void SetColor(FX_ARGB dwFontColor) = 0; | |
879 }; | |
880 class IFDE_CSSBoundaryStyle { | |
881 public: | |
882 virtual ~IFDE_CSSBoundaryStyle() {} | |
883 virtual FX_ARGB GetBorderLeftColor() const = 0; | |
884 virtual FX_ARGB GetBorderTopColor() const = 0; | |
885 virtual FX_ARGB GetBorderRightColor() const = 0; | |
886 virtual FX_ARGB GetBorderBottomColor() const = 0; | |
887 virtual FDE_CSSBORDERSTYLE GetBorderLeftStyle() const = 0; | |
888 virtual FDE_CSSBORDERSTYLE GetBorderTopStyle() const = 0; | |
889 virtual FDE_CSSBORDERSTYLE GetBorderRightStyle() const = 0; | |
890 virtual FDE_CSSBORDERSTYLE GetBorderBottomStyle() const = 0; | |
891 virtual const FDE_CSSRECT* GetBorderWidth() const = 0; | |
892 virtual const FDE_CSSRECT* GetMarginWidth() const = 0; | |
893 virtual const FDE_CSSRECT* GetPaddingWidth() const = 0; | |
894 virtual void SetBorderLeftColor(FX_ARGB dwBorderColor) = 0; | |
895 virtual void SetBorderTopColor(FX_ARGB dwBorderColor) = 0; | |
896 virtual void SetBorderRightColor(FX_ARGB dwBorderColor) = 0; | |
897 virtual void SetBorderBottomColor(FX_ARGB dwBorderColor) = 0; | |
898 | |
899 virtual void SetBorderLeftStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; | |
900 virtual void SetBorderTopStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; | |
901 virtual void SetBorderRightStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; | |
902 virtual void SetBorderBottomStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; | |
903 | |
904 virtual void SetBorderWidth(const FDE_CSSRECT& rect) = 0; | |
905 virtual void SetMarginWidth(const FDE_CSSRECT& rect) = 0; | |
906 virtual void SetPaddingWidth(const FDE_CSSRECT& rect) = 0; | |
907 }; | |
908 class IFDE_CSSPositionStyle { | |
909 public: | |
910 virtual ~IFDE_CSSPositionStyle() {} | |
911 virtual FDE_CSSDISPLAY GetDisplay() const = 0; | |
912 virtual const FDE_CSSSIZE& GetBoxSize() const = 0; | |
913 virtual const FDE_CSSSIZE& GetMinBoxSize() const = 0; | |
914 virtual const FDE_CSSSIZE& GetMaxBoxSize() const = 0; | |
915 virtual FDE_CSSFLOAT GetFloat() const = 0; | |
916 virtual FDE_CSSCLEAR GetClear() const = 0; | |
917 virtual FDE_CSSPOSITION GetPosition() const = 0; | |
918 virtual FDE_CSSLENGTH GetTop() const = 0; | |
919 virtual FDE_CSSLENGTH GetBottom() const = 0; | |
920 virtual FDE_CSSLENGTH GetLeft() const = 0; | |
921 virtual FDE_CSSLENGTH GetRight() const = 0; | |
922 virtual void SetDisplay(FDE_CSSDISPLAY eDisplay) = 0; | |
923 virtual void SetBoxSize(const FDE_CSSSIZE& boxSize) = 0; | |
924 virtual void SetMinBoxSize(const FDE_CSSSIZE& minBoxSize) = 0; | |
925 virtual void SetMaxBoxSize(const FDE_CSSSIZE& maxBoxSize) = 0; | |
926 virtual void SetFloat(FDE_CSSFLOAT eFloat) = 0; | |
927 virtual void SetClear(FDE_CSSCLEAR eClear) = 0; | |
928 }; | |
929 class IFDE_CSSParagraphStyle { | |
930 public: | |
931 virtual ~IFDE_CSSParagraphStyle() {} | |
932 virtual FX_FLOAT GetLineHeight() const = 0; | |
933 virtual FDE_CSSWHITESPACE GetWhiteSpace() const = 0; | |
934 virtual const FDE_CSSLENGTH& GetTextIndent() const = 0; | |
935 virtual FDE_CSSTEXTALIGN GetTextAlign() const = 0; | |
936 virtual FDE_CSSVERTICALALIGN GetVerticalAlign() const = 0; | |
937 virtual FX_FLOAT GetNumberVerticalAlign() const = 0; | |
938 virtual FDE_CSSTEXTTRANSFORM GetTextTransform() const = 0; | |
939 virtual FX_DWORD GetTextDecoration() const = 0; | |
940 virtual const FDE_CSSLENGTH& GetLetterSpacing() const = 0; | |
941 virtual const FDE_CSSLENGTH& GetWordSpacing() const = 0; | |
942 virtual FDE_CSSWRITINGMODE GetWritingMode() const = 0; | |
943 virtual FDE_CSSWORDBREAK GetWordBreak() const = 0; | |
944 virtual int32_t GetWidows() const = 0; | |
945 virtual FX_ARGB GetTextEmphasisColor() const = 0; | |
946 virtual FDE_CSSPAGEBREAK GetPageBreakBefore() const = 0; | |
947 virtual FDE_CSSPAGEBREAK GetPageBreakAfter() const = 0; | |
948 virtual FDE_CSSPAGEBREAK GetPageBreakInside() const = 0; | |
949 virtual int32_t GetOrphans() const = 0; | |
950 virtual FDE_CSSLINEBREAK GetLineBreak() const = 0; | |
951 virtual FDE_CSSTEXTEMPHASISMARK GetTextEmphasisMark() const = 0; | |
952 virtual FDE_CSSTEXTEMPHASISFILL GetTextEmphasisFill() const = 0; | |
953 virtual const FX_WCHAR* GetTextEmphasisCustom() const = 0; | |
954 virtual FDE_CSSTEXTCOMBINE GetTextCombineType() const = 0; | |
955 virtual FX_BOOL HasTextCombineNumber() const = 0; | |
956 virtual FX_FLOAT GetTextCombineNumber() const = 0; | |
957 virtual void SetLineHeight(FX_FLOAT fLineHeight) = 0; | |
958 virtual void SetWhiteSpace(FDE_CSSWHITESPACE eWhiteSpace) = 0; | |
959 virtual void SetTextIndent(const FDE_CSSLENGTH& textIndent) = 0; | |
960 virtual void SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) = 0; | |
961 virtual void SetVerticalAlign(FDE_CSSVERTICALALIGN eVerticalAlign) = 0; | |
962 virtual void SetNumberVerticalAlign(FX_FLOAT fAlign) = 0; | |
963 virtual void SetTextTransform(FDE_CSSTEXTTRANSFORM eTextTransform) = 0; | |
964 virtual void SetTextDecoration(FX_DWORD dwTextDecoration) = 0; | |
965 virtual void SetLetterSpacing(const FDE_CSSLENGTH& letterSpacing) = 0; | |
966 virtual void SetWordSpacing(const FDE_CSSLENGTH& wordSpacing) = 0; | |
967 virtual void SetWritingMode(FDE_CSSWRITINGMODE eWritingMode) = 0; | |
968 virtual void SetWordBreak(FDE_CSSWORDBREAK eWordBreak) = 0; | |
969 virtual void SetWidows(int32_t iWidows) = 0; | |
970 virtual void SetTextEmphasisColor(FX_ARGB dwTextEmphasisColor) = 0; | |
971 virtual void SetPageBreakBefore(FDE_CSSPAGEBREAK ePageBreakBefore) = 0; | |
972 virtual void SetPageBreakAfter(FDE_CSSPAGEBREAK ePageBreakAfter) = 0; | |
973 virtual void SetPageBreakInside(FDE_CSSPAGEBREAK ePageBreakInside) = 0; | |
974 virtual void SetOrphans(int32_t iOrphans) = 0; | |
975 virtual void SetLineBreak(FDE_CSSLINEBREAK eLineBreak) = 0; | |
976 }; | |
977 class IFDE_CSSBackgroundStyle { | |
978 public: | |
979 virtual ~IFDE_CSSBackgroundStyle() {} | |
980 virtual FX_ARGB GetBKGColor() const = 0; | |
981 virtual const FX_WCHAR* GetBKGImage() const = 0; | |
982 virtual FDE_CSSBKGREPEAT GetBKGRepeat() const = 0; | |
983 virtual FDE_CSSBKGATTACHMENT GetBKGAttachment() const = 0; | |
984 virtual const FDE_CSSPOINT& GetBKGPosition() const = 0; | |
985 virtual void SetBKGColor(FX_ARGB dwBKGColor) = 0; | |
986 virtual void SetBKGPosition(const FDE_CSSPOINT& bkgPosition) = 0; | |
987 }; | |
988 class IFDE_CSSListStyle { | |
989 public: | |
990 virtual ~IFDE_CSSListStyle() {} | |
991 virtual FDE_CSSLISTSTYLETYPE GetListStyleType() const = 0; | |
992 virtual FDE_CSSLISTSTYLEPOSITION GetListStylePosition() const = 0; | |
993 virtual const FX_WCHAR* GetListStyleImage() const = 0; | |
994 virtual void SetListStyleType(FDE_CSSLISTSTYLETYPE eListStyleType) = 0; | |
995 virtual void SetListStylePosition( | |
996 FDE_CSSLISTSTYLEPOSITION eListStylePosition) = 0; | |
997 }; | |
998 class IFDE_CSSTableStyle { | |
999 public: | |
1000 virtual ~IFDE_CSSTableStyle() {} | |
1001 virtual FDE_CSSCAPTIONSIDE GetCaptionSide() const = 0; | |
1002 }; | |
1003 class IFDE_CSSVisualStyle { | |
1004 public: | |
1005 virtual ~IFDE_CSSVisualStyle() {} | |
1006 virtual FDE_CSSVISIBILITY GetVisibility() const = 0; | |
1007 virtual FDE_CSSOVERFLOW GetOverflowX() const = 0; | |
1008 virtual FDE_CSSOVERFLOW GetOverflowY() const = 0; | |
1009 virtual void SetVisibility(FDE_CSSVISIBILITY eVisibility) = 0; | |
1010 }; | |
1011 class IFDE_CSSComputedStyle : public IFX_Unknown { | |
1012 public: | |
1013 virtual void Reset() = 0; | |
1014 virtual IFDE_CSSFontStyle* GetFontStyles() const = 0; | |
1015 virtual IFDE_CSSBoundaryStyle* GetBoundaryStyles() const = 0; | |
1016 virtual IFDE_CSSPositionStyle* GetPositionStyles() const = 0; | |
1017 virtual IFDE_CSSParagraphStyle* GetParagraphStyles() const = 0; | |
1018 virtual IFDE_CSSBackgroundStyle* GetBackgroundStyles() const = 0; | |
1019 virtual IFDE_CSSVisualStyle* GetVisualStyles() const = 0; | |
1020 virtual IFDE_CSSListStyle* GetListStyles() const = 0; | |
1021 virtual IFDE_CSSMultiColumnStyle* GetMultiColumnStyle() const = 0; | |
1022 virtual IFDE_CSSTableStyle* GetTableStyle() const = 0; | |
1023 virtual IFDE_CSSGeneratedContentStyle* GetGeneratedContentStyle() const = 0; | |
1024 virtual IFDE_CSSRubyStyle* GetRubyStyle() const = 0; | |
1025 virtual FX_BOOL GetCustomStyle(const CFX_WideStringC& wsName, | |
1026 CFX_WideString& wsValue) const = 0; | |
1027 }; | |
1028 enum FDE_CSSSTYLESHEETGROUP { | |
1029 FDE_CSSSTYLESHEETGROUP_UserAgent, | |
1030 FDE_CSSSTYLESHEETGROUP_User, | |
1031 FDE_CSSSTYLESHEETGROUP_Author, | |
1032 FDE_CSSSTYLESHEETGROUP_MAX, | |
1033 }; | |
1034 enum FDE_CSSSTYLESHEETPRIORITY { | |
1035 FDE_CSSSTYLESHEETPRIORITY_High, | |
1036 FDE_CSSSTYLESHEETPRIORITY_Mid, | |
1037 FDE_CSSSTYLESHEETPRIORITY_Low, | |
1038 FDE_CSSSTYLESHEETPRIORITY_MAX, | |
1039 }; | |
1040 class IFDE_CSSTagProvider { | |
1041 public: | |
1042 virtual ~IFDE_CSSTagProvider() {} | |
1043 virtual CFX_WideStringC GetTagName() = 0; | |
1044 virtual FX_POSITION GetFirstAttribute() = 0; | |
1045 virtual void GetNextAttribute(FX_POSITION& pos, | |
1046 CFX_WideStringC& wsAttr, | |
1047 CFX_WideStringC& wsValue) = 0; | |
1048 }; | |
1049 class IFDE_CSSAccelerator { | |
1050 public: | |
1051 virtual ~IFDE_CSSAccelerator() {} | |
1052 virtual void OnEnterTag(IFDE_CSSTagProvider* pTag) = 0; | |
1053 virtual void OnLeaveTag(IFDE_CSSTagProvider* pTag) = 0; | |
1054 }; | |
1055 class IFDE_CSSStyleSelector { | |
1056 public: | |
1057 static IFDE_CSSStyleSelector* Create(); | |
1058 virtual ~IFDE_CSSStyleSelector() {} | |
1059 virtual void Release() = 0; | |
1060 virtual void SetFontMgr(IFX_FontMgr* pFontMgr) = 0; | |
1061 virtual void SetDefFontSize(FX_FLOAT fFontSize) = 0; | |
1062 virtual FX_BOOL SetStyleSheet(FDE_CSSSTYLESHEETGROUP eType, | |
1063 IFDE_CSSStyleSheet* pSheet) = 0; | |
1064 virtual FX_BOOL SetStyleSheets(FDE_CSSSTYLESHEETGROUP eType, | |
1065 const CFDE_CSSStyleSheetArray* pArray) = 0; | |
1066 virtual void SetStylePriority(FDE_CSSSTYLESHEETGROUP eType, | |
1067 FDE_CSSSTYLESHEETPRIORITY ePriority) = 0; | |
1068 virtual void UpdateStyleIndex(FX_DWORD dwMediaList) = 0; | |
1069 virtual IFDE_CSSAccelerator* InitAccelerator() = 0; | |
1070 virtual IFDE_CSSComputedStyle* CreateComputedStyle( | |
1071 IFDE_CSSComputedStyle* pParentStyle) = 0; | |
1072 virtual int32_t MatchDeclarations( | |
1073 IFDE_CSSTagProvider* pTag, | |
1074 CFDE_CSSDeclarationArray& matchedDecls, | |
1075 FDE_CSSPERSUDO ePersudoType = FDE_CSSPERSUDO_NONE) = 0; | |
1076 virtual void ComputeStyle(IFDE_CSSTagProvider* pTag, | |
1077 const IFDE_CSSDeclaration** ppDeclArray, | |
1078 int32_t iDeclCount, | |
1079 IFDE_CSSComputedStyle* pDestStyle) = 0; | |
1080 }; | |
1081 | |
1082 #endif // XFA_SRC_FDE_CSS_FDE_CSS_H_ | |
OLD | NEW |