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 "xfa/fde/css/fde_cssdatatable.h" | 9 #include "xfa/fde/css/fde_cssdatatable.h" |
10 #include "xfa/fde/css/fde_csssyntax.h" | 10 #include "xfa/fde/css/fde_csssyntax.h" |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadMediaRule( | 189 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadMediaRule( |
190 IFDE_CSSSyntaxParser* pSyntax) { | 190 IFDE_CSSSyntaxParser* pSyntax) { |
191 uint32_t dwMediaList = 0; | 191 uint32_t dwMediaList = 0; |
192 CFDE_CSSMediaRule* pMediaRule = NULL; | 192 CFDE_CSSMediaRule* pMediaRule = NULL; |
193 for (;;) { | 193 for (;;) { |
194 switch (pSyntax->DoSyntaxParse()) { | 194 switch (pSyntax->DoSyntaxParse()) { |
195 case FDE_CSSSYNTAXSTATUS_MediaType: { | 195 case FDE_CSSSYNTAXSTATUS_MediaType: { |
196 int32_t iLen; | 196 int32_t iLen; |
197 const FX_WCHAR* psz = pSyntax->GetCurrentString(iLen); | 197 const FX_WCHAR* psz = pSyntax->GetCurrentString(iLen); |
198 FDE_LPCCSSMEDIATYPETABLE pMediaType = | 198 FDE_LPCCSSMEDIATYPETABLE pMediaType = |
199 FDE_GetCSSMediaTypeByName(psz, iLen); | 199 FDE_GetCSSMediaTypeByName(CFX_WideStringC(psz, iLen)); |
200 if (pMediaType != NULL) { | 200 if (pMediaType != NULL) { |
201 dwMediaList |= pMediaType->wValue; | 201 dwMediaList |= pMediaType->wValue; |
202 } | 202 } |
203 } break; | 203 } break; |
204 case FDE_CSSSYNTAXSTATUS_StyleRule: | 204 case FDE_CSSSYNTAXSTATUS_StyleRule: |
205 if (pMediaRule == NULL) { | 205 if (pMediaRule == NULL) { |
206 SkipRuleSet(pSyntax); | 206 SkipRuleSet(pSyntax); |
207 } else { | 207 } else { |
208 FDE_CSSSYNTAXSTATUS eStatus = | 208 FDE_CSSSYNTAXSTATUS eStatus = |
209 LoadStyleRule(pSyntax, pMediaRule->GetArray()); | 209 LoadStyleRule(pSyntax, pMediaRule->GetArray()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 case FDE_CSSSYNTAXSTATUS_Selector: { | 242 case FDE_CSSSYNTAXSTATUS_Selector: { |
243 pszValue = pSyntax->GetCurrentString(iValueLen); | 243 pszValue = pSyntax->GetCurrentString(iValueLen); |
244 IFDE_CSSSelector* pSelector = | 244 IFDE_CSSSelector* pSelector = |
245 CFDE_CSSSelector::FromString(m_pAllocator, pszValue, iValueLen); | 245 CFDE_CSSSelector::FromString(m_pAllocator, pszValue, iValueLen); |
246 if (pSelector != NULL) { | 246 if (pSelector != NULL) { |
247 m_Selectors.Add(pSelector); | 247 m_Selectors.Add(pSelector); |
248 } | 248 } |
249 } break; | 249 } break; |
250 case FDE_CSSSYNTAXSTATUS_PropertyName: | 250 case FDE_CSSSYNTAXSTATUS_PropertyName: |
251 pszValue = pSyntax->GetCurrentString(iValueLen); | 251 pszValue = pSyntax->GetCurrentString(iValueLen); |
252 propertyArgs.pProperty = FDE_GetCSSPropertyByName(pszValue, iValueLen); | 252 propertyArgs.pProperty = |
| 253 FDE_GetCSSPropertyByName(CFX_WideStringC(pszValue, iValueLen)); |
253 if (propertyArgs.pProperty == NULL) { | 254 if (propertyArgs.pProperty == NULL) { |
254 wsName = CFX_WideStringC(pszValue, iValueLen); | 255 wsName = CFX_WideStringC(pszValue, iValueLen); |
255 } | 256 } |
256 break; | 257 break; |
257 case FDE_CSSSYNTAXSTATUS_PropertyValue: | 258 case FDE_CSSSYNTAXSTATUS_PropertyValue: |
258 if (propertyArgs.pProperty != NULL) { | 259 if (propertyArgs.pProperty != NULL) { |
259 pszValue = pSyntax->GetCurrentString(iValueLen); | 260 pszValue = pSyntax->GetCurrentString(iValueLen); |
260 if (iValueLen > 0) { | 261 if (iValueLen > 0) { |
261 pStyleRule->GetDeclImp().AddProperty(&propertyArgs, pszValue, | 262 pStyleRule->GetDeclImp().AddProperty(&propertyArgs, pszValue, |
262 iValueLen); | 263 iValueLen); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 const FX_WCHAR* pszValue = NULL; | 299 const FX_WCHAR* pszValue = NULL; |
299 int32_t iValueLen = 0; | 300 int32_t iValueLen = 0; |
300 FDE_CSSPROPERTYARGS propertyArgs; | 301 FDE_CSSPROPERTYARGS propertyArgs; |
301 propertyArgs.pStaticStore = m_pAllocator; | 302 propertyArgs.pStaticStore = m_pAllocator; |
302 propertyArgs.pStringCache = &m_StringCache; | 303 propertyArgs.pStringCache = &m_StringCache; |
303 propertyArgs.pProperty = NULL; | 304 propertyArgs.pProperty = NULL; |
304 for (;;) { | 305 for (;;) { |
305 switch (pSyntax->DoSyntaxParse()) { | 306 switch (pSyntax->DoSyntaxParse()) { |
306 case FDE_CSSSYNTAXSTATUS_PropertyName: | 307 case FDE_CSSSYNTAXSTATUS_PropertyName: |
307 pszValue = pSyntax->GetCurrentString(iValueLen); | 308 pszValue = pSyntax->GetCurrentString(iValueLen); |
308 propertyArgs.pProperty = FDE_GetCSSPropertyByName(pszValue, iValueLen); | 309 propertyArgs.pProperty = |
| 310 FDE_GetCSSPropertyByName(CFX_WideStringC(pszValue, iValueLen)); |
309 break; | 311 break; |
310 case FDE_CSSSYNTAXSTATUS_PropertyValue: | 312 case FDE_CSSSYNTAXSTATUS_PropertyValue: |
311 if (propertyArgs.pProperty != NULL) { | 313 if (propertyArgs.pProperty != NULL) { |
312 pszValue = pSyntax->GetCurrentString(iValueLen); | 314 pszValue = pSyntax->GetCurrentString(iValueLen); |
313 if (iValueLen > 0) { | 315 if (iValueLen > 0) { |
314 pFontFaceRule->GetDeclImp().AddProperty(&propertyArgs, pszValue, | 316 pFontFaceRule->GetDeclImp().AddProperty(&propertyArgs, pszValue, |
315 iValueLen); | 317 iValueLen); |
316 } | 318 } |
317 } | 319 } |
318 break; | 320 break; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 return NULL; | 429 return NULL; |
428 } | 430 } |
429 } | 431 } |
430 CFDE_CSSSelector *pFirst = NULL, *pLast = NULL; | 432 CFDE_CSSSelector *pFirst = NULL, *pLast = NULL; |
431 CFDE_CSSSelector *pPersudoFirst = NULL, *pPersudoLast = NULL; | 433 CFDE_CSSSelector *pPersudoFirst = NULL, *pPersudoLast = NULL; |
432 for (psz = pStart; psz < pEnd;) { | 434 for (psz = pStart; psz < pEnd;) { |
433 FX_WCHAR wch = *psz; | 435 FX_WCHAR wch = *psz; |
434 if (wch == '.' || wch == '#') { | 436 if (wch == '.' || wch == '#') { |
435 if (psz == pStart || psz[-1] == ' ') { | 437 if (psz == pStart || psz[-1] == ' ') { |
436 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) | 438 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) |
437 CFDE_CSSSelector(FDE_CSSSELECTORTYPE_Element, L"*", 1, TRUE); | 439 CFDE_CSSSelector(FDE_CSSSELECTORTYPE_Element, L"*", 1, true); |
438 if (p == NULL) { | 440 if (p == NULL) { |
439 return NULL; | 441 return NULL; |
440 } | 442 } |
441 if (pFirst != NULL) { | 443 if (pFirst != NULL) { |
442 pFirst->SetType(FDE_CSSSELECTORTYPE_Descendant); | 444 pFirst->SetType(FDE_CSSSELECTORTYPE_Descendant); |
443 p->SetNext(pFirst); | 445 p->SetNext(pFirst); |
444 } | 446 } |
445 pFirst = pLast = p; | 447 pFirst = pLast = p; |
446 } | 448 } |
447 FXSYS_assert(pLast != NULL); | 449 FXSYS_assert(pLast != NULL); |
448 int32_t iNameLen = FDE_GetCSSNameLen(++psz, pEnd); | 450 int32_t iNameLen = FDE_GetCSSNameLen(++psz, pEnd); |
449 if (iNameLen == 0) { | 451 if (iNameLen == 0) { |
450 return NULL; | 452 return NULL; |
451 } | 453 } |
452 FDE_CSSSELECTORTYPE eType = | 454 FDE_CSSSELECTORTYPE eType = |
453 wch == '.' ? FDE_CSSSELECTORTYPE_Class : FDE_CSSSELECTORTYPE_ID; | 455 wch == '.' ? FDE_CSSSELECTORTYPE_Class : FDE_CSSSELECTORTYPE_ID; |
454 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) | 456 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) |
455 CFDE_CSSSelector(eType, psz, iNameLen, FALSE); | 457 CFDE_CSSSelector(eType, psz, iNameLen, false); |
456 if (p == NULL) { | 458 if (p == NULL) { |
457 return NULL; | 459 return NULL; |
458 } | 460 } |
459 p->SetNext(pLast->GetNextSelector()); | 461 p->SetNext(pLast->GetNextSelector()); |
460 pLast->SetNext(p); | 462 pLast->SetNext(p); |
461 pLast = p; | 463 pLast = p; |
462 psz += iNameLen; | 464 psz += iNameLen; |
463 } else if (FDE_IsCSSChar(wch) || wch == '*') { | 465 } else if (FDE_IsCSSChar(wch) || wch == '*') { |
464 int32_t iNameLen = wch == '*' ? 1 : FDE_GetCSSNameLen(psz, pEnd); | 466 int32_t iNameLen = wch == '*' ? 1 : FDE_GetCSSNameLen(psz, pEnd); |
465 if (iNameLen == 0) { | 467 if (iNameLen == 0) { |
466 return NULL; | 468 return NULL; |
467 } | 469 } |
468 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) | 470 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) |
469 CFDE_CSSSelector(FDE_CSSSELECTORTYPE_Element, psz, iNameLen, TRUE); | 471 CFDE_CSSSelector(FDE_CSSSELECTORTYPE_Element, psz, iNameLen, true); |
470 if (p == NULL) { | 472 if (p == NULL) { |
471 return NULL; | 473 return NULL; |
472 } | 474 } |
473 if (pFirst == NULL) { | 475 if (pFirst == NULL) { |
474 pFirst = pLast = p; | 476 pFirst = pLast = p; |
475 } else { | 477 } else { |
476 pFirst->SetType(FDE_CSSSELECTORTYPE_Descendant); | 478 pFirst->SetType(FDE_CSSSELECTORTYPE_Descendant); |
477 p->SetNext(pFirst); | 479 p->SetNext(pFirst); |
478 pFirst = pLast = p; | 480 pFirst = pLast = p; |
479 } | 481 } |
480 psz += iNameLen; | 482 psz += iNameLen; |
481 } else if (wch == ':') { | 483 } else if (wch == ':') { |
482 int32_t iNameLen = FDE_GetCSSPersudoLen(psz, pEnd); | 484 int32_t iNameLen = FDE_GetCSSPersudoLen(psz, pEnd); |
483 if (iNameLen == 0) { | 485 if (iNameLen == 0) { |
484 return NULL; | 486 return NULL; |
485 } | 487 } |
486 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) | 488 CFDE_CSSSelector* p = FXTARGET_NewWith(pStaticStore) |
487 CFDE_CSSSelector(FDE_CSSSELECTORTYPE_Persudo, psz, iNameLen, TRUE); | 489 CFDE_CSSSelector(FDE_CSSSELECTORTYPE_Persudo, psz, iNameLen, true); |
488 if (p == NULL) { | 490 if (p == NULL) { |
489 return NULL; | 491 return NULL; |
490 } | 492 } |
491 if (pPersudoFirst == NULL) { | 493 if (pPersudoFirst == NULL) { |
492 pPersudoFirst = pPersudoLast = p; | 494 pPersudoFirst = pPersudoLast = p; |
493 } else { | 495 } else { |
494 pPersudoLast->SetNext(p); | 496 pPersudoLast->SetNext(p); |
495 pPersudoLast = p; | 497 pPersudoLast = p; |
496 } | 498 } |
497 psz += iNameLen; | 499 psz += iNameLen; |
498 } else if (wch == ' ') { | 500 } else if (wch == ' ') { |
499 psz++; | 501 psz++; |
500 } else { | 502 } else { |
501 return NULL; | 503 return NULL; |
502 } | 504 } |
503 } | 505 } |
504 if (pPersudoFirst == NULL) { | 506 if (pPersudoFirst == NULL) { |
505 return pFirst; | 507 return pFirst; |
506 } else { | 508 } else { |
507 pPersudoLast->SetNext(pFirst); | 509 pPersudoLast->SetNext(pFirst); |
508 return pPersudoFirst; | 510 return pPersudoFirst; |
509 } | 511 } |
510 } | 512 } |
OLD | NEW |