Merge to XFA: Use stdint.h types throughout PDFium.
[pdfium.git] / xfa / src / fdp / src / css / fde_cssdeclaration.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FDE_CSSDECLARATION\r
8 #define _FDE_CSSDECLARATION\r
9 #include "fde_cssdatatable.h"\r
10 typedef struct _FDE_CSSPROPERTYHOLDER : public CFX_Target {\r
11     int16_t                                             eProperty;\r
12     int16_t                                             bImportant;\r
13     IFDE_CSSValue                                       *pValue;\r
14     _FDE_CSSPROPERTYHOLDER                      *pNext;\r
15 } FDE_CSSPROPERTYHOLDER, *FDE_LPCSSPROPERTYHOLDER;\r
16 typedef struct _FDE_CSSCUSTOMPROPERTY : public CFX_Target {\r
17     FX_LPCWSTR                                          pwsName;\r
18     FX_LPCWSTR                                          pwsValue;\r
19     _FDE_CSSCUSTOMPROPERTY                      *pNext;\r
20 } FDE_CSSCUSTOMPROPERTY, * FDE_LPCSSCUSTOMPROPERTY;\r
21 typedef struct _FDE_CSSPROPERTYARGS : public CFX_Target {\r
22     IFX_MEMAllocator            *pStaticStore;\r
23     CFX_MapPtrToPtr                     *pStringCache;\r
24     FDE_LPCCSSPROPERTYTABLE     pProperty;\r
25 } FDE_CSSPROPERTYARGS;\r
26 typedef FDE_CSSPROPERTYARGS const * FDE_LPCCSSPROPERTYARGS;\r
27 class CFDE_CSSDeclaration : public IFDE_CSSDeclaration, public CFX_Target\r
28 {\r
29 public:\r
30     CFDE_CSSDeclaration() : m_pFirstProperty(NULL), m_pLastProperty(NULL), m_pFirstCustom(NULL), m_pLastCustom(NULL) { }\r
31     virtual IFDE_CSSValue*                      GetProperty(FDE_CSSPROPERTY eProperty, FX_BOOL &bImportant) const;\r
32     virtual FX_POSITION                         GetStartPosition() const;\r
33     virtual void                                        GetNextProperty(FX_POSITION &pos, FDE_CSSPROPERTY &eProperty, IFDE_CSSValue *&pValue, FX_BOOL &bImportant) const;\r
34     virtual FX_POSITION                         GetStartCustom() const;\r
35     virtual void                                        GetNextCustom(FX_POSITION &pos, CFX_WideString &wsName, CFX_WideString &wsValue) const;\r
36     FX_BOOL                                                     AddProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
37     FX_BOOL                                                     AddProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszName, int32_t iNameLen, FX_LPCWSTR pszValue, int32_t iValueLen);\r
38 protected:\r
39     FX_BOOL                                                     ParseTextEmphasisProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
40     FX_BOOL                                                     ParseColumnsProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
41     FX_BOOL                                                     ParseColumnRuleProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
42     FX_BOOL                                                     ParseOverflowProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
43     FX_BOOL                                                     ParseFontProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
44     FX_BOOL                                                     ParseBackgroundProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
45     FX_BOOL                                                     ParseListStyleProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
46     FX_BOOL                                                     ParseBorderPropoerty(IFX_MEMAllocator *pStaticStore, FX_LPCWSTR pszValue, int32_t iValueLen,\r
47             IFDE_CSSValue *&pColor, IFDE_CSSValue *&pStyle, IFDE_CSSValue *&pWidth) const;\r
48     void                                                        AddBorderProperty(IFX_MEMAllocator *pStaticStore, IFDE_CSSValue *pColor, IFDE_CSSValue *pStyle, IFDE_CSSValue *pWidth, FX_BOOL bImportant,\r
49             FDE_CSSPROPERTY eColor, FDE_CSSPROPERTY eStyle, FDE_CSSPROPERTY eWidth);\r
50     FX_BOOL                                                     ParseContentProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
51     FX_BOOL                                                     ParseCounterProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
52     FX_BOOL                                                     ParseValueListProperty(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen, FX_BOOL bImportant);\r
53     FX_BOOL                                                     Add4ValuesProperty(IFX_MEMAllocator *pStaticStore, const CFDE_CSSValueArray &list, FX_BOOL bImportant,\r
54             FDE_CSSPROPERTY eLeft, FDE_CSSPROPERTY eTop, FDE_CSSPROPERTY eRight, FDE_CSSPROPERTY eBottom);\r
55     IFDE_CSSValue*                                      ParseNumber(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
56     IFDE_CSSValue*                                      ParseEnum(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
57     IFDE_CSSValue*                                      ParseColor(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
58     IFDE_CSSValue*                                      ParseURI(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
59     IFDE_CSSValue*                                      ParseString(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
60     IFDE_CSSValue*                                      ParseFunction(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
61     FX_LPCWSTR                                          CopyToLocal(FDE_LPCCSSPROPERTYARGS pArgs, FX_LPCWSTR pszValue, int32_t iValueLen);\r
62     void                                                        AddPropertyHolder(IFX_MEMAllocator *pStaticStore, FDE_CSSPROPERTY eProperty, IFDE_CSSValue *pValue, FX_BOOL bImportant);\r
63     IFDE_CSSPrimitiveValue*                     NewNumberValue(IFX_MEMAllocator *pStaticStore, FDE_CSSPRIMITIVETYPE eUnit, FX_FLOAT fValue) const;\r
64     IFDE_CSSPrimitiveValue*                     NewEnumValue(IFX_MEMAllocator *pStaticStore, FDE_CSSPROPERTYVALUE eValue) const;\r
65     FDE_LPCSSPROPERTYHOLDER                     m_pFirstProperty;\r
66     FDE_LPCSSPROPERTYHOLDER                     m_pLastProperty;\r
67     FDE_LPCSSCUSTOMPROPERTY                     m_pFirstCustom;\r
68     FDE_LPCSSCUSTOMPROPERTY                     m_pLastCustom;\r
69 };\r
70 #endif\r