blob: 38fe77f479d0aa1e43a7bc9732ad5ae1586dfb15 [file] [log] [blame]
// 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