| // Copyright 2014 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef _FDE_CSSDECLARATION |
| #define _FDE_CSSDECLARATION |
| #include "fde_cssdatatable.h" |
| typedef struct _FDE_CSSPROPERTYHOLDER : public CFX_Target { |
| int16_t eProperty; |
| int16_t bImportant; |
| IFDE_CSSValue* pValue; |
| _FDE_CSSPROPERTYHOLDER* pNext; |
| } FDE_CSSPROPERTYHOLDER, *FDE_LPCSSPROPERTYHOLDER; |
| typedef struct _FDE_CSSCUSTOMPROPERTY : public CFX_Target { |
| const FX_WCHAR* pwsName; |
| const FX_WCHAR* pwsValue; |
| _FDE_CSSCUSTOMPROPERTY* pNext; |
| } FDE_CSSCUSTOMPROPERTY, *FDE_LPCSSCUSTOMPROPERTY; |
| typedef struct _FDE_CSSPROPERTYARGS : public CFX_Target { |
| IFX_MEMAllocator* pStaticStore; |
| CFX_MapPtrToPtr* pStringCache; |
| FDE_LPCCSSPROPERTYTABLE pProperty; |
| } FDE_CSSPROPERTYARGS; |
| typedef FDE_CSSPROPERTYARGS const* FDE_LPCCSSPROPERTYARGS; |
| class CFDE_CSSDeclaration : public IFDE_CSSDeclaration, public CFX_Target { |
| public: |
| CFDE_CSSDeclaration() |
| : m_pFirstProperty(NULL), |
| m_pLastProperty(NULL), |
| m_pFirstCustom(NULL), |
| m_pLastCustom(NULL) {} |
| virtual IFDE_CSSValue* GetProperty(FDE_CSSPROPERTY eProperty, |
| FX_BOOL& bImportant) const; |
| virtual FX_POSITION GetStartPosition() const; |
| virtual void GetNextProperty(FX_POSITION& pos, |
| FDE_CSSPROPERTY& eProperty, |
| IFDE_CSSValue*& pValue, |
| FX_BOOL& bImportant) const; |
| virtual FX_POSITION GetStartCustom() const; |
| virtual void GetNextCustom(FX_POSITION& pos, |
| CFX_WideString& wsName, |
| CFX_WideString& wsValue) const; |
| FX_BOOL AddProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| FX_BOOL AddProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszName, |
| int32_t iNameLen, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| |
| protected: |
| FX_BOOL ParseTextEmphasisProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseColumnsProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseColumnRuleProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseOverflowProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseFontProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseBackgroundProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseListStyleProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseBorderPropoerty(IFX_MEMAllocator* pStaticStore, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| IFDE_CSSValue*& pColor, |
| IFDE_CSSValue*& pStyle, |
| IFDE_CSSValue*& pWidth) const; |
| void AddBorderProperty(IFX_MEMAllocator* pStaticStore, |
| IFDE_CSSValue* pColor, |
| IFDE_CSSValue* pStyle, |
| IFDE_CSSValue* pWidth, |
| FX_BOOL bImportant, |
| FDE_CSSPROPERTY eColor, |
| FDE_CSSPROPERTY eStyle, |
| FDE_CSSPROPERTY eWidth); |
| FX_BOOL ParseContentProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseCounterProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL ParseValueListProperty(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen, |
| FX_BOOL bImportant); |
| FX_BOOL Add4ValuesProperty(IFX_MEMAllocator* pStaticStore, |
| const CFDE_CSSValueArray& list, |
| FX_BOOL bImportant, |
| FDE_CSSPROPERTY eLeft, |
| FDE_CSSPROPERTY eTop, |
| FDE_CSSPROPERTY eRight, |
| FDE_CSSPROPERTY eBottom); |
| IFDE_CSSValue* ParseNumber(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| IFDE_CSSValue* ParseEnum(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| IFDE_CSSValue* ParseColor(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| IFDE_CSSValue* ParseURI(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| IFDE_CSSValue* ParseString(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| IFDE_CSSValue* ParseFunction(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| const FX_WCHAR* CopyToLocal(FDE_LPCCSSPROPERTYARGS pArgs, |
| const FX_WCHAR* pszValue, |
| int32_t iValueLen); |
| void AddPropertyHolder(IFX_MEMAllocator* pStaticStore, |
| FDE_CSSPROPERTY eProperty, |
| IFDE_CSSValue* pValue, |
| FX_BOOL bImportant); |
| IFDE_CSSPrimitiveValue* NewNumberValue(IFX_MEMAllocator* pStaticStore, |
| FDE_CSSPRIMITIVETYPE eUnit, |
| FX_FLOAT fValue) const; |
| IFDE_CSSPrimitiveValue* NewEnumValue(IFX_MEMAllocator* pStaticStore, |
| FDE_CSSPROPERTYVALUE eValue) const; |
| FDE_LPCSSPROPERTYHOLDER m_pFirstProperty; |
| FDE_LPCSSPROPERTYHOLDER m_pLastProperty; |
| FDE_LPCSSCUSTOMPROPERTY m_pFirstCustom; |
| FDE_LPCSSCUSTOMPROPERTY m_pLastCustom; |
| }; |
| #endif |