| 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 #include "xfa/fde/css/fde_cssstylesheet.h" | 7 #include "xfa/fde/css/fde_cssstylesheet.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 pStyleSheet->Release(); | 71 pStyleSheet->Release(); |
| 72 pStyleSheet = nullptr; | 72 pStyleSheet = nullptr; |
| 73 } | 73 } |
| 74 return pStyleSheet; | 74 return pStyleSheet; |
| 75 } | 75 } |
| 76 | 76 |
| 77 CFDE_CSSStyleSheet::CFDE_CSSStyleSheet(uint32_t dwMediaList) | 77 CFDE_CSSStyleSheet::CFDE_CSSStyleSheet(uint32_t dwMediaList) |
| 78 : m_wCodePage(FX_CODEPAGE_UTF8), | 78 : m_wCodePage(FX_CODEPAGE_UTF8), |
| 79 m_wRefCount(1), | 79 m_wRefCount(1), |
| 80 m_dwMediaList(dwMediaList), | 80 m_dwMediaList(dwMediaList), |
| 81 m_pAllocator(nullptr) { | 81 m_pAllocator(nullptr), |
| 82 m_RuleArray(100) { |
| 82 ASSERT(m_dwMediaList > 0); | 83 ASSERT(m_dwMediaList > 0); |
| 83 } | 84 } |
| 84 | 85 |
| 85 CFDE_CSSStyleSheet::~CFDE_CSSStyleSheet() { | 86 CFDE_CSSStyleSheet::~CFDE_CSSStyleSheet() { |
| 86 Reset(); | 87 Reset(); |
| 87 } | 88 } |
| 88 | 89 |
| 89 void CFDE_CSSStyleSheet::Reset() { | 90 void CFDE_CSSStyleSheet::Reset() { |
| 90 for (int32_t i = m_RuleArray.GetSize() - 1; i >= 0; --i) { | 91 for (int32_t i = m_RuleArray.GetSize() - 1; i >= 0; --i) { |
| 91 IFDE_CSSRule* pRule = m_RuleArray.GetAt(i); | 92 IFDE_CSSRule* pRule = m_RuleArray.GetAt(i); |
| 92 switch (pRule->GetType()) { | 93 switch (pRule->GetType()) { |
| 93 case FDE_CSSRULETYPE_Style: | 94 case FDE_CSSRULETYPE_Style: |
| 94 static_cast<CFDE_CSSStyleRule*>(pRule)->~CFDE_CSSStyleRule(); | 95 static_cast<CFDE_CSSStyleRule*>(pRule)->~CFDE_CSSStyleRule(); |
| 95 break; | 96 break; |
| 96 case FDE_CSSRULETYPE_Media: | 97 case FDE_CSSRULETYPE_Media: |
| 97 static_cast<CFDE_CSSMediaRule*>(pRule)->~CFDE_CSSMediaRule(); | 98 static_cast<CFDE_CSSMediaRule*>(pRule)->~CFDE_CSSMediaRule(); |
| 98 break; | 99 break; |
| 99 case FDE_CSSRULETYPE_FontFace: | 100 case FDE_CSSRULETYPE_FontFace: |
| 100 static_cast<CFDE_CSSFontFaceRule*>(pRule)->~CFDE_CSSFontFaceRule(); | 101 static_cast<CFDE_CSSFontFaceRule*>(pRule)->~CFDE_CSSFontFaceRule(); |
| 101 break; | 102 break; |
| 102 default: | 103 default: |
| 103 ASSERT(FALSE); | 104 ASSERT(FALSE); |
| 104 break; | 105 break; |
| 105 } | 106 } |
| 106 } | 107 } |
| 107 m_RuleArray.RemoveAll(); | 108 m_RuleArray.RemoveAll(FALSE); |
| 108 m_Selectors.RemoveAll(); | 109 m_Selectors.RemoveAll(); |
| 109 m_StringCache.clear(); | 110 m_StringCache.clear(); |
| 110 delete m_pAllocator; | 111 delete m_pAllocator; |
| 111 m_pAllocator = nullptr; | 112 m_pAllocator = nullptr; |
| 112 } | 113 } |
| 113 | 114 |
| 114 uint32_t CFDE_CSSStyleSheet::Retain() { | 115 uint32_t CFDE_CSSStyleSheet::Retain() { |
| 115 return ++m_wRefCount; | 116 return ++m_wRefCount; |
| 116 } | 117 } |
| 117 | 118 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 break; | 235 break; |
| 235 case FDE_CSSSYNTAXSTATUS_DeclClose: | 236 case FDE_CSSSYNTAXSTATUS_DeclClose: |
| 236 return FDE_CSSSYNTAXSTATUS_None; | 237 return FDE_CSSSYNTAXSTATUS_None; |
| 237 FDE_CSSSWITCHDEFAULTS(); | 238 FDE_CSSSWITCHDEFAULTS(); |
| 238 } | 239 } |
| 239 } | 240 } |
| 240 } | 241 } |
| 241 | 242 |
| 242 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadStyleRule( | 243 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadStyleRule( |
| 243 CFDE_CSSSyntaxParser* pSyntax, | 244 CFDE_CSSSyntaxParser* pSyntax, |
| 244 CFDE_CSSRuleArray& ruleArray) { | 245 CFX_MassArrayTemplate<IFDE_CSSRule*>& ruleArray) { |
| 245 m_Selectors.RemoveAt(0, m_Selectors.GetSize()); | 246 m_Selectors.RemoveAt(0, m_Selectors.GetSize()); |
| 246 CFDE_CSSStyleRule* pStyleRule = nullptr; | 247 CFDE_CSSStyleRule* pStyleRule = nullptr; |
| 247 const FX_WCHAR* pszValue = nullptr; | 248 const FX_WCHAR* pszValue = nullptr; |
| 248 int32_t iValueLen = 0; | 249 int32_t iValueLen = 0; |
| 249 FDE_CSSPROPERTYARGS propertyArgs; | 250 FDE_CSSPROPERTYARGS propertyArgs; |
| 250 propertyArgs.pStaticStore = m_pAllocator; | 251 propertyArgs.pStaticStore = m_pAllocator; |
| 251 propertyArgs.pStringCache = &m_StringCache; | 252 propertyArgs.pStringCache = &m_StringCache; |
| 252 propertyArgs.pProperty = nullptr; | 253 propertyArgs.pProperty = nullptr; |
| 253 CFX_WideString wsName; | 254 CFX_WideString wsName; |
| 254 for (;;) { | 255 for (;;) { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 ruleArray.RemoveLast(1); | 300 ruleArray.RemoveLast(1); |
| 300 } | 301 } |
| 301 return FDE_CSSSYNTAXSTATUS_None; | 302 return FDE_CSSSYNTAXSTATUS_None; |
| 302 FDE_CSSSWITCHDEFAULTS(); | 303 FDE_CSSSWITCHDEFAULTS(); |
| 303 } | 304 } |
| 304 } | 305 } |
| 305 } | 306 } |
| 306 | 307 |
| 307 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadFontFaceRule( | 308 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadFontFaceRule( |
| 308 CFDE_CSSSyntaxParser* pSyntax, | 309 CFDE_CSSSyntaxParser* pSyntax, |
| 309 CFDE_CSSRuleArray& ruleArray) { | 310 CFX_MassArrayTemplate<IFDE_CSSRule*>& ruleArray) { |
| 310 CFDE_CSSFontFaceRule* pFontFaceRule = nullptr; | 311 CFDE_CSSFontFaceRule* pFontFaceRule = nullptr; |
| 311 const FX_WCHAR* pszValue = nullptr; | 312 const FX_WCHAR* pszValue = nullptr; |
| 312 int32_t iValueLen = 0; | 313 int32_t iValueLen = 0; |
| 313 FDE_CSSPROPERTYARGS propertyArgs; | 314 FDE_CSSPROPERTYARGS propertyArgs; |
| 314 propertyArgs.pStaticStore = m_pAllocator; | 315 propertyArgs.pStaticStore = m_pAllocator; |
| 315 propertyArgs.pStringCache = &m_StringCache; | 316 propertyArgs.pStringCache = &m_StringCache; |
| 316 propertyArgs.pProperty = nullptr; | 317 propertyArgs.pProperty = nullptr; |
| 317 for (;;) { | 318 for (;;) { |
| 318 switch (pSyntax->DoSyntaxParse()) { | 319 switch (pSyntax->DoSyntaxParse()) { |
| 319 case FDE_CSSSYNTAXSTATUS_PropertyName: | 320 case FDE_CSSSYNTAXSTATUS_PropertyName: |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 } | 386 } |
| 386 | 387 |
| 387 CFDE_CSSSelector* CFDE_CSSStyleRule::GetSelectorList(int32_t index) const { | 388 CFDE_CSSSelector* CFDE_CSSStyleRule::GetSelectorList(int32_t index) const { |
| 388 return m_ppSelector[index]; | 389 return m_ppSelector[index]; |
| 389 } | 390 } |
| 390 | 391 |
| 391 CFDE_CSSDeclaration* CFDE_CSSStyleRule::GetDeclaration() { | 392 CFDE_CSSDeclaration* CFDE_CSSStyleRule::GetDeclaration() { |
| 392 return &m_Declaration; | 393 return &m_Declaration; |
| 393 } | 394 } |
| 394 | 395 |
| 395 void CFDE_CSSStyleRule::SetSelector(IFX_MemoryAllocator* pStaticStore, | 396 void CFDE_CSSStyleRule::SetSelector( |
| 396 const CFDE_CSSSelectorArray& list) { | 397 IFX_MemoryAllocator* pStaticStore, |
| 398 const CFX_ArrayTemplate<CFDE_CSSSelector*>& list) { |
| 397 ASSERT(!m_ppSelector); | 399 ASSERT(!m_ppSelector); |
| 398 m_iSelectors = list.GetSize(); | 400 m_iSelectors = list.GetSize(); |
| 399 m_ppSelector = static_cast<CFDE_CSSSelector**>( | 401 m_ppSelector = static_cast<CFDE_CSSSelector**>( |
| 400 pStaticStore->Alloc(m_iSelectors * sizeof(CFDE_CSSSelector*))); | 402 pStaticStore->Alloc(m_iSelectors * sizeof(CFDE_CSSSelector*))); |
| 401 for (int32_t i = 0; i < m_iSelectors; ++i) { | 403 for (int32_t i = 0; i < m_iSelectors; ++i) { |
| 402 m_ppSelector[i] = list.GetAt(i); | 404 m_ppSelector[i] = list.GetAt(i); |
| 403 } | 405 } |
| 404 } | 406 } |
| 405 | 407 |
| 406 CFDE_CSSMediaRule::CFDE_CSSMediaRule(uint32_t dwMediaList) | 408 CFDE_CSSMediaRule::CFDE_CSSMediaRule(uint32_t dwMediaList) |
| 407 : m_dwMediaList(dwMediaList) {} | 409 : m_dwMediaList(dwMediaList), m_RuleArray(100) {} |
| 408 | 410 |
| 409 CFDE_CSSMediaRule::~CFDE_CSSMediaRule() { | 411 CFDE_CSSMediaRule::~CFDE_CSSMediaRule() { |
| 410 for (int32_t i = m_RuleArray.GetSize() - 1; i >= 0; --i) { | 412 for (int32_t i = m_RuleArray.GetSize() - 1; i >= 0; --i) { |
| 411 IFDE_CSSRule* pRule = m_RuleArray.GetAt(i); | 413 IFDE_CSSRule* pRule = m_RuleArray.GetAt(i); |
| 412 switch (pRule->GetType()) { | 414 switch (pRule->GetType()) { |
| 413 case FDE_CSSRULETYPE_Style: | 415 case FDE_CSSRULETYPE_Style: |
| 414 ((CFDE_CSSStyleRule*)pRule)->~CFDE_CSSStyleRule(); | 416 ((CFDE_CSSStyleRule*)pRule)->~CFDE_CSSStyleRule(); |
| 415 break; | 417 break; |
| 416 default: | 418 default: |
| 417 ASSERT(FALSE); | 419 ASSERT(FALSE); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 if (!pPersudoFirst) | 579 if (!pPersudoFirst) |
| 578 return pFirst; | 580 return pFirst; |
| 579 | 581 |
| 580 pPersudoLast->SetNext(pFirst); | 582 pPersudoLast->SetNext(pFirst); |
| 581 return pPersudoFirst; | 583 return pPersudoFirst; |
| 582 } | 584 } |
| 583 | 585 |
| 584 CFDE_CSSDeclaration* CFDE_CSSFontFaceRule::GetDeclaration() { | 586 CFDE_CSSDeclaration* CFDE_CSSFontFaceRule::GetDeclaration() { |
| 585 return &m_Declaration; | 587 return &m_Declaration; |
| 586 } | 588 } |
| OLD | NEW |