| Index: xfa/fde/css/fde_cssstyleselector.cpp
|
| diff --git a/xfa/fde/css/fde_cssstyleselector.cpp b/xfa/fde/css/fde_cssstyleselector.cpp
|
| index 6082136fe03a4732d598d5da0487654c5f05accf..6a1a0b0c56e9f2b11cfba1571dd2c8789b1cda0f 100644
|
| --- a/xfa/fde/css/fde_cssstyleselector.cpp
|
| +++ b/xfa/fde/css/fde_cssstyleselector.cpp
|
| @@ -105,133 +105,6 @@ FDE_CSSRuleData::FDE_CSSRuleData(CFDE_CSSSelector* pSel,
|
| }
|
| }
|
|
|
| -void CFDE_CSSRuleCollection::Clear() {
|
| - m_IDRules.RemoveAll();
|
| - m_TagRules.RemoveAll();
|
| - m_ClassRules.RemoveAll();
|
| - m_pUniversalRules = nullptr;
|
| - m_pStaticStore = nullptr;
|
| - m_iSelectors = 0;
|
| -}
|
| -
|
| -CFDE_CSSRuleCollection::CFDE_CSSRuleCollection()
|
| - : m_pStaticStore(nullptr),
|
| - m_pUniversalRules(nullptr),
|
| - m_pPersudoRules(nullptr),
|
| - m_iSelectors(0) {}
|
| -
|
| -CFDE_CSSRuleCollection::~CFDE_CSSRuleCollection() {
|
| - Clear();
|
| -}
|
| -
|
| -void CFDE_CSSRuleCollection::AddRulesFrom(const CFDE_CSSStyleSheetArray& sheets,
|
| - uint32_t dwMediaList,
|
| - IFGAS_FontMgr* pFontMgr) {
|
| - int32_t iSheets = sheets.GetSize();
|
| - for (int32_t i = 0; i < iSheets; ++i) {
|
| - IFDE_CSSStyleSheet* pSheet = sheets.GetAt(i);
|
| - if (uint32_t dwMatchMedia = pSheet->GetMediaList() & dwMediaList) {
|
| - int32_t iRules = pSheet->CountRules();
|
| - for (int32_t j = 0; j < iRules; j++) {
|
| - AddRulesFrom(pSheet, pSheet->GetRule(j), dwMatchMedia, pFontMgr);
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -void CFDE_CSSRuleCollection::AddRulesFrom(IFDE_CSSStyleSheet* pStyleSheet,
|
| - IFDE_CSSRule* pRule,
|
| - uint32_t dwMediaList,
|
| - IFGAS_FontMgr* pFontMgr) {
|
| - switch (pRule->GetType()) {
|
| - case FDE_CSSRULETYPE_Style: {
|
| - IFDE_CSSStyleRule* pStyleRule = static_cast<IFDE_CSSStyleRule*>(pRule);
|
| - CFDE_CSSDeclaration* pDeclaration = pStyleRule->GetDeclaration();
|
| - int32_t iSelectors = pStyleRule->CountSelectorLists();
|
| - for (int32_t i = 0; i < iSelectors; ++i) {
|
| - CFDE_CSSSelector* pSelector = pStyleRule->GetSelectorList(i);
|
| - if (pSelector->GetType() == FDE_CSSSELECTORTYPE_Persudo) {
|
| - FDE_CSSRuleData* pData = NewRuleData(pSelector, pDeclaration);
|
| - AddRuleTo(m_pPersudoRules, pData);
|
| - continue;
|
| - }
|
| - if (pSelector->GetNameHash() != FDE_CSSUNIVERSALHASH) {
|
| - AddRuleTo(m_TagRules, pSelector->GetNameHash(), pSelector,
|
| - pDeclaration);
|
| - continue;
|
| - }
|
| - CFDE_CSSSelector* pNext = pSelector->GetNextSelector();
|
| - if (!pNext) {
|
| - FDE_CSSRuleData* pData = NewRuleData(pSelector, pDeclaration);
|
| - AddRuleTo(m_pUniversalRules, pData);
|
| - continue;
|
| - }
|
| - switch (pNext->GetType()) {
|
| - case FDE_CSSSELECTORTYPE_ID:
|
| - AddRuleTo(m_IDRules, pNext->GetNameHash(), pSelector, pDeclaration);
|
| - break;
|
| - case FDE_CSSSELECTORTYPE_Class:
|
| - AddRuleTo(m_ClassRules, pNext->GetNameHash(), pSelector,
|
| - pDeclaration);
|
| - break;
|
| - case FDE_CSSSELECTORTYPE_Descendant:
|
| - case FDE_CSSSELECTORTYPE_Element:
|
| - AddRuleTo(m_pUniversalRules, NewRuleData(pSelector, pDeclaration));
|
| - break;
|
| - default:
|
| - ASSERT(FALSE);
|
| - break;
|
| - }
|
| - }
|
| - } break;
|
| - case FDE_CSSRULETYPE_Media: {
|
| - IFDE_CSSMediaRule* pMediaRule = static_cast<IFDE_CSSMediaRule*>(pRule);
|
| - if (pMediaRule->GetMediaList() & dwMediaList) {
|
| - int32_t iRules = pMediaRule->CountRules();
|
| - for (int32_t i = 0; i < iRules; ++i) {
|
| - AddRulesFrom(pStyleSheet, pMediaRule->GetRule(i), dwMediaList,
|
| - pFontMgr);
|
| - }
|
| - }
|
| - } break;
|
| - default:
|
| - break;
|
| - }
|
| -}
|
| -
|
| -void CFDE_CSSRuleCollection::AddRuleTo(CFX_MapPtrToPtr& map,
|
| - uint32_t dwKey,
|
| - CFDE_CSSSelector* pSel,
|
| - CFDE_CSSDeclaration* pDecl) {
|
| - void* pKey = (void*)(uintptr_t)dwKey;
|
| - FDE_CSSRuleData* pData = NewRuleData(pSel, pDecl);
|
| - FDE_CSSRuleData* pList = nullptr;
|
| - if (!map.Lookup(pKey, (void*&)pList)) {
|
| - map.SetAt(pKey, pData);
|
| - } else if (AddRuleTo(pList, pData)) {
|
| - map.SetAt(pKey, pList);
|
| - }
|
| -}
|
| -
|
| -FX_BOOL CFDE_CSSRuleCollection::AddRuleTo(FDE_CSSRuleData*& pList,
|
| - FDE_CSSRuleData* pData) {
|
| - if (pList) {
|
| - pData->pNext = pList->pNext;
|
| - pList->pNext = pData;
|
| - return FALSE;
|
| - }
|
| -
|
| - pList = pData;
|
| - return TRUE;
|
| -}
|
| -
|
| -FDE_CSSRuleData* CFDE_CSSRuleCollection::NewRuleData(
|
| - CFDE_CSSSelector* pSel,
|
| - CFDE_CSSDeclaration* pDecl) {
|
| - return FXTARGET_NewWith(m_pStaticStore)
|
| - FDE_CSSRuleData(pSel, pDecl, ++m_iSelectors);
|
| -}
|
| -
|
| CFDE_CSSStyleSelector::CFDE_CSSStyleSelector()
|
| : m_pFontMgr(nullptr),
|
| m_fDefFontSize(12.0f),
|
|
|