| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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_ |
| OLD | NEW |