Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Side by Side Diff: xfa/fde/css/fde_css.h

Issue 1928763002: Cleanup IFDE_CSS interfaces. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | xfa/fde/css/fde_cssdeclaration.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef XFA_FDE_CSS_FDE_CSS_H_ 7 #ifndef XFA_FDE_CSS_FDE_CSS_H_
8 #define XFA_FDE_CSS_FDE_CSS_H_ 8 #define XFA_FDE_CSS_FDE_CSS_H_
9 9
10 #include "core/fxge/include/fx_dib.h" 10 #include "core/fxge/include/fx_dib.h"
11 #include "xfa/fgas/crt/fgas_stream.h" 11 #include "xfa/fgas/crt/fgas_stream.h"
12 #include "xfa/fgas/crt/fgas_utils.h" 12 #include "xfa/fgas/crt/fgas_utils.h"
13 #include "xfa/fgas/font/fgas_font.h" 13 #include "xfa/fgas/font/fgas_font.h"
14 14
15 class CFDE_CSSAccelerator; 15 class CFDE_CSSAccelerator;
16 class CFDE_CSSDeclaration;
17 class CFDE_CSSSelector;
16 class CXFA_CSSTagProvider; 18 class CXFA_CSSTagProvider;
17 class IFDE_CSSBoundaryStyle; 19 class IFDE_CSSBoundaryStyle;
18 class IFDE_CSSComputedStyle; 20 class IFDE_CSSComputedStyle;
19 class IFDE_CSSDeclaration;
20 class IFDE_CSSFontStyle; 21 class IFDE_CSSFontStyle;
21 class IFDE_CSSParagraphStyle; 22 class IFDE_CSSParagraphStyle;
22 class IFDE_CSSPositionStyle; 23 class IFDE_CSSPositionStyle;
23 class IFDE_CSSRule; 24 class IFDE_CSSRule;
24 class IFDE_CSSSelector;
25 class IFDE_CSSStyleSelector;
26 class IFDE_CSSStyleSheet; 25 class IFDE_CSSStyleSheet;
27 class IFDE_CSSSyntaxParser;
28 class IFDE_CSSValue; 26 class IFDE_CSSValue;
29 class IFDE_CSSValueList; 27 class IFDE_CSSValueList;
30 28
29 #define FDE_CSSMEDIATYPE_Braille 0x01
30 #define FDE_CSSMEDIATYPE_Emboss 0x02
31 #define FDE_CSSMEDIATYPE_Handheld 0x04
32 #define FDE_CSSMEDIATYPE_Print 0x08
33 #define FDE_CSSMEDIATYPE_Projection 0x10
34 #define FDE_CSSMEDIATYPE_Screen 0x20
35 #define FDE_CSSMEDIATYPE_TTY 0x40
36 #define FDE_CSSMEDIATYPE_TV 0x80
37 #define FDE_CSSMEDIATYPE_ALL 0xFF
38
39 #define FDE_CSSUNITBITS (3)
40 #define FDE_CSSUNITMASK ((1 << FDE_CSSUNITBITS) - 1)
41
31 enum FDE_CSSVALUETYPE { 42 enum FDE_CSSVALUETYPE {
32 FDE_CSSVALUETYPE_Primitive = 1, 43 FDE_CSSVALUETYPE_Primitive = 1,
33 FDE_CSSVALUETYPE_List = 2, 44 FDE_CSSVALUETYPE_List = 2,
34 FDE_CSSVALUETYPE_Shorthand, 45 FDE_CSSVALUETYPE_Shorthand,
35 }; 46 };
47
36 enum FDE_CSSPRIMITIVETYPE { 48 enum FDE_CSSPRIMITIVETYPE {
37 FDE_CSSPRIMITIVETYPE_Unknown = 0, 49 FDE_CSSPRIMITIVETYPE_Unknown = 0,
38 FDE_CSSPRIMITIVETYPE_Number = 1, 50 FDE_CSSPRIMITIVETYPE_Number = 1,
39 FDE_CSSPRIMITIVETYPE_Percent = 2, 51 FDE_CSSPRIMITIVETYPE_Percent = 2,
40 FDE_CSSPRIMITIVETYPE_EMS = 3, 52 FDE_CSSPRIMITIVETYPE_EMS = 3,
41 FDE_CSSPRIMITIVETYPE_EXS = 4, 53 FDE_CSSPRIMITIVETYPE_EXS = 4,
42 FDE_CSSPRIMITIVETYPE_PX = 5, 54 FDE_CSSPRIMITIVETYPE_PX = 5,
43 FDE_CSSPRIMITIVETYPE_CM = 6, 55 FDE_CSSPRIMITIVETYPE_CM = 6,
44 FDE_CSSPRIMITIVETYPE_MM = 7, 56 FDE_CSSPRIMITIVETYPE_MM = 7,
45 FDE_CSSPRIMITIVETYPE_IN = 8, 57 FDE_CSSPRIMITIVETYPE_IN = 8,
46 FDE_CSSPRIMITIVETYPE_PT = 9, 58 FDE_CSSPRIMITIVETYPE_PT = 9,
47 FDE_CSSPRIMITIVETYPE_PC = 10, 59 FDE_CSSPRIMITIVETYPE_PC = 10,
48 FDE_CSSPRIMITIVETYPE_String = 19, 60 FDE_CSSPRIMITIVETYPE_String = 19,
49 FDE_CSSPRIMITIVETYPE_URI = 20, 61 FDE_CSSPRIMITIVETYPE_URI = 20,
50 FDE_CSSPRIMITIVETYPE_RGB = 25, 62 FDE_CSSPRIMITIVETYPE_RGB = 25,
51 FDE_CSSPRIMITIVETYPE_Enum, 63 FDE_CSSPRIMITIVETYPE_Enum,
52 FDE_CSSPRIMITIVETYPE_Function, 64 FDE_CSSPRIMITIVETYPE_Function,
53 }; 65 };
66
54 enum FDE_CSSPROPERTYVALUE { 67 enum FDE_CSSPROPERTYVALUE {
55 FDE_CSSPROPERTYVALUE_Bolder, 68 FDE_CSSPROPERTYVALUE_Bolder,
56 FDE_CSSPROPERTYVALUE_LowerLatin, 69 FDE_CSSPROPERTYVALUE_LowerLatin,
57 FDE_CSSPROPERTYVALUE_Lowercase, 70 FDE_CSSPROPERTYVALUE_Lowercase,
58 FDE_CSSPROPERTYVALUE_LowerGreek, 71 FDE_CSSPROPERTYVALUE_LowerGreek,
59 FDE_CSSPROPERTYVALUE_Sesame, 72 FDE_CSSPROPERTYVALUE_Sesame,
60 FDE_CSSPROPERTYVALUE_None, 73 FDE_CSSPROPERTYVALUE_None,
61 FDE_CSSPROPERTYVALUE_NwResize, 74 FDE_CSSPROPERTYVALUE_NwResize,
62 FDE_CSSPROPERTYVALUE_WResize, 75 FDE_CSSPROPERTYVALUE_WResize,
63 FDE_CSSPROPERTYVALUE_Dot, 76 FDE_CSSPROPERTYVALUE_Dot,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 FDE_CSSPROPERTYVALUE_Square, 221 FDE_CSSPROPERTYVALUE_Square,
209 FDE_CSSPROPERTYVALUE_XLarge, 222 FDE_CSSPROPERTYVALUE_XLarge,
210 FDE_CSSPROPERTYVALUE_Large, 223 FDE_CSSPROPERTYVALUE_Large,
211 FDE_CSSPROPERTYVALUE_Before, 224 FDE_CSSPROPERTYVALUE_Before,
212 FDE_CSSPROPERTYVALUE_Left, 225 FDE_CSSPROPERTYVALUE_Left,
213 FDE_CSSPROPERTYVALUE_TextTop, 226 FDE_CSSPROPERTYVALUE_TextTop,
214 FDE_CSSPROPERTYVALUE_RubyText, 227 FDE_CSSPROPERTYVALUE_RubyText,
215 FDE_CSSPROPERTYVALUE_NoDisplay, 228 FDE_CSSPROPERTYVALUE_NoDisplay,
216 FDE_CSSPROPERTYVALUE_MAX 229 FDE_CSSPROPERTYVALUE_MAX
217 }; 230 };
218 class IFDE_CSSValue { 231
219 public:
220 virtual ~IFDE_CSSValue() {}
221 virtual FDE_CSSVALUETYPE GetType() const = 0;
222 };
223 class IFDE_CSSPrimitiveValue : public IFDE_CSSValue {
224 public:
225 virtual FDE_CSSVALUETYPE GetType() const {
226 return FDE_CSSVALUETYPE_Primitive;
227 }
228 virtual FDE_CSSPRIMITIVETYPE GetPrimitiveType() const = 0;
229 virtual FX_ARGB GetRGBColor() const = 0;
230 virtual FX_FLOAT GetFloat() const = 0;
231 virtual const FX_WCHAR* GetString(int32_t& iLength) const = 0;
232 virtual FDE_CSSPROPERTYVALUE GetEnum() const = 0;
233 virtual const FX_WCHAR* GetFuncName() const = 0;
234 virtual int32_t CountArgs() const = 0;
235 virtual IFDE_CSSValue* GetArgs(int32_t index) const = 0;
236 };
237 class IFDE_CSSValueList : public IFDE_CSSValue {
238 public:
239 virtual FDE_CSSVALUETYPE GetType() const { return FDE_CSSVALUETYPE_List; }
240 virtual int32_t CountValues() const = 0;
241 virtual IFDE_CSSValue* GetValue(int32_t index) const = 0;
242 };
243 enum FDE_CSSPROPERTY { 232 enum FDE_CSSPROPERTY {
244 FDE_CSSPROPERTY_WritingMode, 233 FDE_CSSPROPERTY_WritingMode,
245 FDE_CSSPROPERTY_ColumnRuleWidth, 234 FDE_CSSPROPERTY_ColumnRuleWidth,
246 FDE_CSSPROPERTY_BorderLeft, 235 FDE_CSSPROPERTY_BorderLeft,
247 FDE_CSSPROPERTY_ColumnRule, 236 FDE_CSSPROPERTY_ColumnRule,
248 FDE_CSSPROPERTY_Height, 237 FDE_CSSPROPERTY_Height,
249 FDE_CSSPROPERTY_CounterReset, 238 FDE_CSSPROPERTY_CounterReset,
250 FDE_CSSPROPERTY_Content, 239 FDE_CSSPROPERTY_Content,
251 FDE_CSSPROPERTY_RubyPosition, 240 FDE_CSSPROPERTY_RubyPosition,
252 FDE_CSSPROPERTY_BackgroundColor, 241 FDE_CSSPROPERTY_BackgroundColor,
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 FDE_CSSPROPERTY_BorderRightColor, 336 FDE_CSSPROPERTY_BorderRightColor,
348 FDE_CSSPROPERTY_CounterIncrement, 337 FDE_CSSPROPERTY_CounterIncrement,
349 FDE_CSSPROPERTY_Left, 338 FDE_CSSPROPERTY_Left,
350 FDE_CSSPROPERTY_TextDecoration, 339 FDE_CSSPROPERTY_TextDecoration,
351 FDE_CSSPROPERTY_Padding, 340 FDE_CSSPROPERTY_Padding,
352 FDE_CSSPROPERTY_MarginBottom, 341 FDE_CSSPROPERTY_MarginBottom,
353 FDE_CSSPROPERTY_MarginTop, 342 FDE_CSSPROPERTY_MarginTop,
354 FDE_CSSPROPERTY_Direction, 343 FDE_CSSPROPERTY_Direction,
355 FDE_CSSPROPERTY_MAX 344 FDE_CSSPROPERTY_MAX
356 }; 345 };
357 class IFDE_CSSDeclaration { 346
358 public:
359 virtual ~IFDE_CSSDeclaration() {}
360 virtual IFDE_CSSValue* GetProperty(FDE_CSSPROPERTY eProperty,
361 FX_BOOL& bImportant) const = 0;
362 virtual FX_POSITION GetStartPosition() const = 0;
363 virtual void GetNextProperty(FX_POSITION& pos,
364 FDE_CSSPROPERTY& eProperty,
365 IFDE_CSSValue*& pValue,
366 FX_BOOL& bImportant) const = 0;
367 virtual FX_POSITION GetStartCustom() const = 0;
368 virtual void GetNextCustom(FX_POSITION& pos,
369 CFX_WideString& wsName,
370 CFX_WideString& wsValue) const = 0;
371 };
372 typedef CFX_ArrayTemplate<IFDE_CSSDeclaration*> CFDE_CSSDeclarationArray;
373 enum FDE_CSSPERSUDO { 347 enum FDE_CSSPERSUDO {
374 FDE_CSSPERSUDO_After, 348 FDE_CSSPERSUDO_After,
375 FDE_CSSPERSUDO_Before, 349 FDE_CSSPERSUDO_Before,
376 FDE_CSSPERSUDO_NONE 350 FDE_CSSPERSUDO_NONE
377 }; 351 };
378 enum FDE_CSSSELECTORTYPE { 352 enum FDE_CSSSELECTORTYPE {
379 FDE_CSSSELECTORTYPE_Element, 353 FDE_CSSSELECTORTYPE_Element,
380 FDE_CSSSELECTORTYPE_Descendant, 354 FDE_CSSSELECTORTYPE_Descendant,
381 FDE_CSSSELECTORTYPE_Class, 355 FDE_CSSSELECTORTYPE_Class,
382 FDE_CSSSELECTORTYPE_Persudo, 356 FDE_CSSSELECTORTYPE_Persudo,
383 FDE_CSSSELECTORTYPE_ID, 357 FDE_CSSSELECTORTYPE_ID,
384 }; 358 };
385 class IFDE_CSSSelector { 359
386 public:
387 virtual ~IFDE_CSSSelector() {}
388 virtual FDE_CSSSELECTORTYPE GetType() const = 0;
389 virtual uint32_t GetNameHash() const = 0;
390 virtual IFDE_CSSSelector* GetNextSelector() const = 0;
391 };
392 #define FDE_CSSMEDIATYPE_Braille 0x01
393 #define FDE_CSSMEDIATYPE_Emboss 0x02
394 #define FDE_CSSMEDIATYPE_Handheld 0x04
395 #define FDE_CSSMEDIATYPE_Print 0x08
396 #define FDE_CSSMEDIATYPE_Projection 0x10
397 #define FDE_CSSMEDIATYPE_Screen 0x20
398 #define FDE_CSSMEDIATYPE_TTY 0x40
399 #define FDE_CSSMEDIATYPE_TV 0x80
400 #define FDE_CSSMEDIATYPE_ALL 0xFF
401 enum FDE_CSSRULETYPE { 360 enum FDE_CSSRULETYPE {
402 FDE_CSSRULETYPE_Unknown = 0, 361 FDE_CSSRULETYPE_Unknown = 0,
403 FDE_CSSRULETYPE_Style = 1, 362 FDE_CSSRULETYPE_Style = 1,
404 FDE_CSSRULETYPE_Media = 4, 363 FDE_CSSRULETYPE_Media = 4,
405 FDE_CSSRULETYPE_FontFace = 5, 364 FDE_CSSRULETYPE_FontFace = 5,
406 }; 365 };
407 class IFDE_CSSRule {
408 public:
409 virtual ~IFDE_CSSRule() {}
410 virtual FDE_CSSRULETYPE GetType() const = 0;
411 };
412 typedef CFX_MassArrayTemplate<IFDE_CSSRule*> CFDE_CSSRuleArray;
413 class IFDE_CSSStyleRule : public IFDE_CSSRule {
414 public:
415 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_Style; }
416 virtual int32_t CountSelectorLists() const = 0;
417 virtual IFDE_CSSSelector* GetSelectorList(int32_t index) const = 0;
418 virtual IFDE_CSSDeclaration* GetDeclaration() const = 0;
419 };
420 class IFDE_CSSMediaRule : public IFDE_CSSRule {
421 public:
422 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_Media; }
423 virtual uint32_t GetMediaList() const = 0;
424 virtual int32_t CountRules() const = 0;
425 virtual IFDE_CSSRule* GetRule(int32_t index) = 0;
426 };
427 class IFDE_CSSFontFaceRule : public IFDE_CSSRule {
428 public:
429 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_FontFace; }
430 virtual IFDE_CSSDeclaration* GetDeclaration() const = 0;
431 };
432 class IFDE_CSSStyleSheet : public IFX_Unknown {
433 public:
434 static IFDE_CSSStyleSheet* LoadHTMLStandardStyleSheet();
435 static IFDE_CSSStyleSheet* LoadFromStream(
436 const CFX_WideString& szUrl,
437 IFX_Stream* pStream,
438 uint16_t wCodePage,
439 uint32_t dwMediaList = FDE_CSSMEDIATYPE_ALL);
440 static IFDE_CSSStyleSheet* LoadFromBuffer(
441 const CFX_WideString& szUrl,
442 const FX_WCHAR* pBuffer,
443 int32_t iBufSize,
444 uint16_t wCodePage,
445 uint32_t dwMediaList = FDE_CSSMEDIATYPE_ALL);
446 virtual FX_BOOL GetUrl(CFX_WideString& szUrl) = 0;
447 virtual uint32_t GetMediaList() const = 0;
448 virtual uint16_t GetCodePage() const = 0;
449
450 virtual int32_t CountRules() const = 0;
451 virtual IFDE_CSSRule* GetRule(int32_t index) = 0;
452 };
453 typedef CFX_ArrayTemplate<IFDE_CSSStyleSheet*> CFDE_CSSStyleSheetArray;
454 366
455 enum FDE_CSSSYNTAXSTATUS { 367 enum FDE_CSSSYNTAXSTATUS {
456 FDE_CSSSYNTAXSTATUS_Error, 368 FDE_CSSSYNTAXSTATUS_Error,
457 FDE_CSSSYNTAXSTATUS_EOS, 369 FDE_CSSSYNTAXSTATUS_EOS,
458 FDE_CSSSYNTAXSTATUS_None, 370 FDE_CSSSYNTAXSTATUS_None,
459 FDE_CSSSYNTAXSTATUS_Charset, 371 FDE_CSSSYNTAXSTATUS_Charset,
460 FDE_CSSSYNTAXSTATUS_ImportRule, 372 FDE_CSSSYNTAXSTATUS_ImportRule,
461 FDE_CSSSYNTAXSTATUS_ImportClose, 373 FDE_CSSSYNTAXSTATUS_ImportClose,
462 FDE_CSSSYNTAXSTATUS_PageRule, 374 FDE_CSSSYNTAXSTATUS_PageRule,
463 FDE_CSSSYNTAXSTATUS_StyleRule, 375 FDE_CSSSYNTAXSTATUS_StyleRule,
464 FDE_CSSSYNTAXSTATUS_FontFaceRule, 376 FDE_CSSSYNTAXSTATUS_FontFaceRule,
465 FDE_CSSSYNTAXSTATUS_MediaRule, 377 FDE_CSSSYNTAXSTATUS_MediaRule,
466 FDE_CSSSYNTAXSTATUS_MediaType, 378 FDE_CSSSYNTAXSTATUS_MediaType,
467 FDE_CSSSYNTAXSTATUS_URI, 379 FDE_CSSSYNTAXSTATUS_URI,
468 FDE_CSSSYNTAXSTATUS_Selector, 380 FDE_CSSSYNTAXSTATUS_Selector,
469 FDE_CSSSYNTAXSTATUS_DeclOpen, 381 FDE_CSSSYNTAXSTATUS_DeclOpen,
470 FDE_CSSSYNTAXSTATUS_DeclClose, 382 FDE_CSSSYNTAXSTATUS_DeclClose,
471 FDE_CSSSYNTAXSTATUS_PropertyName, 383 FDE_CSSSYNTAXSTATUS_PropertyName,
472 FDE_CSSSYNTAXSTATUS_PropertyValue, 384 FDE_CSSSYNTAXSTATUS_PropertyValue,
473 }; 385 };
474 class IFDE_CSSSyntaxParser {
475 public:
476 static IFDE_CSSSyntaxParser* Create();
477 virtual ~IFDE_CSSSyntaxParser() {}
478 virtual void Release() = 0;
479 virtual FX_BOOL Init(IFX_Stream* pStream,
480 int32_t iCSSPlaneSize,
481 int32_t iTextDataSize = 32,
482 FX_BOOL bOnlyDeclaration = FALSE) = 0;
483 virtual FX_BOOL Init(const FX_WCHAR* pBuffer,
484 int32_t iBufferSize,
485 int32_t iTextDatSize = 32,
486 FX_BOOL bOnlyDeclaration = FALSE) = 0;
487 386
488 virtual FDE_CSSSYNTAXSTATUS DoSyntaxParse() = 0;
489 virtual const FX_WCHAR* GetCurrentString(int32_t& iLength) const = 0;
490 };
491 enum FDE_CSSLENGTHUNIT { 387 enum FDE_CSSLENGTHUNIT {
492 FDE_CSSLENGTHUNIT_Auto, 388 FDE_CSSLENGTHUNIT_Auto,
493 FDE_CSSLENGTHUNIT_None, 389 FDE_CSSLENGTHUNIT_None,
494 FDE_CSSLENGTHUNIT_Normal, 390 FDE_CSSLENGTHUNIT_Normal,
495 FDE_CSSLENGTHUNIT_Point, 391 FDE_CSSLENGTHUNIT_Point,
496 FDE_CSSLENGTHUNIT_Percent, 392 FDE_CSSLENGTHUNIT_Percent,
497 }; 393 };
498 #define FDE_CSSUNITBITS (3)
499 #define FDE_CSSUNITMASK ((1 << FDE_CSSUNITBITS) - 1)
500 struct FDE_CSSLENGTH {
501 FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit) {
502 m_iData = eUnit;
503 return *this;
504 }
505 FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
506 m_iData = ((intptr_t)(fValue * 1024.0f) << FDE_CSSUNITBITS) | eUnit;
507 return *this;
508 }
509 FDE_CSSLENGTHUNIT GetUnit() const {
510 return (FDE_CSSLENGTHUNIT)(m_iData & FDE_CSSUNITMASK);
511 }
512 FX_FLOAT GetValue() const { return (m_iData >> FDE_CSSUNITBITS) / 1024.0f; }
513 FX_BOOL NonZero() const { return (m_iData >> FDE_CSSUNITBITS) != 0; }
514 394
515 private:
516 intptr_t m_iData;
517 };
518 struct FDE_CSSPOINT {
519 FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit) {
520 x.Set(eUnit);
521 y.Set(eUnit);
522 return *this;
523 }
524 FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
525 x.Set(eUnit, fValue);
526 y.Set(eUnit, fValue);
527 return *this;
528 }
529 FDE_CSSLENGTH x, y;
530 };
531 struct FDE_CSSSIZE {
532 FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit) {
533 cx.Set(eUnit);
534 cy.Set(eUnit);
535 return *this;
536 }
537 FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
538 cx.Set(eUnit, fValue);
539 cy.Set(eUnit, fValue);
540 return *this;
541 }
542 FDE_CSSLENGTH cx, cy;
543 };
544 struct FDE_CSSRECT {
545 FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit) {
546 left.Set(eUnit);
547 top.Set(eUnit);
548 right.Set(eUnit);
549 bottom.Set(eUnit);
550 return *this;
551 }
552 FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
553 left.Set(eUnit, fValue);
554 top.Set(eUnit, fValue);
555 right.Set(eUnit, fValue);
556 bottom.Set(eUnit, fValue);
557 return *this;
558 }
559
560 FDE_CSSLENGTH left, top, right, bottom;
561 };
562 enum FDE_CSSBKGATTACHMENT { 395 enum FDE_CSSBKGATTACHMENT {
563 FDE_CSSBKGATTACHMENT_Scroll, 396 FDE_CSSBKGATTACHMENT_Scroll,
564 FDE_CSSBKGATTACHMENT_Fixed, 397 FDE_CSSBKGATTACHMENT_Fixed,
565 }; 398 };
399
566 enum FDE_CSSBKGREPEAT { 400 enum FDE_CSSBKGREPEAT {
567 FDE_CSSBKGREPEAT_Repeat, 401 FDE_CSSBKGREPEAT_Repeat,
568 FDE_CSSBKGREPEAT_RepeatX, 402 FDE_CSSBKGREPEAT_RepeatX,
569 FDE_CSSBKGREPEAT_RepeatY, 403 FDE_CSSBKGREPEAT_RepeatY,
570 FDE_CSSBKGREPEAT_NoRepeat, 404 FDE_CSSBKGREPEAT_NoRepeat,
571 }; 405 };
406
572 enum FDE_CSSBORDERSTYLE { 407 enum FDE_CSSBORDERSTYLE {
573 FDE_CSSBORDERSTYLE_None, 408 FDE_CSSBORDERSTYLE_None,
574 FDE_CSSBORDERSTYLE_Hidden, 409 FDE_CSSBORDERSTYLE_Hidden,
575 FDE_CSSBORDERSTYLE_Dotted, 410 FDE_CSSBORDERSTYLE_Dotted,
576 FDE_CSSBORDERSTYLE_Dashed, 411 FDE_CSSBORDERSTYLE_Dashed,
577 FDE_CSSBORDERSTYLE_Solid, 412 FDE_CSSBORDERSTYLE_Solid,
578 FDE_CSSBORDERSTYLE_Double, 413 FDE_CSSBORDERSTYLE_Double,
579 FDE_CSSBORDERSTYLE_Groove, 414 FDE_CSSBORDERSTYLE_Groove,
580 FDE_CSSBORDERSTYLE_Ridge, 415 FDE_CSSBORDERSTYLE_Ridge,
581 FDE_CSSBORDERSTYLE_Inset, 416 FDE_CSSBORDERSTYLE_Inset,
582 FDE_CSSBORDERSTYLE_outset, 417 FDE_CSSBORDERSTYLE_outset,
583 }; 418 };
419
584 enum FDE_CSSCLEAR { 420 enum FDE_CSSCLEAR {
585 FDE_CSSCLEAR_None, 421 FDE_CSSCLEAR_None,
586 FDE_CSSCLEAR_Left, 422 FDE_CSSCLEAR_Left,
587 FDE_CSSCLEAR_Right, 423 FDE_CSSCLEAR_Right,
588 FDE_CSSCLEAR_Both, 424 FDE_CSSCLEAR_Both,
589 }; 425 };
426
590 enum FDE_CSSDISPLAY { 427 enum FDE_CSSDISPLAY {
591 FDE_CSSDISPLAY_None, 428 FDE_CSSDISPLAY_None,
592 FDE_CSSDISPLAY_ListItem, 429 FDE_CSSDISPLAY_ListItem,
593 FDE_CSSDISPLAY_RunIn, 430 FDE_CSSDISPLAY_RunIn,
594 FDE_CSSDISPLAY_Block, 431 FDE_CSSDISPLAY_Block,
595 FDE_CSSDISPLAY_Inline, 432 FDE_CSSDISPLAY_Inline,
596 FDE_CSSDISPLAY_InlineBlock, 433 FDE_CSSDISPLAY_InlineBlock,
597 FDE_CSSDISPLAY_InlineTable, 434 FDE_CSSDISPLAY_InlineTable,
598 FDE_CSSDISPLAY_Table, 435 FDE_CSSDISPLAY_Table,
599 FDE_CSSDISPLAY_TableRow, 436 FDE_CSSDISPLAY_TableRow,
600 FDE_CSSDISPLAY_TableCell, 437 FDE_CSSDISPLAY_TableCell,
601 FDE_CSSDISPLAY_TableCaption, 438 FDE_CSSDISPLAY_TableCaption,
602 FDE_CSSDISPLAY_TableColumn, 439 FDE_CSSDISPLAY_TableColumn,
603 FDE_CSSDISPLAY_TableRowGroup, 440 FDE_CSSDISPLAY_TableRowGroup,
604 FDE_CSSDISPLAY_TableColumnGroup, 441 FDE_CSSDISPLAY_TableColumnGroup,
605 FDE_CSSDISPLAY_TableHeaderGroup, 442 FDE_CSSDISPLAY_TableHeaderGroup,
606 FDE_CSSDISPLAY_TableFooterGroup, 443 FDE_CSSDISPLAY_TableFooterGroup,
607 FDE_CSSDISPLAY_Ruby, 444 FDE_CSSDISPLAY_Ruby,
608 FDE_CSSDISPLAY_RubyBase, 445 FDE_CSSDISPLAY_RubyBase,
609 FDE_CSSDISPLAY_RubyText, 446 FDE_CSSDISPLAY_RubyText,
610 FDE_CSSDISPLSY_RubyBaseGroup, 447 FDE_CSSDISPLSY_RubyBaseGroup,
611 FDE_CSSDISPLAY_RubyTextGroup, 448 FDE_CSSDISPLAY_RubyTextGroup,
612 }; 449 };
450
613 enum FDE_CSSVISIBILITY { 451 enum FDE_CSSVISIBILITY {
614 FDE_CSSVISIBILITY_Visible, 452 FDE_CSSVISIBILITY_Visible,
615 FDE_CSSVISIBILITY_Hidden, 453 FDE_CSSVISIBILITY_Hidden,
616 FDE_CSSVISIBILITY_Collapse, 454 FDE_CSSVISIBILITY_Collapse,
617 }; 455 };
456
618 enum FDE_CSSFONTSTYLE { 457 enum FDE_CSSFONTSTYLE {
619 FDE_CSSFONTSTYLE_Normal, 458 FDE_CSSFONTSTYLE_Normal,
620 FDE_CSSFONTSTYLE_Italic, 459 FDE_CSSFONTSTYLE_Italic,
621 }; 460 };
461
622 enum FDE_CSSFLOAT { 462 enum FDE_CSSFLOAT {
623 FDE_CSSFLOAT_None, 463 FDE_CSSFLOAT_None,
624 FDE_CSSFLOAT_Left, 464 FDE_CSSFLOAT_Left,
625 FDE_CSSFLOAT_Right, 465 FDE_CSSFLOAT_Right,
626 }; 466 };
467
627 enum FDE_CSSWRITINGMODE { 468 enum FDE_CSSWRITINGMODE {
628 FDE_CSSWRITINGMODE_HorizontalTb, 469 FDE_CSSWRITINGMODE_HorizontalTb,
629 FDE_CSSWRITINGMODE_VerticalRl, 470 FDE_CSSWRITINGMODE_VerticalRl,
630 FDE_CSSWRITINGMODE_VerticalLr, 471 FDE_CSSWRITINGMODE_VerticalLr,
631 }; 472 };
473
632 enum FDE_CSSWORDBREAK { 474 enum FDE_CSSWORDBREAK {
633 FDE_CSSWORDBREAK_Normal, 475 FDE_CSSWORDBREAK_Normal,
634 FDE_CSSWORDBREAK_KeepAll, 476 FDE_CSSWORDBREAK_KeepAll,
635 FDE_CSSWORDBREAK_BreakAll, 477 FDE_CSSWORDBREAK_BreakAll,
636 FDE_CSSWORDBREAK_KeepWords, 478 FDE_CSSWORDBREAK_KeepWords,
637 }; 479 };
480
638 enum FDE_CSSPAGEBREAK { 481 enum FDE_CSSPAGEBREAK {
639 FDE_CSSPAGEBREAK_Auto, 482 FDE_CSSPAGEBREAK_Auto,
640 FDE_CSSPAGEBREAK_Always, 483 FDE_CSSPAGEBREAK_Always,
641 FDE_CSSPAGEBREAK_Avoid, 484 FDE_CSSPAGEBREAK_Avoid,
642 FDE_CSSPAGEBREAK_Left, 485 FDE_CSSPAGEBREAK_Left,
643 FDE_CSSPAGEBREAK_Right, 486 FDE_CSSPAGEBREAK_Right,
644 }; 487 };
488
645 enum FDE_CSSOVERFLOW { 489 enum FDE_CSSOVERFLOW {
646 FDE_CSSOVERFLOW_Visible, 490 FDE_CSSOVERFLOW_Visible,
647 FDE_CSSOVERFLOW_Hidden, 491 FDE_CSSOVERFLOW_Hidden,
648 FDE_CSSOVERFLOW_Scroll, 492 FDE_CSSOVERFLOW_Scroll,
649 FDE_CSSOVERFLOW_Auto, 493 FDE_CSSOVERFLOW_Auto,
650 FDE_CSSOVERFLOW_NoDisplay, 494 FDE_CSSOVERFLOW_NoDisplay,
651 FDE_CSSOVERFLOW_NoContent, 495 FDE_CSSOVERFLOW_NoContent,
652 }; 496 };
497
653 enum FDE_CSSLINEBREAK { 498 enum FDE_CSSLINEBREAK {
654 FDE_CSSLINEBREAK_Auto, 499 FDE_CSSLINEBREAK_Auto,
655 FDE_CSSLINEBREAK_Loose, 500 FDE_CSSLINEBREAK_Loose,
656 FDE_CSSLINEBREAK_Normal, 501 FDE_CSSLINEBREAK_Normal,
657 FDE_CSSLINEBREAK_Strict, 502 FDE_CSSLINEBREAK_Strict,
658 }; 503 };
504
659 enum FDE_CSSTEXTEMPHASISFILL { 505 enum FDE_CSSTEXTEMPHASISFILL {
660 FDE_CSSTEXTEMPHASISFILL_Filled, 506 FDE_CSSTEXTEMPHASISFILL_Filled,
661 FDE_CSSTEXTEMPHASISFILL_Open, 507 FDE_CSSTEXTEMPHASISFILL_Open,
662 }; 508 };
509
663 enum FDE_CSSTEXTEMPHASISMARK { 510 enum FDE_CSSTEXTEMPHASISMARK {
664 FDE_CSSTEXTEMPHASISMARK_None, 511 FDE_CSSTEXTEMPHASISMARK_None,
665 FDE_CSSTEXTEMPHASISMARK_Auto, 512 FDE_CSSTEXTEMPHASISMARK_Auto,
666 FDE_CSSTEXTEMPHASISMARK_Dot, 513 FDE_CSSTEXTEMPHASISMARK_Dot,
667 FDE_CSSTEXTEMPHASISMARK_Circle, 514 FDE_CSSTEXTEMPHASISMARK_Circle,
668 FDE_CSSTEXTEMPHASISMARK_DoubleCircle, 515 FDE_CSSTEXTEMPHASISMARK_DoubleCircle,
669 FDE_CSSTEXTEMPHASISMARK_Triangle, 516 FDE_CSSTEXTEMPHASISMARK_Triangle,
670 FDE_CSSTEXTEMPHASISMARK_Sesame, 517 FDE_CSSTEXTEMPHASISMARK_Sesame,
671 FDE_CSSTEXTEMPHASISMARK_Custom, 518 FDE_CSSTEXTEMPHASISMARK_Custom,
672 }; 519 };
520
673 enum FDE_CSSTEXTCOMBINE { 521 enum FDE_CSSTEXTCOMBINE {
674 FDE_CSSTEXTCOMBINE_Horizontal, 522 FDE_CSSTEXTCOMBINE_Horizontal,
675 FDE_CSSTEXTCOMBINE_None, 523 FDE_CSSTEXTCOMBINE_None,
676 }; 524 };
525
677 enum FDE_CSSCURSOR { 526 enum FDE_CSSCURSOR {
678 FDE_CSSCURSOR_Auto, 527 FDE_CSSCURSOR_Auto,
679 FDE_CSSCURSOR_Crosshair, 528 FDE_CSSCURSOR_Crosshair,
680 FDE_CSSCURSOR_Default, 529 FDE_CSSCURSOR_Default,
681 FDE_CSSCURSOR_Pointer, 530 FDE_CSSCURSOR_Pointer,
682 FDE_CSSCURSOR_Move, 531 FDE_CSSCURSOR_Move,
683 FDE_CSSCURSOR_EResize, 532 FDE_CSSCURSOR_EResize,
684 FDE_CSSCURSOR_NeResize, 533 FDE_CSSCURSOR_NeResize,
685 FDE_CSSCURSOR_NwResize, 534 FDE_CSSCURSOR_NwResize,
686 FDE_CSSCURSOR_NResize, 535 FDE_CSSCURSOR_NResize,
687 FDE_CSSCURSOR_SeResize, 536 FDE_CSSCURSOR_SeResize,
688 FDE_CSSCURSOR_SwResize, 537 FDE_CSSCURSOR_SwResize,
689 FDE_CSSCURSOR_SResize, 538 FDE_CSSCURSOR_SResize,
690 FDE_CSSCURSOR_WResize, 539 FDE_CSSCURSOR_WResize,
691 FDE_CSSCURSOR_Text, 540 FDE_CSSCURSOR_Text,
692 FDE_CSSCURSOR_Wait, 541 FDE_CSSCURSOR_Wait,
693 FDE_CSSCURSOR_Help, 542 FDE_CSSCURSOR_Help,
694 FDE_CSSCURSOR_Progress, 543 FDE_CSSCURSOR_Progress,
695 }; 544 };
545
696 enum FDE_CSSPOSITION { 546 enum FDE_CSSPOSITION {
697 FDE_CSSPOSITION_Static, 547 FDE_CSSPOSITION_Static,
698 FDE_CSSPOSITION_Relative, 548 FDE_CSSPOSITION_Relative,
699 FDE_CSSPOSITION_Absolute, 549 FDE_CSSPOSITION_Absolute,
700 FDE_CSSPOSITION_Fixed, 550 FDE_CSSPOSITION_Fixed,
701 }; 551 };
552
702 enum FDE_CSSCAPTIONSIDE { 553 enum FDE_CSSCAPTIONSIDE {
703 FDE_CSSCAPTIONSIDE_Top, 554 FDE_CSSCAPTIONSIDE_Top,
704 FDE_CSSCAPTIONSIDE_Bottom, 555 FDE_CSSCAPTIONSIDE_Bottom,
705 FDE_CSSCAPTIONSIDE_Left, 556 FDE_CSSCAPTIONSIDE_Left,
706 FDE_CSSCAPTIONSIDE_Right, 557 FDE_CSSCAPTIONSIDE_Right,
707 FDE_CSSCAPTIONSIDE_Before, 558 FDE_CSSCAPTIONSIDE_Before,
708 FDE_CSSCAPTIONSIDE_After, 559 FDE_CSSCAPTIONSIDE_After,
709 }; 560 };
561
710 enum FDE_CSSRUBYALIGN { 562 enum FDE_CSSRUBYALIGN {
711 FDE_CSSRUBYALIGN_Auto, 563 FDE_CSSRUBYALIGN_Auto,
712 FDE_CSSRUBYALIGN_Start, 564 FDE_CSSRUBYALIGN_Start,
713 FDE_CSSRUBYALIGN_Left, 565 FDE_CSSRUBYALIGN_Left,
714 FDE_CSSRUBYALIGN_Center, 566 FDE_CSSRUBYALIGN_Center,
715 FDE_CSSRUBYALIGN_End, 567 FDE_CSSRUBYALIGN_End,
716 FDE_CSSRUBYALIGN_Right, 568 FDE_CSSRUBYALIGN_Right,
717 FDE_CSSRUBYALIGN_DistributeLetter, 569 FDE_CSSRUBYALIGN_DistributeLetter,
718 FDE_CSSRUBYALIGN_DistributeSpace, 570 FDE_CSSRUBYALIGN_DistributeSpace,
719 FDE_CSSRUBYALIGN_LineEdge, 571 FDE_CSSRUBYALIGN_LineEdge,
720 }; 572 };
573
721 enum FDE_CSSRUBYOVERHANG { 574 enum FDE_CSSRUBYOVERHANG {
722 FDE_CSSRUBYOVERHANG_Auto, 575 FDE_CSSRUBYOVERHANG_Auto,
723 FDE_CSSRUBYOVERHANG_Start, 576 FDE_CSSRUBYOVERHANG_Start,
724 FDE_CSSRUBYOVERHANG_End, 577 FDE_CSSRUBYOVERHANG_End,
725 FDE_CSSRUBYOVERHANG_None, 578 FDE_CSSRUBYOVERHANG_None,
726 }; 579 };
580
727 enum FDE_CSSRUBYPOSITION { 581 enum FDE_CSSRUBYPOSITION {
728 FDE_CSSRUBYPOSITION_Before, 582 FDE_CSSRUBYPOSITION_Before,
729 FDE_CSSRUBYPOSITION_After, 583 FDE_CSSRUBYPOSITION_After,
730 FDE_CSSRUBYPOSITION_Right, 584 FDE_CSSRUBYPOSITION_Right,
731 FDE_CSSRUBYPOSITION_Inline, 585 FDE_CSSRUBYPOSITION_Inline,
732 }; 586 };
587
733 enum FDE_CSSRUBYSPAN { 588 enum FDE_CSSRUBYSPAN {
734 FDE_CSSRUBYSPAN_None, 589 FDE_CSSRUBYSPAN_None,
735 FDE_CSSRUBYSPAN_Attr, 590 FDE_CSSRUBYSPAN_Attr,
736 }; 591 };
592
737 enum FDE_CSSTEXTALIGN { 593 enum FDE_CSSTEXTALIGN {
738 FDE_CSSTEXTALIGN_Left, 594 FDE_CSSTEXTALIGN_Left,
739 FDE_CSSTEXTALIGN_Right, 595 FDE_CSSTEXTALIGN_Right,
740 FDE_CSSTEXTALIGN_Center, 596 FDE_CSSTEXTALIGN_Center,
741 FDE_CSSTEXTALIGN_Justify, 597 FDE_CSSTEXTALIGN_Justify,
742 FDE_CSSTEXTALIGN_JustifyAll, 598 FDE_CSSTEXTALIGN_JustifyAll,
743 }; 599 };
600
744 enum FDE_CSSVERTICALALIGN { 601 enum FDE_CSSVERTICALALIGN {
745 FDE_CSSVERTICALALIGN_Baseline, 602 FDE_CSSVERTICALALIGN_Baseline,
746 FDE_CSSVERTICALALIGN_Sub, 603 FDE_CSSVERTICALALIGN_Sub,
747 FDE_CSSVERTICALALIGN_Super, 604 FDE_CSSVERTICALALIGN_Super,
748 FDE_CSSVERTICALALIGN_Top, 605 FDE_CSSVERTICALALIGN_Top,
749 FDE_CSSVERTICALALIGN_TextTop, 606 FDE_CSSVERTICALALIGN_TextTop,
750 FDE_CSSVERTICALALIGN_Middle, 607 FDE_CSSVERTICALALIGN_Middle,
751 FDE_CSSVERTICALALIGN_Bottom, 608 FDE_CSSVERTICALALIGN_Bottom,
752 FDE_CSSVERTICALALIGN_TextBottom, 609 FDE_CSSVERTICALALIGN_TextBottom,
753 FDE_CSSVERTICALALIGN_Number, 610 FDE_CSSVERTICALALIGN_Number,
754 }; 611 };
612
755 enum FDE_CSSLISTSTYLETYPE { 613 enum FDE_CSSLISTSTYLETYPE {
756 FDE_CSSLISTSTYLETYPE_Disc, 614 FDE_CSSLISTSTYLETYPE_Disc,
757 FDE_CSSLISTSTYLETYPE_Circle, 615 FDE_CSSLISTSTYLETYPE_Circle,
758 FDE_CSSLISTSTYLETYPE_Square, 616 FDE_CSSLISTSTYLETYPE_Square,
759 FDE_CSSLISTSTYLETYPE_Decimal, 617 FDE_CSSLISTSTYLETYPE_Decimal,
760 FDE_CSSLISTSTYLETYPE_DecimalLeadingZero, 618 FDE_CSSLISTSTYLETYPE_DecimalLeadingZero,
761 FDE_CSSLISTSTYLETYPE_LowerRoman, 619 FDE_CSSLISTSTYLETYPE_LowerRoman,
762 FDE_CSSLISTSTYLETYPE_UpperRoman, 620 FDE_CSSLISTSTYLETYPE_UpperRoman,
763 FDE_CSSLISTSTYLETYPE_LowerGreek, 621 FDE_CSSLISTSTYLETYPE_LowerGreek,
764 FDE_CSSLISTSTYLETYPE_LowerLatin, 622 FDE_CSSLISTSTYLETYPE_LowerLatin,
765 FDE_CSSLISTSTYLETYPE_UpperLatin, 623 FDE_CSSLISTSTYLETYPE_UpperLatin,
766 FDE_CSSLISTSTYLETYPE_Armenian, 624 FDE_CSSLISTSTYLETYPE_Armenian,
767 FDE_CSSLISTSTYLETYPE_Georgian, 625 FDE_CSSLISTSTYLETYPE_Georgian,
768 FDE_CSSLISTSTYLETYPE_LowerAlpha, 626 FDE_CSSLISTSTYLETYPE_LowerAlpha,
769 FDE_CSSLISTSTYLETYPE_UpperAlpha, 627 FDE_CSSLISTSTYLETYPE_UpperAlpha,
770 FDE_CSSLISTSTYLETYPE_None, 628 FDE_CSSLISTSTYLETYPE_None,
771 FDE_CSSLISTSTYLETYPE_CjkIdeographic, 629 FDE_CSSLISTSTYLETYPE_CjkIdeographic,
772 FDE_CSSLISTSTYLETYPE_Hebrew, 630 FDE_CSSLISTSTYLETYPE_Hebrew,
773 FDE_CSSLISTSTYLETYPE_Hiragana, 631 FDE_CSSLISTSTYLETYPE_Hiragana,
774 FDE_CSSLISTSTYLETYPE_HiraganaIroha, 632 FDE_CSSLISTSTYLETYPE_HiraganaIroha,
775 FDE_CSSLISTSTYLETYPE_Katakana, 633 FDE_CSSLISTSTYLETYPE_Katakana,
776 FDE_CSSLISTSTYLETYPE_KatakanaIroha, 634 FDE_CSSLISTSTYLETYPE_KatakanaIroha,
777 }; 635 };
636
778 enum FDE_CSSLISTSTYLEPOSITION { 637 enum FDE_CSSLISTSTYLEPOSITION {
779 FDE_CSSLISTSTYLEPOSITION_Outside, 638 FDE_CSSLISTSTYLEPOSITION_Outside,
780 FDE_CSSLISTSTYLEPOSITION_Inside, 639 FDE_CSSLISTSTYLEPOSITION_Inside,
781 }; 640 };
641
782 enum FDE_CSSWHITESPACE { 642 enum FDE_CSSWHITESPACE {
783 FDE_CSSWHITESPACE_Normal, 643 FDE_CSSWHITESPACE_Normal,
784 FDE_CSSWHITESPACE_Pre, 644 FDE_CSSWHITESPACE_Pre,
785 FDE_CSSWHITESPACE_Nowrap, 645 FDE_CSSWHITESPACE_Nowrap,
786 FDE_CSSWHITESPACE_PreWrap, 646 FDE_CSSWHITESPACE_PreWrap,
787 FDE_CSSWHITESPACE_PreLine, 647 FDE_CSSWHITESPACE_PreLine,
788 }; 648 };
649
789 enum FDE_CSSFONTVARIANT { 650 enum FDE_CSSFONTVARIANT {
790 FDE_CSSFONTVARIANT_Normal, 651 FDE_CSSFONTVARIANT_Normal,
791 FDE_CSSFONTVARIANT_SmallCaps, 652 FDE_CSSFONTVARIANT_SmallCaps,
792 }; 653 };
654
793 enum FDE_CSSTEXTTRANSFORM { 655 enum FDE_CSSTEXTTRANSFORM {
794 FDE_CSSTEXTTRANSFORM_None, 656 FDE_CSSTEXTTRANSFORM_None,
795 FDE_CSSTEXTTRANSFORM_Capitalize, 657 FDE_CSSTEXTTRANSFORM_Capitalize,
796 FDE_CSSTEXTTRANSFORM_UpperCase, 658 FDE_CSSTEXTTRANSFORM_UpperCase,
797 FDE_CSSTEXTTRANSFORM_LowerCase, 659 FDE_CSSTEXTTRANSFORM_LowerCase,
798 }; 660 };
661
799 enum FDE_CSSTEXTDECORATION { 662 enum FDE_CSSTEXTDECORATION {
800 FDE_CSSTEXTDECORATION_None = 0, 663 FDE_CSSTEXTDECORATION_None = 0,
801 FDE_CSSTEXTDECORATION_Underline = 1, 664 FDE_CSSTEXTDECORATION_Underline = 1,
802 FDE_CSSTEXTDECORATION_Overline = 2, 665 FDE_CSSTEXTDECORATION_Overline = 2,
803 FDE_CSSTEXTDECORATION_LineThrough = 4, 666 FDE_CSSTEXTDECORATION_LineThrough = 4,
804 FDE_CSSTEXTDECORATION_Blink = 8, 667 FDE_CSSTEXTDECORATION_Blink = 8,
805 FDE_CSSTEXTDECORATION_Double = 16, 668 FDE_CSSTEXTDECORATION_Double = 16,
806 }; 669 };
807 670
671 enum FDE_CSSSTYLESHEETGROUP {
672 FDE_CSSSTYLESHEETGROUP_UserAgent,
673 FDE_CSSSTYLESHEETGROUP_User,
674 FDE_CSSSTYLESHEETGROUP_Author,
675 FDE_CSSSTYLESHEETGROUP_MAX,
676 };
677
678 enum FDE_CSSSTYLESHEETPRIORITY {
679 FDE_CSSSTYLESHEETPRIORITY_High,
680 FDE_CSSSTYLESHEETPRIORITY_Mid,
681 FDE_CSSSTYLESHEETPRIORITY_Low,
682 FDE_CSSSTYLESHEETPRIORITY_MAX,
683 };
684
685 class IFDE_CSSValue {
686 public:
687 virtual ~IFDE_CSSValue() {}
688 virtual FDE_CSSVALUETYPE GetType() const = 0;
689 };
690
691 class IFDE_CSSPrimitiveValue : public IFDE_CSSValue {
692 public:
693 virtual FDE_CSSVALUETYPE GetType() const {
694 return FDE_CSSVALUETYPE_Primitive;
695 }
696 virtual FDE_CSSPRIMITIVETYPE GetPrimitiveType() const = 0;
697 virtual FX_ARGB GetRGBColor() const = 0;
698 virtual FX_FLOAT GetFloat() const = 0;
699 virtual const FX_WCHAR* GetString(int32_t& iLength) const = 0;
700 virtual FDE_CSSPROPERTYVALUE GetEnum() const = 0;
701 virtual const FX_WCHAR* GetFuncName() const = 0;
702 virtual int32_t CountArgs() const = 0;
703 virtual IFDE_CSSValue* GetArgs(int32_t index) const = 0;
704 };
705
706 class IFDE_CSSValueList : public IFDE_CSSValue {
707 public:
708 virtual FDE_CSSVALUETYPE GetType() const { return FDE_CSSVALUETYPE_List; }
709 virtual int32_t CountValues() const = 0;
710 virtual IFDE_CSSValue* GetValue(int32_t index) const = 0;
711 };
712
713 class IFDE_CSSRule {
714 public:
715 virtual ~IFDE_CSSRule() {}
716 virtual FDE_CSSRULETYPE GetType() const = 0;
717 };
718 typedef CFX_MassArrayTemplate<IFDE_CSSRule*> CFDE_CSSRuleArray;
719
720 class IFDE_CSSStyleRule : public IFDE_CSSRule {
721 public:
722 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_Style; }
723 virtual int32_t CountSelectorLists() const = 0;
724 virtual CFDE_CSSSelector* GetSelectorList(int32_t index) const = 0;
725 virtual CFDE_CSSDeclaration* GetDeclaration() = 0;
726 };
727
728 class IFDE_CSSMediaRule : public IFDE_CSSRule {
729 public:
730 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_Media; }
731 virtual uint32_t GetMediaList() const = 0;
732 virtual int32_t CountRules() const = 0;
733 virtual IFDE_CSSRule* GetRule(int32_t index) = 0;
734 };
735
736 class IFDE_CSSFontFaceRule : public IFDE_CSSRule {
737 public:
738 virtual FDE_CSSRULETYPE GetType() const { return FDE_CSSRULETYPE_FontFace; }
739 virtual CFDE_CSSDeclaration* GetDeclaration() = 0;
740 };
741
742 class IFDE_CSSStyleSheet : public IFX_Unknown {
743 public:
744 static IFDE_CSSStyleSheet* LoadHTMLStandardStyleSheet();
745 static IFDE_CSSStyleSheet* LoadFromStream(
746 const CFX_WideString& szUrl,
747 IFX_Stream* pStream,
748 uint16_t wCodePage,
749 uint32_t dwMediaList = FDE_CSSMEDIATYPE_ALL);
750 static IFDE_CSSStyleSheet* LoadFromBuffer(
751 const CFX_WideString& szUrl,
752 const FX_WCHAR* pBuffer,
753 int32_t iBufSize,
754 uint16_t wCodePage,
755 uint32_t dwMediaList = FDE_CSSMEDIATYPE_ALL);
756 virtual FX_BOOL GetUrl(CFX_WideString& szUrl) = 0;
757 virtual uint32_t GetMediaList() const = 0;
758 virtual uint16_t GetCodePage() const = 0;
759
760 virtual int32_t CountRules() const = 0;
761 virtual IFDE_CSSRule* GetRule(int32_t index) = 0;
762 };
763 typedef CFX_ArrayTemplate<IFDE_CSSStyleSheet*> CFDE_CSSStyleSheetArray;
764
765 struct FDE_CSSLENGTH {
766 FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit) {
767 m_iData = eUnit;
768 return *this;
769 }
770 FDE_CSSLENGTH& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
771 m_iData = ((intptr_t)(fValue * 1024.0f) << FDE_CSSUNITBITS) | eUnit;
772 return *this;
773 }
774 FDE_CSSLENGTHUNIT GetUnit() const {
775 return (FDE_CSSLENGTHUNIT)(m_iData & FDE_CSSUNITMASK);
776 }
777 FX_FLOAT GetValue() const { return (m_iData >> FDE_CSSUNITBITS) / 1024.0f; }
778 FX_BOOL NonZero() const { return (m_iData >> FDE_CSSUNITBITS) != 0; }
779
780 private:
781 intptr_t m_iData;
782 };
783
784 struct FDE_CSSPOINT {
785 FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit) {
786 x.Set(eUnit);
787 y.Set(eUnit);
788 return *this;
789 }
790 FDE_CSSPOINT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
791 x.Set(eUnit, fValue);
792 y.Set(eUnit, fValue);
793 return *this;
794 }
795 FDE_CSSLENGTH x, y;
796 };
797
798 struct FDE_CSSSIZE {
799 FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit) {
800 cx.Set(eUnit);
801 cy.Set(eUnit);
802 return *this;
803 }
804 FDE_CSSSIZE& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
805 cx.Set(eUnit, fValue);
806 cy.Set(eUnit, fValue);
807 return *this;
808 }
809 FDE_CSSLENGTH cx, cy;
810 };
811
812 struct FDE_CSSRECT {
813 FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit) {
814 left.Set(eUnit);
815 top.Set(eUnit);
816 right.Set(eUnit);
817 bottom.Set(eUnit);
818 return *this;
819 }
820 FDE_CSSRECT& Set(FDE_CSSLENGTHUNIT eUnit, FX_FLOAT fValue) {
821 left.Set(eUnit, fValue);
822 top.Set(eUnit, fValue);
823 right.Set(eUnit, fValue);
824 bottom.Set(eUnit, fValue);
825 return *this;
826 }
827
828 FDE_CSSLENGTH left, top, right, bottom;
829 };
830
808 class IFDE_CSSFontStyle { 831 class IFDE_CSSFontStyle {
809 public: 832 public:
810 virtual ~IFDE_CSSFontStyle() {} 833 virtual ~IFDE_CSSFontStyle() {}
811 834
812 virtual int32_t CountFontFamilies() const = 0; 835 virtual int32_t CountFontFamilies() const = 0;
813 virtual const FX_WCHAR* GetFontFamily(int32_t index) const = 0; 836 virtual const FX_WCHAR* GetFontFamily(int32_t index) const = 0;
814 virtual uint16_t GetFontWeight() const = 0; 837 virtual uint16_t GetFontWeight() const = 0;
815 virtual FDE_CSSFONTVARIANT GetFontVariant() const = 0; 838 virtual FDE_CSSFONTVARIANT GetFontVariant() const = 0;
816 virtual FDE_CSSFONTSTYLE GetFontStyle() const = 0; 839 virtual FDE_CSSFONTSTYLE GetFontStyle() const = 0;
817 virtual FX_FLOAT GetFontSize() const = 0; 840 virtual FX_FLOAT GetFontSize() const = 0;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 class IFDE_CSSComputedStyle : public IFX_Unknown { 885 class IFDE_CSSComputedStyle : public IFX_Unknown {
863 public: 886 public:
864 virtual void Reset() = 0; 887 virtual void Reset() = 0;
865 virtual IFDE_CSSFontStyle* GetFontStyles() = 0; 888 virtual IFDE_CSSFontStyle* GetFontStyles() = 0;
866 virtual IFDE_CSSBoundaryStyle* GetBoundaryStyles() = 0; 889 virtual IFDE_CSSBoundaryStyle* GetBoundaryStyles() = 0;
867 virtual IFDE_CSSPositionStyle* GetPositionStyles() = 0; 890 virtual IFDE_CSSPositionStyle* GetPositionStyles() = 0;
868 virtual IFDE_CSSParagraphStyle* GetParagraphStyles() = 0; 891 virtual IFDE_CSSParagraphStyle* GetParagraphStyles() = 0;
869 virtual FX_BOOL GetCustomStyle(const CFX_WideStringC& wsName, 892 virtual FX_BOOL GetCustomStyle(const CFX_WideStringC& wsName,
870 CFX_WideString& wsValue) const = 0; 893 CFX_WideString& wsValue) const = 0;
871 }; 894 };
872 enum FDE_CSSSTYLESHEETGROUP {
873 FDE_CSSSTYLESHEETGROUP_UserAgent,
874 FDE_CSSSTYLESHEETGROUP_User,
875 FDE_CSSSTYLESHEETGROUP_Author,
876 FDE_CSSSTYLESHEETGROUP_MAX,
877 };
878 enum FDE_CSSSTYLESHEETPRIORITY {
879 FDE_CSSSTYLESHEETPRIORITY_High,
880 FDE_CSSSTYLESHEETPRIORITY_Mid,
881 FDE_CSSSTYLESHEETPRIORITY_Low,
882 FDE_CSSSTYLESHEETPRIORITY_MAX,
883 };
884
885 class IFDE_CSSStyleSelector {
886 public:
887 static IFDE_CSSStyleSelector* Create();
888 virtual ~IFDE_CSSStyleSelector() {}
889 virtual void Release() = 0;
890 virtual void SetFontMgr(IFX_FontMgr* pFontMgr) = 0;
891 virtual void SetDefFontSize(FX_FLOAT fFontSize) = 0;
892 virtual FX_BOOL SetStyleSheet(FDE_CSSSTYLESHEETGROUP eType,
893 IFDE_CSSStyleSheet* pSheet) = 0;
894 virtual FX_BOOL SetStyleSheets(FDE_CSSSTYLESHEETGROUP eType,
895 const CFDE_CSSStyleSheetArray* pArray) = 0;
896 virtual void SetStylePriority(FDE_CSSSTYLESHEETGROUP eType,
897 FDE_CSSSTYLESHEETPRIORITY ePriority) = 0;
898 virtual void UpdateStyleIndex(uint32_t dwMediaList) = 0;
899 virtual CFDE_CSSAccelerator* InitAccelerator() = 0;
900 virtual IFDE_CSSComputedStyle* CreateComputedStyle(
901 IFDE_CSSComputedStyle* pParentStyle) = 0;
902 virtual int32_t MatchDeclarations(
903 CXFA_CSSTagProvider* pTag,
904 CFDE_CSSDeclarationArray& matchedDecls,
905 FDE_CSSPERSUDO ePersudoType = FDE_CSSPERSUDO_NONE) = 0;
906 virtual void ComputeStyle(CXFA_CSSTagProvider* pTag,
907 const IFDE_CSSDeclaration** ppDeclArray,
908 int32_t iDeclCount,
909 IFDE_CSSComputedStyle* pDestStyle) = 0;
910 };
911 895
912 #endif // XFA_FDE_CSS_FDE_CSS_H_ 896 #endif // XFA_FDE_CSS_FDE_CSS_H_
OLDNEW
« no previous file with comments | « no previous file | xfa/fde/css/fde_cssdeclaration.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698