Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(329)

Side by Side Diff: xfa/fde/css/fde_cssstyleselector.cpp

Issue 1928763002: Cleanup IFDE_CSS interfaces. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fde/css/fde_cssstyleselector.h ('k') | xfa/fde/css/fde_cssstylesheet.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_cssstyleselector.h" 7 #include "xfa/fde/css/fde_cssstyleselector.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
11 #include "xfa/fde/css/fde_csscache.h" 11 #include "xfa/fde/css/fde_csscache.h"
12 #include "xfa/fde/css/fde_cssdeclaration.h" 12 #include "xfa/fde/css/fde_cssdeclaration.h"
13 #include "xfa/fde/css/fde_cssstylesheet.h"
14 #include "xfa/fde/css/fde_csssyntax.h"
13 #include "xfa/fxfa/app/xfa_textlayout.h" 15 #include "xfa/fxfa/app/xfa_textlayout.h"
14 16
15 #define FDE_CSSUNIVERSALHASH ('*') 17 #define FDE_CSSUNIVERSALHASH ('*')
16 18
17 int32_t CFDE_CSSCounterStyle::FindIndex(const FX_WCHAR* pszIdentifier) { 19 int32_t CFDE_CSSCounterStyle::FindIndex(const FX_WCHAR* pszIdentifier) {
18 int32_t iCount = m_arrCounterData.GetSize(); 20 int32_t iCount = m_arrCounterData.GetSize();
19 for (int32_t i = 0; i < iCount; i++) { 21 for (int32_t i = 0; i < iCount; i++) {
20 if (FXSYS_wcscmp(pszIdentifier, m_arrCounterData.ElementAt(i).m_pszIdent) == 22 if (FXSYS_wcscmp(pszIdentifier, m_arrCounterData.ElementAt(i).m_pszIdent) ==
21 0) { 23 0) {
22 return i; 24 return i;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 void CFDE_CSSCounterStyle::UpdateIndex() { 73 void CFDE_CSSCounterStyle::UpdateIndex() {
72 if (!m_bIndexDirty) { 74 if (!m_bIndexDirty) {
73 return; 75 return;
74 } 76 }
75 m_arrCounterData.RemoveAll(); 77 m_arrCounterData.RemoveAll();
76 DoUpdateIndex(m_pCounterInc); 78 DoUpdateIndex(m_pCounterInc);
77 DoUpdateIndex(m_pCounterReset); 79 DoUpdateIndex(m_pCounterReset);
78 m_bIndexDirty = FALSE; 80 m_bIndexDirty = FALSE;
79 } 81 }
80 82
81 FDE_CSSRuleData::FDE_CSSRuleData(IFDE_CSSSelector* pSel, 83 FDE_CSSRuleData::FDE_CSSRuleData(CFDE_CSSSelector* pSel,
82 IFDE_CSSDeclaration* pDecl, 84 CFDE_CSSDeclaration* pDecl,
83 uint32_t dwPos) 85 uint32_t dwPos)
84 : pSelector(pSel), pDeclaration(pDecl), dwPriority(dwPos), pNext(NULL) { 86 : pSelector(pSel), pDeclaration(pDecl), dwPriority(dwPos), pNext(NULL) {
85 static const uint32_t s_Specific[5] = {0x00010000, 0x00010000, 0x00100000, 87 static const uint32_t s_Specific[5] = {0x00010000, 0x00010000, 0x00100000,
86 0x00100000, 0x01000000}; 88 0x00100000, 0x01000000};
87 for (; pSel != NULL; pSel = pSel->GetNextSelector()) { 89 for (; pSel != NULL; pSel = pSel->GetNextSelector()) {
88 FDE_CSSSELECTORTYPE eType = pSel->GetType(); 90 FDE_CSSSELECTORTYPE eType = pSel->GetType();
89 if (eType > FDE_CSSSELECTORTYPE_Descendant || 91 if (eType > FDE_CSSSELECTORTYPE_Descendant ||
90 pSel->GetNameHash() != FDE_CSSUNIVERSALHASH) { 92 pSel->GetNameHash() != FDE_CSSUNIVERSALHASH) {
91 dwPriority += s_Specific[eType]; 93 dwPriority += s_Specific[eType];
92 } 94 }
(...skipping 21 matching lines...) Expand all
114 } 116 }
115 } 117 }
116 } 118 }
117 void CFDE_CSSRuleCollection::AddRulesFrom(IFDE_CSSStyleSheet* pStyleSheet, 119 void CFDE_CSSRuleCollection::AddRulesFrom(IFDE_CSSStyleSheet* pStyleSheet,
118 IFDE_CSSRule* pRule, 120 IFDE_CSSRule* pRule,
119 uint32_t dwMediaList, 121 uint32_t dwMediaList,
120 IFX_FontMgr* pFontMgr) { 122 IFX_FontMgr* pFontMgr) {
121 switch (pRule->GetType()) { 123 switch (pRule->GetType()) {
122 case FDE_CSSRULETYPE_Style: { 124 case FDE_CSSRULETYPE_Style: {
123 IFDE_CSSStyleRule* pStyleRule = (IFDE_CSSStyleRule*)pRule; 125 IFDE_CSSStyleRule* pStyleRule = (IFDE_CSSStyleRule*)pRule;
124 IFDE_CSSDeclaration* pDeclaration = pStyleRule->GetDeclaration(); 126 CFDE_CSSDeclaration* pDeclaration = pStyleRule->GetDeclaration();
125 int32_t iSelectors = pStyleRule->CountSelectorLists(); 127 int32_t iSelectors = pStyleRule->CountSelectorLists();
126 for (int32_t i = 0; i < iSelectors; ++i) { 128 for (int32_t i = 0; i < iSelectors; ++i) {
127 IFDE_CSSSelector* pSelector = pStyleRule->GetSelectorList(i); 129 CFDE_CSSSelector* pSelector = pStyleRule->GetSelectorList(i);
128 if (pSelector->GetType() == FDE_CSSSELECTORTYPE_Persudo) { 130 if (pSelector->GetType() == FDE_CSSSELECTORTYPE_Persudo) {
129 FDE_CSSRuleData* pData = NewRuleData(pSelector, pDeclaration); 131 FDE_CSSRuleData* pData = NewRuleData(pSelector, pDeclaration);
130 AddRuleTo(m_pPersudoRules, pData); 132 AddRuleTo(m_pPersudoRules, pData);
131 continue; 133 continue;
132 } 134 }
133 if (pSelector->GetNameHash() != FDE_CSSUNIVERSALHASH) { 135 if (pSelector->GetNameHash() != FDE_CSSUNIVERSALHASH) {
134 AddRuleTo(m_TagRules, pSelector->GetNameHash(), pSelector, 136 AddRuleTo(m_TagRules, pSelector->GetNameHash(), pSelector,
135 pDeclaration); 137 pDeclaration);
136 continue; 138 continue;
137 } 139 }
138 IFDE_CSSSelector* pNext = pSelector->GetNextSelector(); 140 CFDE_CSSSelector* pNext = pSelector->GetNextSelector();
139 if (pNext == NULL) { 141 if (!pNext) {
140 FDE_CSSRuleData* pData = NewRuleData(pSelector, pDeclaration); 142 FDE_CSSRuleData* pData = NewRuleData(pSelector, pDeclaration);
141 AddRuleTo(m_pUniversalRules, pData); 143 AddRuleTo(m_pUniversalRules, pData);
142 continue; 144 continue;
143 } 145 }
144 switch (pNext->GetType()) { 146 switch (pNext->GetType()) {
145 case FDE_CSSSELECTORTYPE_ID: 147 case FDE_CSSSELECTORTYPE_ID:
146 AddRuleTo(m_IDRules, pNext->GetNameHash(), pSelector, pDeclaration); 148 AddRuleTo(m_IDRules, pNext->GetNameHash(), pSelector, pDeclaration);
147 break; 149 break;
148 case FDE_CSSSELECTORTYPE_Class: 150 case FDE_CSSSELECTORTYPE_Class:
149 AddRuleTo(m_ClassRules, pNext->GetNameHash(), pSelector, 151 AddRuleTo(m_ClassRules, pNext->GetNameHash(), pSelector,
(...skipping 18 matching lines...) Expand all
168 pFontMgr); 170 pFontMgr);
169 } 171 }
170 } 172 }
171 } break; 173 } break;
172 default: 174 default:
173 break; 175 break;
174 } 176 }
175 } 177 }
176 void CFDE_CSSRuleCollection::AddRuleTo(CFX_MapPtrToPtr& map, 178 void CFDE_CSSRuleCollection::AddRuleTo(CFX_MapPtrToPtr& map,
177 uint32_t dwKey, 179 uint32_t dwKey,
178 IFDE_CSSSelector* pSel, 180 CFDE_CSSSelector* pSel,
179 IFDE_CSSDeclaration* pDecl) { 181 CFDE_CSSDeclaration* pDecl) {
180 void* pKey = (void*)(uintptr_t)dwKey; 182 void* pKey = (void*)(uintptr_t)dwKey;
181 FDE_CSSRuleData* pData = NewRuleData(pSel, pDecl); 183 FDE_CSSRuleData* pData = NewRuleData(pSel, pDecl);
182 FDE_CSSRuleData* pList = NULL; 184 FDE_CSSRuleData* pList = NULL;
183 if (!map.Lookup(pKey, (void*&)pList)) { 185 if (!map.Lookup(pKey, (void*&)pList)) {
184 map.SetAt(pKey, pData); 186 map.SetAt(pKey, pData);
185 } else if (AddRuleTo(pList, pData)) { 187 } else if (AddRuleTo(pList, pData)) {
186 map.SetAt(pKey, pList); 188 map.SetAt(pKey, pList);
187 } 189 }
188 } 190 }
189 191
190 FX_BOOL CFDE_CSSRuleCollection::AddRuleTo(FDE_CSSRuleData*& pList, 192 FX_BOOL CFDE_CSSRuleCollection::AddRuleTo(FDE_CSSRuleData*& pList,
191 FDE_CSSRuleData* pData) { 193 FDE_CSSRuleData* pData) {
192 if (pList) { 194 if (pList) {
193 pData->pNext = pList->pNext; 195 pData->pNext = pList->pNext;
194 pList->pNext = pData; 196 pList->pNext = pData;
195 return FALSE; 197 return FALSE;
196 } 198 }
197 199
198 pList = pData; 200 pList = pData;
199 return TRUE; 201 return TRUE;
200 } 202 }
201 203
202 FDE_CSSRuleData* CFDE_CSSRuleCollection::NewRuleData( 204 FDE_CSSRuleData* CFDE_CSSRuleCollection::NewRuleData(
203 IFDE_CSSSelector* pSel, 205 CFDE_CSSSelector* pSel,
204 IFDE_CSSDeclaration* pDecl) { 206 CFDE_CSSDeclaration* pDecl) {
205 return FXTARGET_NewWith(m_pStaticStore) 207 return FXTARGET_NewWith(m_pStaticStore)
206 FDE_CSSRuleData(pSel, pDecl, ++m_iSelectors); 208 FDE_CSSRuleData(pSel, pDecl, ++m_iSelectors);
207 } 209 }
208 210
209 IFDE_CSSStyleSelector* IFDE_CSSStyleSelector::Create() {
210 return new CFDE_CSSStyleSelector;
211 }
212 CFDE_CSSStyleSelector::CFDE_CSSStyleSelector() 211 CFDE_CSSStyleSelector::CFDE_CSSStyleSelector()
213 : m_pFontMgr(NULL), 212 : m_pFontMgr(NULL),
214 m_fDefFontSize(12.0f), 213 m_fDefFontSize(12.0f),
215 m_pRuleDataStore(NULL), 214 m_pRuleDataStore(NULL),
216 m_pInlineStyleStore(NULL), 215 m_pInlineStyleStore(NULL),
217 m_pFixedStyleStore(NULL), 216 m_pFixedStyleStore(NULL),
218 m_pAccelerator(NULL) { 217 m_pAccelerator(NULL) {
219 m_ePriorities[FDE_CSSSTYLESHEETPRIORITY_High] = FDE_CSSSTYLESHEETGROUP_Author; 218 m_ePriorities[FDE_CSSSTYLESHEETPRIORITY_High] = FDE_CSSSTYLESHEETGROUP_Author;
220 m_ePriorities[FDE_CSSSTYLESHEETPRIORITY_Mid] = FDE_CSSSTYLESHEETGROUP_User; 219 m_ePriorities[FDE_CSSSTYLESHEETPRIORITY_Mid] = FDE_CSSSTYLESHEETGROUP_User;
221 m_ePriorities[FDE_CSSSTYLESHEETPRIORITY_Low] = 220 m_ePriorities[FDE_CSSSTYLESHEETPRIORITY_Low] =
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 FDE_CSSRuleData* pList, 359 FDE_CSSRuleData* pList,
361 FDE_CSSPERSUDO ePersudoType) { 360 FDE_CSSPERSUDO ePersudoType) {
362 while (pList) { 361 while (pList) {
363 if (MatchSelector(pCache, pList->pSelector, ePersudoType)) 362 if (MatchSelector(pCache, pList->pSelector, ePersudoType))
364 m_MatchedRules.push_back(pList); 363 m_MatchedRules.push_back(pList);
365 pList = pList->pNext; 364 pList = pList->pNext;
366 } 365 }
367 } 366 }
368 367
369 FX_BOOL CFDE_CSSStyleSelector::MatchSelector(FDE_CSSTagCache* pCache, 368 FX_BOOL CFDE_CSSStyleSelector::MatchSelector(FDE_CSSTagCache* pCache,
370 IFDE_CSSSelector* pSel, 369 CFDE_CSSSelector* pSel,
371 FDE_CSSPERSUDO ePersudoType) { 370 FDE_CSSPERSUDO ePersudoType) {
372 uint32_t dwHash; 371 uint32_t dwHash;
373 while (pSel != NULL && pCache != NULL) { 372 while (pSel != NULL && pCache != NULL) {
374 switch (pSel->GetType()) { 373 switch (pSel->GetType()) {
375 case FDE_CSSSELECTORTYPE_Descendant: 374 case FDE_CSSSELECTORTYPE_Descendant:
376 dwHash = pSel->GetNameHash(); 375 dwHash = pSel->GetNameHash();
377 while ((pCache = pCache->GetParent()) != NULL) { 376 while ((pCache = pCache->GetParent()) != NULL) {
378 if (dwHash != FDE_CSSUNIVERSALHASH && dwHash != pCache->HashTag()) { 377 if (dwHash != FDE_CSSUNIVERSALHASH && dwHash != pCache->HashTag()) {
379 continue; 378 continue;
380 } 379 }
(...skipping 30 matching lines...) Expand all
411 ASSERT(FALSE); 410 ASSERT(FALSE);
412 break; 411 break;
413 } 412 }
414 pSel = pSel->GetNextSelector(); 413 pSel = pSel->GetNextSelector();
415 } 414 }
416 return pSel == NULL && pCache != NULL; 415 return pSel == NULL && pCache != NULL;
417 } 416 }
418 417
419 void CFDE_CSSStyleSelector::ComputeStyle( 418 void CFDE_CSSStyleSelector::ComputeStyle(
420 CXFA_CSSTagProvider* pTag, 419 CXFA_CSSTagProvider* pTag,
421 const IFDE_CSSDeclaration** ppDeclArray, 420 const CFDE_CSSDeclaration** ppDeclArray,
422 int32_t iDeclCount, 421 int32_t iDeclCount,
423 IFDE_CSSComputedStyle* pDestStyle) { 422 IFDE_CSSComputedStyle* pDestStyle) {
424 ASSERT(iDeclCount >= 0); 423 ASSERT(iDeclCount >= 0);
425 ASSERT(pDestStyle); 424 ASSERT(pDestStyle);
426 425
427 static const uint32_t s_dwStyleHash = FX_HashCode_GetW(L"style", true); 426 static const uint32_t s_dwStyleHash = FX_HashCode_GetW(L"style", true);
428 static const uint32_t s_dwAlignHash = FX_HashCode_GetW(L"align", true); 427 static const uint32_t s_dwAlignHash = FX_HashCode_GetW(L"align", true);
429 428
430 if (!pTag->empty()) { 429 if (!pTag->empty()) {
431 if (!m_pInlineStyleStore) 430 if (!m_pInlineStyleStore)
(...skipping 17 matching lines...) Expand all
449 args.pStringCache = nullptr; 448 args.pStringCache = nullptr;
450 args.pStaticStore = m_pInlineStyleStore; 449 args.pStaticStore = m_pInlineStyleStore;
451 args.pProperty = FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY_TextAlign); 450 args.pProperty = FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY_TextAlign);
452 pDecl->AddProperty(&args, wsValue.c_str(), wsValue.GetLength()); 451 pDecl->AddProperty(&args, wsValue.c_str(), wsValue.GetLength());
453 } 452 }
454 } 453 }
455 454
456 if (pDecl) { 455 if (pDecl) {
457 CFDE_CSSDeclarationArray decls; 456 CFDE_CSSDeclarationArray decls;
458 decls.SetSize(iDeclCount + 1); 457 decls.SetSize(iDeclCount + 1);
459 IFDE_CSSDeclaration** ppInline = decls.GetData(); 458 CFDE_CSSDeclaration** ppInline = decls.GetData();
460 FXSYS_memcpy(ppInline, ppDeclArray, 459 FXSYS_memcpy(ppInline, ppDeclArray,
461 iDeclCount * sizeof(IFDE_CSSDeclaration*)); 460 iDeclCount * sizeof(CFDE_CSSDeclaration*));
462 ppInline[iDeclCount++] = pDecl; 461 ppInline[iDeclCount++] = pDecl;
463 ApplyDeclarations(TRUE, (const IFDE_CSSDeclaration**)ppInline, iDeclCount, 462 ApplyDeclarations(TRUE, const_cast<const CFDE_CSSDeclaration**>(ppInline),
464 pDestStyle); 463 iDeclCount, pDestStyle);
465 ApplyDeclarations(FALSE, (const IFDE_CSSDeclaration**)ppInline, 464 ApplyDeclarations(FALSE,
465 const_cast<const CFDE_CSSDeclaration**>(ppInline),
466 iDeclCount, pDestStyle); 466 iDeclCount, pDestStyle);
467 return; 467 return;
468 } 468 }
469 } 469 }
470 470
471 if (iDeclCount > 0) { 471 if (iDeclCount > 0) {
472 ASSERT(ppDeclArray); 472 ASSERT(ppDeclArray);
473 473
474 ApplyDeclarations(TRUE, ppDeclArray, iDeclCount, pDestStyle); 474 ApplyDeclarations(TRUE, ppDeclArray, iDeclCount, pDestStyle);
475 ApplyDeclarations(FALSE, ppDeclArray, iDeclCount, pDestStyle); 475 ApplyDeclarations(FALSE, ppDeclArray, iDeclCount, pDestStyle);
476 } 476 }
477 } 477 }
478 478
479 void CFDE_CSSStyleSelector::ApplyDeclarations( 479 void CFDE_CSSStyleSelector::ApplyDeclarations(
480 FX_BOOL bPriority, 480 FX_BOOL bPriority,
481 const IFDE_CSSDeclaration** ppDeclArray, 481 const CFDE_CSSDeclaration** ppDeclArray,
482 int32_t iDeclCount, 482 int32_t iDeclCount,
483 IFDE_CSSComputedStyle* pDestStyle) { 483 IFDE_CSSComputedStyle* pDestStyle) {
484 CFDE_CSSComputedStyle* pComputedStyle = (CFDE_CSSComputedStyle*)pDestStyle; 484 CFDE_CSSComputedStyle* pComputedStyle = (CFDE_CSSComputedStyle*)pDestStyle;
485 IFDE_CSSValue* pVal; 485 IFDE_CSSValue* pVal;
486 FX_BOOL bImportant; 486 FX_BOOL bImportant;
487 int32_t i; 487 int32_t i;
488 if (bPriority) { 488 if (bPriority) {
489 IFDE_CSSValue *pLastest = NULL, *pImportant = NULL; 489 IFDE_CSSValue *pLastest = NULL, *pImportant = NULL;
490 for (i = 0; i < iDeclCount; ++i) { 490 for (i = 0; i < iDeclCount; ++i) {
491 pVal = ppDeclArray[i]->GetProperty(FDE_CSSPROPERTY_FontSize, bImportant); 491 pVal = ppDeclArray[i]->GetProperty(FDE_CSSPROPERTY_FontSize, bImportant);
492 if (pVal == NULL) { 492 if (pVal == NULL) {
493 continue; 493 continue;
494 } else if (bImportant) { 494 } else if (bImportant) {
495 pImportant = pVal; 495 pImportant = pVal;
496 } else { 496 } else {
497 pLastest = pVal; 497 pLastest = pVal;
498 } 498 }
499 } 499 }
500 if (pImportant) { 500 if (pImportant) {
501 ApplyProperty(FDE_CSSPROPERTY_FontSize, pImportant, pComputedStyle); 501 ApplyProperty(FDE_CSSPROPERTY_FontSize, pImportant, pComputedStyle);
502 } else if (pLastest) { 502 } else if (pLastest) {
503 ApplyProperty(FDE_CSSPROPERTY_FontSize, pLastest, pComputedStyle); 503 ApplyProperty(FDE_CSSPROPERTY_FontSize, pLastest, pComputedStyle);
504 } 504 }
505 } else { 505 } else {
506 CFDE_CSSDeclarationArray importants; 506 CFDE_CSSDeclarationArray importants;
507 const IFDE_CSSDeclaration* pDecl = NULL; 507 const CFDE_CSSDeclaration* pDecl = nullptr;
508 FDE_CSSPROPERTY eProp; 508 FDE_CSSPROPERTY eProp;
509 FX_POSITION pos; 509 FX_POSITION pos;
510 for (i = 0; i < iDeclCount; ++i) { 510 for (i = 0; i < iDeclCount; ++i) {
511 pDecl = ppDeclArray[i]; 511 pDecl = ppDeclArray[i];
512 pos = pDecl->GetStartPosition(); 512 pos = pDecl->GetStartPosition();
513 while (pos != NULL) { 513 while (pos != NULL) {
514 pDecl->GetNextProperty(pos, eProp, pVal, bImportant); 514 pDecl->GetNextProperty(pos, eProp, pVal, bImportant);
515 if (eProp == FDE_CSSPROPERTY_FontSize) { 515 if (eProp == FDE_CSSPROPERTY_FontSize) {
516 continue; 516 continue;
517 } else if (!bImportant) { 517 } else if (!bImportant) {
518 ApplyProperty(eProp, pVal, pComputedStyle); 518 ApplyProperty(eProp, pVal, pComputedStyle);
519 } else if (importants.GetSize() == 0 || 519 } else if (importants.GetSize() == 0 ||
520 importants[importants.GetUpperBound()] != pDecl) { 520 importants[importants.GetUpperBound()] != pDecl) {
521 importants.Add((IFDE_CSSDeclaration*)pDecl); 521 importants.Add(const_cast<CFDE_CSSDeclaration*>(pDecl));
522 } 522 }
523 } 523 }
524 } 524 }
525 iDeclCount = importants.GetSize(); 525 iDeclCount = importants.GetSize();
526 for (i = 0; i < iDeclCount; ++i) { 526 for (i = 0; i < iDeclCount; ++i) {
527 pDecl = importants[i]; 527 pDecl = importants[i];
528 pos = pDecl->GetStartPosition(); 528 pos = pDecl->GetStartPosition();
529 while (pos != NULL) { 529 while (pos != NULL) {
530 pDecl->GetNextProperty(pos, eProp, pVal, bImportant); 530 pDecl->GetNextProperty(pos, eProp, pVal, bImportant);
531 if (bImportant && eProp != FDE_CSSPROPERTY_FontSize) { 531 if (bImportant && eProp != FDE_CSSPROPERTY_FontSize) {
532 ApplyProperty(eProp, pVal, pComputedStyle); 532 ApplyProperty(eProp, pVal, pComputedStyle);
533 } 533 }
534 } 534 }
535 } 535 }
536 CFX_WideString wsName, wsValue; 536 CFX_WideString wsName, wsValue;
537 pos = pDecl->GetStartCustom(); 537 pos = pDecl->GetStartCustom();
538 while (pos) { 538 while (pos) {
539 pDecl->GetNextCustom(pos, wsName, wsValue); 539 pDecl->GetNextCustom(pos, wsName, wsValue);
540 pComputedStyle->AddCustomStyle(wsName, wsValue); 540 pComputedStyle->AddCustomStyle(wsName, wsValue);
541 } 541 }
542 } 542 }
543 } 543 }
544 void CFDE_CSSStyleSelector::AppendInlineStyle(CFDE_CSSDeclaration* pDecl, 544 void CFDE_CSSStyleSelector::AppendInlineStyle(CFDE_CSSDeclaration* pDecl,
545 const FX_WCHAR* psz, 545 const FX_WCHAR* psz,
546 int32_t iLen) { 546 int32_t iLen) {
547 ASSERT(pDecl != NULL && psz != NULL && iLen > 0); 547 ASSERT(pDecl && psz && iLen > 0);
548 IFDE_CSSSyntaxParser* pSyntax = IFDE_CSSSyntaxParser::Create(); 548
549 if (pSyntax == NULL) { 549 CFDE_CSSSyntaxParser* pSyntax = new CFDE_CSSSyntaxParser;
550 return;
551 }
552 if (pSyntax->Init(psz, iLen, 32, TRUE)) { 550 if (pSyntax->Init(psz, iLen, 32, TRUE)) {
553 int32_t iLen; 551 int32_t iLen;
554 const FX_WCHAR* psz; 552 const FX_WCHAR* psz;
555 FDE_CSSPROPERTYARGS args; 553 FDE_CSSPROPERTYARGS args;
556 args.pStringCache = NULL; 554 args.pStringCache = NULL;
557 args.pStaticStore = m_pInlineStyleStore; 555 args.pStaticStore = m_pInlineStyleStore;
558 args.pProperty = NULL; 556 args.pProperty = NULL;
559 CFX_WideString wsName; 557 CFX_WideString wsName;
560 for (;;) { 558 for (;;) {
561 FDE_CSSSYNTAXSTATUS eStatus = pSyntax->DoSyntaxParse(); 559 FDE_CSSSYNTAXSTATUS eStatus = pSyntax->DoSyntaxParse();
(...skipping 1222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1784 return FDE_CSSTEXTTRANSFORM_LowerCase; 1782 return FDE_CSSTEXTTRANSFORM_LowerCase;
1785 default: 1783 default:
1786 return FDE_CSSTEXTTRANSFORM_None; 1784 return FDE_CSSTEXTTRANSFORM_None;
1787 } 1785 }
1788 } 1786 }
1789 FDE_CSSFONTVARIANT CFDE_CSSStyleSelector::ToFontVariant( 1787 FDE_CSSFONTVARIANT CFDE_CSSStyleSelector::ToFontVariant(
1790 FDE_CSSPROPERTYVALUE eValue) { 1788 FDE_CSSPROPERTYVALUE eValue) {
1791 return eValue == FDE_CSSPROPERTYVALUE_SmallCaps ? FDE_CSSFONTVARIANT_SmallCaps 1789 return eValue == FDE_CSSPROPERTYVALUE_SmallCaps ? FDE_CSSFONTVARIANT_SmallCaps
1792 : FDE_CSSFONTVARIANT_Normal; 1790 : FDE_CSSFONTVARIANT_Normal;
1793 } 1791 }
OLDNEW
« no previous file with comments | « xfa/fde/css/fde_cssstyleselector.h ('k') | xfa/fde/css/fde_cssstylesheet.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698