| 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_cssdatatable.h" | 7 #include "xfa/fde/css/fde_cssdatatable.h" | 
| 8 | 8 | 
| 9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" | 
| 10 #include "xfa/fgas/crt/fgas_codepage.h" | 10 #include "xfa/fgas/crt/fgas_codepage.h" | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 30       return TRUE; | 30       return TRUE; | 
| 31     default: | 31     default: | 
| 32       return FALSE; | 32       return FALSE; | 
| 33   } | 33   } | 
| 34 } | 34 } | 
| 35 CFX_FloatRect FDE_CSSBoundaryToRect(IFDE_CSSBoundaryStyle* pBoundStyle, | 35 CFX_FloatRect FDE_CSSBoundaryToRect(IFDE_CSSBoundaryStyle* pBoundStyle, | 
| 36                                     FX_FLOAT fContainerWidth, | 36                                     FX_FLOAT fContainerWidth, | 
| 37                                     FX_BOOL bPadding, | 37                                     FX_BOOL bPadding, | 
| 38                                     FX_BOOL bBorder, | 38                                     FX_BOOL bBorder, | 
| 39                                     FX_BOOL bMargin) { | 39                                     FX_BOOL bMargin) { | 
| 40   ASSERT(pBoundStyle != NULL); |  | 
| 41   FX_FLOAT fResult; | 40   FX_FLOAT fResult; | 
| 42   const FDE_CSSRECT* pRect; | 41   const FDE_CSSRECT* pRect; | 
| 43   CFX_FloatRect rect(0, 0, 0, 0); | 42   CFX_FloatRect rect(0, 0, 0, 0); | 
| 44   if (bPadding) { | 43   if (bPadding) { | 
| 45     pRect = pBoundStyle->GetPaddingWidth(); | 44     pRect = pBoundStyle->GetPaddingWidth(); | 
| 46     if (pRect != NULL) { | 45     if (pRect) { | 
| 47       if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) { | 46       if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) { | 
| 48         rect.left += fResult; | 47         rect.left += fResult; | 
| 49       } | 48       } | 
| 50       if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) { | 49       if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) { | 
| 51         rect.top += fResult; | 50         rect.top += fResult; | 
| 52       } | 51       } | 
| 53       if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) { | 52       if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) { | 
| 54         rect.right += fResult; | 53         rect.right += fResult; | 
| 55       } | 54       } | 
| 56       if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) { | 55       if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) { | 
| 57         rect.bottom += fResult; | 56         rect.bottom += fResult; | 
| 58       } | 57       } | 
| 59     } | 58     } | 
| 60   } | 59   } | 
| 61   if (bBorder) { | 60   if (bBorder) { | 
| 62     pRect = pBoundStyle->GetBorderWidth(); | 61     pRect = pBoundStyle->GetBorderWidth(); | 
| 63     if (pRect != NULL) { | 62     if (pRect) { | 
| 64       if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) { | 63       if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) { | 
| 65         rect.left += fResult; | 64         rect.left += fResult; | 
| 66       } | 65       } | 
| 67       if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) { | 66       if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) { | 
| 68         rect.top += fResult; | 67         rect.top += fResult; | 
| 69       } | 68       } | 
| 70       if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) { | 69       if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) { | 
| 71         rect.right += fResult; | 70         rect.right += fResult; | 
| 72       } | 71       } | 
| 73       if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) { | 72       if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) { | 
| 74         rect.bottom += fResult; | 73         rect.bottom += fResult; | 
| 75       } | 74       } | 
| 76     } | 75     } | 
| 77   } | 76   } | 
| 78   if (bMargin) { | 77   if (bMargin) { | 
| 79     pRect = pBoundStyle->GetMarginWidth(); | 78     pRect = pBoundStyle->GetMarginWidth(); | 
| 80     if (pRect != NULL) { | 79     if (pRect) { | 
| 81       if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) { | 80       if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) { | 
| 82         rect.left += fResult; | 81         rect.left += fResult; | 
| 83       } | 82       } | 
| 84       if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) { | 83       if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) { | 
| 85         rect.top += fResult; | 84         rect.top += fResult; | 
| 86       } | 85       } | 
| 87       if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) { | 86       if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) { | 
| 88         rect.right += fResult; | 87         rect.right += fResult; | 
| 89       } | 88       } | 
| 90       if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) { | 89       if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) { | 
| 91         rect.bottom += fResult; | 90         rect.bottom += fResult; | 
| 92       } | 91       } | 
| 93     } | 92     } | 
| 94   } | 93   } | 
| 95   return rect; | 94   return rect; | 
| 96 } | 95 } | 
| 97 uint32_t FDE_CSSFontStyleToFDE(IFDE_CSSFontStyle* pFontStyle) { | 96 uint32_t FDE_CSSFontStyleToFDE(IFDE_CSSFontStyle* pFontStyle) { | 
| 98   ASSERT(pFontStyle != NULL); |  | 
| 99   uint32_t dwFontStyle = FX_FONTSTYLE_Normal; | 97   uint32_t dwFontStyle = FX_FONTSTYLE_Normal; | 
| 100   if (pFontStyle->GetFontStyle() == FDE_CSSFONTSTYLE_Italic) { | 98   if (pFontStyle->GetFontStyle() == FDE_CSSFONTSTYLE_Italic) { | 
| 101     dwFontStyle |= FX_FONTSTYLE_Italic; | 99     dwFontStyle |= FX_FONTSTYLE_Italic; | 
| 102   } | 100   } | 
| 103   if (pFontStyle->GetFontWeight() >= 700) { | 101   if (pFontStyle->GetFontWeight() >= 700) { | 
| 104     dwFontStyle |= FX_FONTSTYLE_Bold; | 102     dwFontStyle |= FX_FONTSTYLE_Bold; | 
| 105   } | 103   } | 
| 106   return dwFontStyle; | 104   return dwFontStyle; | 
| 107 } | 105 } | 
| 108 static const FDE_CSSPROPERTYTABLE g_FDE_CSSProperties[] = { | 106 static const FDE_CSSPROPERTYTABLE g_FDE_CSSProperties[] = { | 
| (...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 555     {0xB6D2CF1F, 0xff808000}, {0xD19B5E1C, 0xffffff00}, | 553     {0xB6D2CF1F, 0xff808000}, {0xD19B5E1C, 0xffffff00}, | 
| 556     {0xDB64391D, 0xff000000}, {0xF616D507, 0xff00ff00}, | 554     {0xDB64391D, 0xff000000}, {0xF616D507, 0xff00ff00}, | 
| 557     {0xF6EFFF31, 0xff008000}, | 555     {0xF6EFFF31, 0xff008000}, | 
| 558 }; | 556 }; | 
| 559 static const FDE_CSSPERSUDOTABLE g_FDE_CSSPersudoType[] = { | 557 static const FDE_CSSPERSUDOTABLE g_FDE_CSSPersudoType[] = { | 
| 560     {FDE_CSSPERSUDO_After, L":after", 0x16EE1FEC}, | 558     {FDE_CSSPERSUDO_After, L":after", 0x16EE1FEC}, | 
| 561     {FDE_CSSPERSUDO_Before, L":before", 0x7DCDDE2D}, | 559     {FDE_CSSPERSUDO_Before, L":before", 0x7DCDDE2D}, | 
| 562 }; | 560 }; | 
| 563 FDE_LPCCSSPERSUDOTABLE FDE_GetCSSPersudoByEnum(FDE_CSSPERSUDO ePersudo) { | 561 FDE_LPCCSSPERSUDOTABLE FDE_GetCSSPersudoByEnum(FDE_CSSPERSUDO ePersudo) { | 
| 564   return (ePersudo < FDE_CSSPERSUDO_NONE) ? (g_FDE_CSSPersudoType + ePersudo) | 562   return (ePersudo < FDE_CSSPERSUDO_NONE) ? (g_FDE_CSSPersudoType + ePersudo) | 
| 565                                           : NULL; | 563                                           : nullptr; | 
| 566 } | 564 } | 
| 567 const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByName( | 565 const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByName( | 
| 568     const CFX_WideStringC& wsName) { | 566     const CFX_WideStringC& wsName) { | 
| 569   ASSERT(!wsName.IsEmpty()); | 567   ASSERT(!wsName.IsEmpty()); | 
| 570   uint32_t dwHash = FX_HashCode_GetW(wsName, true); | 568   uint32_t dwHash = FX_HashCode_GetW(wsName, true); | 
| 571   int32_t iEnd = FDE_CSSPROPERTY_MAX - 1; | 569   int32_t iEnd = FDE_CSSPROPERTY_MAX - 1; | 
| 572   int32_t iMid, iStart = 0; | 570   int32_t iMid, iStart = 0; | 
| 573   uint32_t dwMid; | 571   uint32_t dwMid; | 
| 574   do { | 572   do { | 
| 575     iMid = (iStart + iEnd) / 2; | 573     iMid = (iStart + iEnd) / 2; | 
| 576     dwMid = g_FDE_CSSProperties[iMid].dwHash; | 574     dwMid = g_FDE_CSSProperties[iMid].dwHash; | 
| 577     if (dwHash == dwMid) { | 575     if (dwHash == dwMid) { | 
| 578       return g_FDE_CSSProperties + iMid; | 576       return g_FDE_CSSProperties + iMid; | 
| 579     } else if (dwHash > dwMid) { | 577     } else if (dwHash > dwMid) { | 
| 580       iStart = iMid + 1; | 578       iStart = iMid + 1; | 
| 581     } else { | 579     } else { | 
| 582       iEnd = iMid - 1; | 580       iEnd = iMid - 1; | 
| 583     } | 581     } | 
| 584   } while (iStart <= iEnd); | 582   } while (iStart <= iEnd); | 
| 585   return NULL; | 583   return nullptr; | 
| 586 } | 584 } | 
| 587 const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY eName) { | 585 const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY eName) { | 
| 588   return (eName < FDE_CSSPROPERTY_MAX) ? (g_FDE_CSSProperties + eName) : NULL; | 586   return (eName < FDE_CSSPROPERTY_MAX) ? (g_FDE_CSSProperties + eName) | 
|  | 587                                        : nullptr; | 
| 589 } | 588 } | 
| 590 const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByName( | 589 const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByName( | 
| 591     const CFX_WideStringC& wsName) { | 590     const CFX_WideStringC& wsName) { | 
| 592   ASSERT(!wsName.IsEmpty()); | 591   ASSERT(!wsName.IsEmpty()); | 
| 593   uint32_t dwHash = FX_HashCode_GetW(wsName, true); | 592   uint32_t dwHash = FX_HashCode_GetW(wsName, true); | 
| 594   int32_t iEnd = FDE_CSSPROPERTYVALUE_MAX - 1; | 593   int32_t iEnd = FDE_CSSPROPERTYVALUE_MAX - 1; | 
| 595   int32_t iMid, iStart = 0; | 594   int32_t iMid, iStart = 0; | 
| 596   uint32_t dwMid; | 595   uint32_t dwMid; | 
| 597   do { | 596   do { | 
| 598     iMid = (iStart + iEnd) / 2; | 597     iMid = (iStart + iEnd) / 2; | 
| 599     dwMid = g_FDE_CSSPropertyValues[iMid].dwHash; | 598     dwMid = g_FDE_CSSPropertyValues[iMid].dwHash; | 
| 600     if (dwHash == dwMid) { | 599     if (dwHash == dwMid) { | 
| 601       return g_FDE_CSSPropertyValues + iMid; | 600       return g_FDE_CSSPropertyValues + iMid; | 
| 602     } else if (dwHash > dwMid) { | 601     } else if (dwHash > dwMid) { | 
| 603       iStart = iMid + 1; | 602       iStart = iMid + 1; | 
| 604     } else { | 603     } else { | 
| 605       iEnd = iMid - 1; | 604       iEnd = iMid - 1; | 
| 606     } | 605     } | 
| 607   } while (iStart <= iEnd); | 606   } while (iStart <= iEnd); | 
| 608   return NULL; | 607   return nullptr; | 
| 609 } | 608 } | 
| 610 const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByEnum( | 609 const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByEnum( | 
| 611     FDE_CSSPROPERTYVALUE eName) { | 610     FDE_CSSPROPERTYVALUE eName) { | 
| 612   return (eName < FDE_CSSPROPERTYVALUE_MAX) ? (g_FDE_CSSPropertyValues + eName) | 611   return (eName < FDE_CSSPROPERTYVALUE_MAX) ? (g_FDE_CSSPropertyValues + eName) | 
| 613                                             : NULL; | 612                                             : nullptr; | 
| 614 } | 613 } | 
| 615 FDE_LPCCSSMEDIATYPETABLE FDE_GetCSSMediaTypeByName( | 614 FDE_LPCCSSMEDIATYPETABLE FDE_GetCSSMediaTypeByName( | 
| 616     const CFX_WideStringC& wsName) { | 615     const CFX_WideStringC& wsName) { | 
| 617   ASSERT(!wsName.IsEmpty()); | 616   ASSERT(!wsName.IsEmpty()); | 
| 618   uint16_t wHash = FX_HashCode_GetW(wsName, true); | 617   uint16_t wHash = FX_HashCode_GetW(wsName, true); | 
| 619   int32_t iEnd = | 618   int32_t iEnd = | 
| 620       sizeof(g_FDE_CSSMediaTypes) / sizeof(FDE_CSSMEDIATYPETABLE) - 1; | 619       sizeof(g_FDE_CSSMediaTypes) / sizeof(FDE_CSSMEDIATYPETABLE) - 1; | 
| 621   int32_t iMid, iStart = 0; | 620   int32_t iMid, iStart = 0; | 
| 622   uint16_t uMid; | 621   uint16_t uMid; | 
| 623   do { | 622   do { | 
| 624     iMid = (iStart + iEnd) / 2; | 623     iMid = (iStart + iEnd) / 2; | 
| 625     uMid = g_FDE_CSSMediaTypes[iMid].wHash; | 624     uMid = g_FDE_CSSMediaTypes[iMid].wHash; | 
| 626     if (wHash == uMid) { | 625     if (wHash == uMid) { | 
| 627       return g_FDE_CSSMediaTypes + iMid; | 626       return g_FDE_CSSMediaTypes + iMid; | 
| 628     } else if (wHash > uMid) { | 627     } else if (wHash > uMid) { | 
| 629       iStart = iMid + 1; | 628       iStart = iMid + 1; | 
| 630     } else { | 629     } else { | 
| 631       iEnd = iMid - 1; | 630       iEnd = iMid - 1; | 
| 632     } | 631     } | 
| 633   } while (iStart <= iEnd); | 632   } while (iStart <= iEnd); | 
| 634   return NULL; | 633   return nullptr; | 
| 635 } | 634 } | 
| 636 FDE_LPCCSSLENGTHUNITTABLE FDE_GetCSSLengthUnitByName( | 635 FDE_LPCCSSLENGTHUNITTABLE FDE_GetCSSLengthUnitByName( | 
| 637     const CFX_WideStringC& wsName) { | 636     const CFX_WideStringC& wsName) { | 
| 638   ASSERT(!wsName.IsEmpty()); | 637   ASSERT(!wsName.IsEmpty()); | 
| 639   uint16_t wHash = FX_HashCode_GetW(wsName, true); | 638   uint16_t wHash = FX_HashCode_GetW(wsName, true); | 
| 640   int32_t iEnd = | 639   int32_t iEnd = | 
| 641       sizeof(g_FDE_CSSLengthUnits) / sizeof(FDE_CSSLENGTHUNITTABLE) - 1; | 640       sizeof(g_FDE_CSSLengthUnits) / sizeof(FDE_CSSLENGTHUNITTABLE) - 1; | 
| 642   int32_t iMid, iStart = 0; | 641   int32_t iMid, iStart = 0; | 
| 643   uint16_t wMid; | 642   uint16_t wMid; | 
| 644   do { | 643   do { | 
| 645     iMid = (iStart + iEnd) / 2; | 644     iMid = (iStart + iEnd) / 2; | 
| 646     wMid = g_FDE_CSSLengthUnits[iMid].wHash; | 645     wMid = g_FDE_CSSLengthUnits[iMid].wHash; | 
| 647     if (wHash == wMid) { | 646     if (wHash == wMid) { | 
| 648       return g_FDE_CSSLengthUnits + iMid; | 647       return g_FDE_CSSLengthUnits + iMid; | 
| 649     } else if (wHash > wMid) { | 648     } else if (wHash > wMid) { | 
| 650       iStart = iMid + 1; | 649       iStart = iMid + 1; | 
| 651     } else { | 650     } else { | 
| 652       iEnd = iMid - 1; | 651       iEnd = iMid - 1; | 
| 653     } | 652     } | 
| 654   } while (iStart <= iEnd); | 653   } while (iStart <= iEnd); | 
| 655   return NULL; | 654   return nullptr; | 
| 656 } | 655 } | 
| 657 FDE_LPCCSSCOLORTABLE FDE_GetCSSColorByName(const CFX_WideStringC& wsName) { | 656 FDE_LPCCSSCOLORTABLE FDE_GetCSSColorByName(const CFX_WideStringC& wsName) { | 
| 658   ASSERT(!wsName.IsEmpty()); | 657   ASSERT(!wsName.IsEmpty()); | 
| 659   uint32_t dwHash = FX_HashCode_GetW(wsName, true); | 658   uint32_t dwHash = FX_HashCode_GetW(wsName, true); | 
| 660   int32_t iEnd = sizeof(g_FDE_CSSColors) / sizeof(FDE_CSSCOLORTABLE) - 1; | 659   int32_t iEnd = sizeof(g_FDE_CSSColors) / sizeof(FDE_CSSCOLORTABLE) - 1; | 
| 661   int32_t iMid, iStart = 0; | 660   int32_t iMid, iStart = 0; | 
| 662   uint32_t dwMid; | 661   uint32_t dwMid; | 
| 663   do { | 662   do { | 
| 664     iMid = (iStart + iEnd) / 2; | 663     iMid = (iStart + iEnd) / 2; | 
| 665     dwMid = g_FDE_CSSColors[iMid].dwHash; | 664     dwMid = g_FDE_CSSColors[iMid].dwHash; | 
| 666     if (dwHash == dwMid) { | 665     if (dwHash == dwMid) { | 
| 667       return g_FDE_CSSColors + iMid; | 666       return g_FDE_CSSColors + iMid; | 
| 668     } else if (dwHash > dwMid) { | 667     } else if (dwHash > dwMid) { | 
| 669       iStart = iMid + 1; | 668       iStart = iMid + 1; | 
| 670     } else { | 669     } else { | 
| 671       iEnd = iMid - 1; | 670       iEnd = iMid - 1; | 
| 672     } | 671     } | 
| 673   } while (iStart <= iEnd); | 672   } while (iStart <= iEnd); | 
| 674   return NULL; | 673   return nullptr; | 
| 675 } | 674 } | 
| 676 | 675 | 
| 677 FX_BOOL FDE_ParseCSSNumber(const FX_WCHAR* pszValue, | 676 FX_BOOL FDE_ParseCSSNumber(const FX_WCHAR* pszValue, | 
| 678                            int32_t iValueLen, | 677                            int32_t iValueLen, | 
| 679                            FX_FLOAT& fValue, | 678                            FX_FLOAT& fValue, | 
| 680                            FDE_CSSPRIMITIVETYPE& eUnit) { | 679                            FDE_CSSPRIMITIVETYPE& eUnit) { | 
| 681   ASSERT(pszValue && iValueLen > 0); | 680   ASSERT(pszValue && iValueLen > 0); | 
| 682   int32_t iUsedLen = 0; | 681   int32_t iUsedLen = 0; | 
| 683   fValue = FX_wcstof(pszValue, iValueLen, &iUsedLen); | 682   fValue = FX_wcstof(pszValue, iValueLen, &iUsedLen); | 
| 684   if (iUsedLen <= 0) | 683   if (iUsedLen <= 0) | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 695     if (pUnit) | 694     if (pUnit) | 
| 696       eUnit = (FDE_CSSPRIMITIVETYPE)pUnit->wValue; | 695       eUnit = (FDE_CSSPRIMITIVETYPE)pUnit->wValue; | 
| 697   } | 696   } | 
| 698   return TRUE; | 697   return TRUE; | 
| 699 } | 698 } | 
| 700 | 699 | 
| 701 FX_BOOL FDE_ParseCSSString(const FX_WCHAR* pszValue, | 700 FX_BOOL FDE_ParseCSSString(const FX_WCHAR* pszValue, | 
| 702                            int32_t iValueLen, | 701                            int32_t iValueLen, | 
| 703                            int32_t& iOffset, | 702                            int32_t& iOffset, | 
| 704                            int32_t& iLength) { | 703                            int32_t& iLength) { | 
| 705   ASSERT(pszValue != NULL && iValueLen > 0); | 704   ASSERT(pszValue && iValueLen > 0); | 
| 706   iOffset = 0; | 705   iOffset = 0; | 
| 707   iLength = iValueLen; | 706   iLength = iValueLen; | 
| 708   if (iValueLen >= 2) { | 707   if (iValueLen >= 2) { | 
| 709     FX_WCHAR first = pszValue[0], last = pszValue[iValueLen - 1]; | 708     FX_WCHAR first = pszValue[0], last = pszValue[iValueLen - 1]; | 
| 710     if ((first == '\"' && last == '\"') || (first == '\'' && last == '\'')) { | 709     if ((first == '\"' && last == '\"') || (first == '\'' && last == '\'')) { | 
| 711       iOffset = 1, iLength -= 2; | 710       iOffset = 1, iLength -= 2; | 
| 712     } | 711     } | 
| 713   } | 712   } | 
| 714   return iValueLen > 0; | 713   return iValueLen > 0; | 
| 715 } | 714 } | 
| 716 | 715 | 
| 717 FX_BOOL FDE_ParseCSSURI(const FX_WCHAR* pszValue, | 716 FX_BOOL FDE_ParseCSSURI(const FX_WCHAR* pszValue, | 
| 718                         int32_t iValueLen, | 717                         int32_t iValueLen, | 
| 719                         int32_t& iOffset, | 718                         int32_t& iOffset, | 
| 720                         int32_t& iLength) { | 719                         int32_t& iLength) { | 
| 721   ASSERT(pszValue != NULL && iValueLen > 0); | 720   ASSERT(pszValue && iValueLen > 0); | 
| 722   if (iValueLen < 6 || pszValue[iValueLen - 1] != ')' || | 721   if (iValueLen < 6 || pszValue[iValueLen - 1] != ')' || | 
| 723       FX_wcsnicmp(L"url(", pszValue, 4)) { | 722       FX_wcsnicmp(L"url(", pszValue, 4)) { | 
| 724     return FALSE; | 723     return FALSE; | 
| 725   } | 724   } | 
| 726   if (FDE_ParseCSSString(pszValue + 4, iValueLen - 5, iOffset, iLength)) { | 725   if (FDE_ParseCSSString(pszValue + 4, iValueLen - 5, iOffset, iLength)) { | 
| 727     iOffset += 4; | 726     iOffset += 4; | 
| 728     return TRUE; | 727     return TRUE; | 
| 729   } | 728   } | 
| 730   return FALSE; | 729   return FALSE; | 
| 731 } | 730 } | 
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 890     } | 889     } | 
| 891     while (iBracketCount > 0 && m_pCur < m_pEnd) { | 890     while (iBracketCount > 0 && m_pCur < m_pEnd) { | 
| 892       if (*m_pCur == ')') { | 891       if (*m_pCur == ')') { | 
| 893         iBracketCount--; | 892         iBracketCount--; | 
| 894       } | 893       } | 
| 895       m_pCur++; | 894       m_pCur++; | 
| 896     } | 895     } | 
| 897   } | 896   } | 
| 898   return m_pCur - pStart; | 897   return m_pCur - pStart; | 
| 899 } | 898 } | 
| OLD | NEW | 
|---|