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

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

Issue 2467203003: Remove FX_BOOL from xfa. (Closed)
Patch Set: Created 4 years, 1 month 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_cssdatatable.h ('k') | xfa/fde/css/fde_cssdeclaration.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_cssdatatable.h" 7 #include "xfa/fde/css/fde_cssdatatable.h"
8 8
9 #include "core/fxcrt/fx_ext.h" 9 #include "core/fxcrt/fx_ext.h"
10 #include "xfa/fgas/crt/fgas_codepage.h" 10 #include "xfa/fgas/crt/fgas_codepage.h"
11 11
12 namespace { 12 namespace {
13 13
14 uint8_t Hex2Dec(uint8_t hexHigh, uint8_t hexLow) { 14 uint8_t Hex2Dec(uint8_t hexHigh, uint8_t hexLow) {
15 return (FXSYS_toHexDigit(hexHigh) << 4) + FXSYS_toHexDigit(hexLow); 15 return (FXSYS_toHexDigit(hexHigh) << 4) + FXSYS_toHexDigit(hexLow);
16 } 16 }
17 17
18 } // namespace 18 } // namespace
19 19
20 FX_BOOL FDE_CSSLengthToFloat(const FDE_CSSLENGTH& len, 20 bool FDE_CSSLengthToFloat(const FDE_CSSLENGTH& len,
21 FX_FLOAT fPercentBase, 21 FX_FLOAT fPercentBase,
22 FX_FLOAT& fResult) { 22 FX_FLOAT& fResult) {
23 switch (len.GetUnit()) { 23 switch (len.GetUnit()) {
24 case FDE_CSSLENGTHUNIT_Point: 24 case FDE_CSSLENGTHUNIT_Point:
25 fResult = len.GetValue(); 25 fResult = len.GetValue();
26 return TRUE; 26 return true;
27 case FDE_CSSLENGTHUNIT_Percent: 27 case FDE_CSSLENGTHUNIT_Percent:
28 fResult = len.GetValue() * fPercentBase; 28 fResult = len.GetValue() * fPercentBase;
29 return TRUE; 29 return true;
30 default: 30 default:
31 return FALSE; 31 return false;
32 } 32 }
33 } 33 }
34 CFX_FloatRect FDE_CSSBoundaryToRect(IFDE_CSSBoundaryStyle* pBoundStyle, 34 CFX_FloatRect FDE_CSSBoundaryToRect(IFDE_CSSBoundaryStyle* pBoundStyle,
35 FX_FLOAT fContainerWidth, 35 FX_FLOAT fContainerWidth,
36 FX_BOOL bPadding, 36 bool bPadding,
37 FX_BOOL bBorder, 37 bool bBorder,
38 FX_BOOL bMargin) { 38 bool bMargin) {
39 FX_FLOAT fResult; 39 FX_FLOAT fResult;
40 const FDE_CSSRECT* pRect; 40 const FDE_CSSRECT* pRect;
41 CFX_FloatRect rect(0, 0, 0, 0); 41 CFX_FloatRect rect(0, 0, 0, 0);
42 if (bPadding) { 42 if (bPadding) {
43 pRect = pBoundStyle->GetPaddingWidth(); 43 pRect = pBoundStyle->GetPaddingWidth();
44 if (pRect) { 44 if (pRect) {
45 if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) { 45 if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) {
46 rect.left += fResult; 46 rect.left += fResult;
47 } 47 }
48 if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) { 48 if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) {
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 return g_FDE_CSSColors + iMid; 665 return g_FDE_CSSColors + iMid;
666 } else if (dwHash > dwMid) { 666 } else if (dwHash > dwMid) {
667 iStart = iMid + 1; 667 iStart = iMid + 1;
668 } else { 668 } else {
669 iEnd = iMid - 1; 669 iEnd = iMid - 1;
670 } 670 }
671 } while (iStart <= iEnd); 671 } while (iStart <= iEnd);
672 return nullptr; 672 return nullptr;
673 } 673 }
674 674
675 FX_BOOL FDE_ParseCSSNumber(const FX_WCHAR* pszValue, 675 bool FDE_ParseCSSNumber(const FX_WCHAR* pszValue,
676 int32_t iValueLen, 676 int32_t iValueLen,
677 FX_FLOAT& fValue, 677 FX_FLOAT& fValue,
678 FDE_CSSPRIMITIVETYPE& eUnit) { 678 FDE_CSSPRIMITIVETYPE& eUnit) {
679 ASSERT(pszValue && iValueLen > 0); 679 ASSERT(pszValue && iValueLen > 0);
680 int32_t iUsedLen = 0; 680 int32_t iUsedLen = 0;
681 fValue = FXSYS_wcstof(pszValue, iValueLen, &iUsedLen); 681 fValue = FXSYS_wcstof(pszValue, iValueLen, &iUsedLen);
682 if (iUsedLen <= 0) 682 if (iUsedLen <= 0)
683 return FALSE; 683 return false;
684 684
685 iValueLen -= iUsedLen; 685 iValueLen -= iUsedLen;
686 pszValue += iUsedLen; 686 pszValue += iUsedLen;
687 eUnit = FDE_CSSPRIMITIVETYPE_Number; 687 eUnit = FDE_CSSPRIMITIVETYPE_Number;
688 if (iValueLen >= 1 && *pszValue == '%') { 688 if (iValueLen >= 1 && *pszValue == '%') {
689 eUnit = FDE_CSSPRIMITIVETYPE_Percent; 689 eUnit = FDE_CSSPRIMITIVETYPE_Percent;
690 } else if (iValueLen == 2) { 690 } else if (iValueLen == 2) {
691 FDE_LPCCSSLENGTHUNITTABLE pUnit = 691 FDE_LPCCSSLENGTHUNITTABLE pUnit =
692 FDE_GetCSSLengthUnitByName(CFX_WideStringC(pszValue, 2)); 692 FDE_GetCSSLengthUnitByName(CFX_WideStringC(pszValue, 2));
693 if (pUnit) 693 if (pUnit)
694 eUnit = (FDE_CSSPRIMITIVETYPE)pUnit->wValue; 694 eUnit = (FDE_CSSPRIMITIVETYPE)pUnit->wValue;
695 } 695 }
696 return TRUE; 696 return true;
697 } 697 }
698 698
699 FX_BOOL FDE_ParseCSSString(const FX_WCHAR* pszValue, 699 bool FDE_ParseCSSString(const FX_WCHAR* pszValue,
700 int32_t iValueLen, 700 int32_t iValueLen,
701 int32_t& iOffset, 701 int32_t& iOffset,
702 int32_t& iLength) { 702 int32_t& iLength) {
703 ASSERT(pszValue && iValueLen > 0); 703 ASSERT(pszValue && iValueLen > 0);
704 iOffset = 0; 704 iOffset = 0;
705 iLength = iValueLen; 705 iLength = iValueLen;
706 if (iValueLen >= 2) { 706 if (iValueLen >= 2) {
707 FX_WCHAR first = pszValue[0], last = pszValue[iValueLen - 1]; 707 FX_WCHAR first = pszValue[0], last = pszValue[iValueLen - 1];
708 if ((first == '\"' && last == '\"') || (first == '\'' && last == '\'')) { 708 if ((first == '\"' && last == '\"') || (first == '\'' && last == '\'')) {
709 iOffset = 1, iLength -= 2; 709 iOffset = 1, iLength -= 2;
710 } 710 }
711 } 711 }
712 return iValueLen > 0; 712 return iValueLen > 0;
713 } 713 }
714 714
715 FX_BOOL FDE_ParseCSSURI(const FX_WCHAR* pszValue, 715 bool FDE_ParseCSSURI(const FX_WCHAR* pszValue,
716 int32_t iValueLen, 716 int32_t iValueLen,
717 int32_t& iOffset, 717 int32_t& iOffset,
718 int32_t& iLength) { 718 int32_t& iLength) {
719 ASSERT(pszValue && iValueLen > 0); 719 ASSERT(pszValue && iValueLen > 0);
720 if (iValueLen < 6 || pszValue[iValueLen - 1] != ')' || 720 if (iValueLen < 6 || pszValue[iValueLen - 1] != ')' ||
721 FXSYS_wcsnicmp(L"url(", pszValue, 4)) { 721 FXSYS_wcsnicmp(L"url(", pszValue, 4)) {
722 return FALSE; 722 return false;
723 } 723 }
724 if (FDE_ParseCSSString(pszValue + 4, iValueLen - 5, iOffset, iLength)) { 724 if (FDE_ParseCSSString(pszValue + 4, iValueLen - 5, iOffset, iLength)) {
725 iOffset += 4; 725 iOffset += 4;
726 return TRUE; 726 return true;
727 } 727 }
728 return FALSE; 728 return false;
729 } 729 }
730 730
731 FX_BOOL FDE_ParseCSSColor(const FX_WCHAR* pszValue, 731 bool FDE_ParseCSSColor(const FX_WCHAR* pszValue,
732 int32_t iValueLen, 732 int32_t iValueLen,
733 FX_ARGB& dwColor) { 733 FX_ARGB& dwColor) {
734 ASSERT(pszValue && iValueLen > 0); 734 ASSERT(pszValue && iValueLen > 0);
735 735
736 if (*pszValue == '#') { 736 if (*pszValue == '#') {
737 switch (iValueLen) { 737 switch (iValueLen) {
738 case 4: { 738 case 4: {
739 uint8_t red = Hex2Dec((uint8_t)pszValue[1], (uint8_t)pszValue[1]); 739 uint8_t red = Hex2Dec((uint8_t)pszValue[1], (uint8_t)pszValue[1]);
740 uint8_t green = Hex2Dec((uint8_t)pszValue[2], (uint8_t)pszValue[2]); 740 uint8_t green = Hex2Dec((uint8_t)pszValue[2], (uint8_t)pszValue[2]);
741 uint8_t blue = Hex2Dec((uint8_t)pszValue[3], (uint8_t)pszValue[3]); 741 uint8_t blue = Hex2Dec((uint8_t)pszValue[3], (uint8_t)pszValue[3]);
742 dwColor = ArgbEncode(255, red, green, blue); 742 dwColor = ArgbEncode(255, red, green, blue);
743 return TRUE; 743 return true;
744 } 744 }
745 case 7: { 745 case 7: {
746 uint8_t red = Hex2Dec((uint8_t)pszValue[1], (uint8_t)pszValue[2]); 746 uint8_t red = Hex2Dec((uint8_t)pszValue[1], (uint8_t)pszValue[2]);
747 uint8_t green = Hex2Dec((uint8_t)pszValue[3], (uint8_t)pszValue[4]); 747 uint8_t green = Hex2Dec((uint8_t)pszValue[3], (uint8_t)pszValue[4]);
748 uint8_t blue = Hex2Dec((uint8_t)pszValue[5], (uint8_t)pszValue[6]); 748 uint8_t blue = Hex2Dec((uint8_t)pszValue[5], (uint8_t)pszValue[6]);
749 dwColor = ArgbEncode(255, red, green, blue); 749 dwColor = ArgbEncode(255, red, green, blue);
750 return TRUE; 750 return true;
751 } 751 }
752 default: 752 default:
753 return FALSE; 753 return false;
754 } 754 }
755 } 755 }
756 756
757 if (iValueLen >= 10) { 757 if (iValueLen >= 10) {
758 if (pszValue[iValueLen - 1] != ')' || FXSYS_wcsnicmp(L"rgb(", pszValue, 4)) 758 if (pszValue[iValueLen - 1] != ')' || FXSYS_wcsnicmp(L"rgb(", pszValue, 4))
759 return FALSE; 759 return false;
760 760
761 uint8_t rgb[3] = {0}; 761 uint8_t rgb[3] = {0};
762 FX_FLOAT fValue; 762 FX_FLOAT fValue;
763 FDE_CSSPRIMITIVETYPE eType; 763 FDE_CSSPRIMITIVETYPE eType;
764 CFDE_CSSValueListParser list(pszValue + 4, iValueLen - 5, ','); 764 CFDE_CSSValueListParser list(pszValue + 4, iValueLen - 5, ',');
765 for (int32_t i = 0; i < 3; ++i) { 765 for (int32_t i = 0; i < 3; ++i) {
766 if (!list.NextValue(eType, pszValue, iValueLen)) 766 if (!list.NextValue(eType, pszValue, iValueLen))
767 return FALSE; 767 return false;
768 if (eType != FDE_CSSPRIMITIVETYPE_Number) 768 if (eType != FDE_CSSPRIMITIVETYPE_Number)
769 return FALSE; 769 return false;
770 if (!FDE_ParseCSSNumber(pszValue, iValueLen, fValue, eType)) 770 if (!FDE_ParseCSSNumber(pszValue, iValueLen, fValue, eType))
771 return FALSE; 771 return false;
772 772
773 rgb[i] = eType == FDE_CSSPRIMITIVETYPE_Percent 773 rgb[i] = eType == FDE_CSSPRIMITIVETYPE_Percent
774 ? FXSYS_round(fValue * 2.55f) 774 ? FXSYS_round(fValue * 2.55f)
775 : FXSYS_round(fValue); 775 : FXSYS_round(fValue);
776 } 776 }
777 dwColor = ArgbEncode(255, rgb[0], rgb[1], rgb[2]); 777 dwColor = ArgbEncode(255, rgb[0], rgb[1], rgb[2]);
778 return TRUE; 778 return true;
779 } 779 }
780 780
781 FDE_LPCCSSCOLORTABLE pColor = 781 FDE_LPCCSSCOLORTABLE pColor =
782 FDE_GetCSSColorByName(CFX_WideStringC(pszValue, iValueLen)); 782 FDE_GetCSSColorByName(CFX_WideStringC(pszValue, iValueLen));
783 if (!pColor) 783 if (!pColor)
784 return FALSE; 784 return false;
785 785
786 dwColor = pColor->dwValue; 786 dwColor = pColor->dwValue;
787 return TRUE; 787 return true;
788 } 788 }
789 789
790 CFDE_CSSValueList::CFDE_CSSValueList(IFX_MemoryAllocator* pStaticStore, 790 CFDE_CSSValueList::CFDE_CSSValueList(IFX_MemoryAllocator* pStaticStore,
791 const CFDE_CSSValueArray& list) { 791 const CFDE_CSSValueArray& list) {
792 m_iCount = list.GetSize(); 792 m_iCount = list.GetSize();
793 int32_t iByteCount = m_iCount * sizeof(IFDE_CSSValue*); 793 int32_t iByteCount = m_iCount * sizeof(IFDE_CSSValue*);
794 m_ppList = (IFDE_CSSValue**)pStaticStore->Alloc(iByteCount); 794 m_ppList = (IFDE_CSSValue**)pStaticStore->Alloc(iByteCount);
795 FXSYS_memcpy(m_ppList, list.GetData(), iByteCount); 795 FXSYS_memcpy(m_ppList, list.GetData(), iByteCount);
796 } 796 }
797 797
798 int32_t CFDE_CSSValueList::CountValues() const { 798 int32_t CFDE_CSSValueList::CountValues() const {
799 return m_iCount; 799 return m_iCount;
800 } 800 }
801 801
802 IFDE_CSSValue* CFDE_CSSValueList::GetValue(int32_t index) const { 802 IFDE_CSSValue* CFDE_CSSValueList::GetValue(int32_t index) const {
803 return m_ppList[index]; 803 return m_ppList[index];
804 } 804 }
805 FX_BOOL CFDE_CSSValueListParser::NextValue(FDE_CSSPRIMITIVETYPE& eType, 805 bool CFDE_CSSValueListParser::NextValue(FDE_CSSPRIMITIVETYPE& eType,
806 const FX_WCHAR*& pStart, 806 const FX_WCHAR*& pStart,
807 int32_t& iLength) { 807 int32_t& iLength) {
808 while (m_pCur < m_pEnd && (*m_pCur <= ' ' || *m_pCur == m_Separator)) { 808 while (m_pCur < m_pEnd && (*m_pCur <= ' ' || *m_pCur == m_Separator)) {
809 ++m_pCur; 809 ++m_pCur;
810 } 810 }
811 if (m_pCur >= m_pEnd) { 811 if (m_pCur >= m_pEnd) {
812 return FALSE; 812 return false;
813 } 813 }
814 eType = FDE_CSSPRIMITIVETYPE_Unknown; 814 eType = FDE_CSSPRIMITIVETYPE_Unknown;
815 pStart = m_pCur; 815 pStart = m_pCur;
816 iLength = 0; 816 iLength = 0;
817 FX_WCHAR wch = *m_pCur; 817 FX_WCHAR wch = *m_pCur;
818 if (wch == '#') { 818 if (wch == '#') {
819 iLength = SkipTo(' '); 819 iLength = SkipTo(' ');
820 if (iLength == 4 || iLength == 7) { 820 if (iLength == 4 || iLength == 7) {
821 eType = FDE_CSSPRIMITIVETYPE_RGB; 821 eType = FDE_CSSPRIMITIVETYPE_RGB;
822 } 822 }
(...skipping 23 matching lines...) Expand all
846 iLength = SkipTo(')') - 4; 846 iLength = SkipTo(')') - 4;
847 m_pCur++; 847 m_pCur++;
848 } 848 }
849 eType = FDE_CSSPRIMITIVETYPE_URI; 849 eType = FDE_CSSPRIMITIVETYPE_URI;
850 } else if (FXSYS_wcsnicmp(L"rgb", m_pCur, 3) == 0) { 850 } else if (FXSYS_wcsnicmp(L"rgb", m_pCur, 3) == 0) {
851 iLength = SkipTo(')') + 1; 851 iLength = SkipTo(')') + 1;
852 m_pCur++; 852 m_pCur++;
853 eType = FDE_CSSPRIMITIVETYPE_RGB; 853 eType = FDE_CSSPRIMITIVETYPE_RGB;
854 } 854 }
855 } else { 855 } else {
856 iLength = SkipTo(m_Separator, TRUE, TRUE); 856 iLength = SkipTo(m_Separator, true, true);
857 eType = FDE_CSSPRIMITIVETYPE_String; 857 eType = FDE_CSSPRIMITIVETYPE_String;
858 } 858 }
859 return m_pCur <= m_pEnd && iLength > 0; 859 return m_pCur <= m_pEnd && iLength > 0;
860 } 860 }
861 int32_t CFDE_CSSValueListParser::SkipTo(FX_WCHAR wch, 861 int32_t CFDE_CSSValueListParser::SkipTo(FX_WCHAR wch,
862 FX_BOOL bWSSeparator, 862 bool bWSSeparator,
863 FX_BOOL bBrContinue) { 863 bool bBrContinue) {
864 const FX_WCHAR* pStart = m_pCur; 864 const FX_WCHAR* pStart = m_pCur;
865 if (!bBrContinue) { 865 if (!bBrContinue) {
866 if (bWSSeparator) { 866 if (bWSSeparator) {
867 while ((++m_pCur < m_pEnd) && (*m_pCur != wch) && (*m_pCur > ' ')) { 867 while ((++m_pCur < m_pEnd) && (*m_pCur != wch) && (*m_pCur > ' ')) {
868 continue; 868 continue;
869 } 869 }
870 } else { 870 } else {
871 while (++m_pCur < m_pEnd && *m_pCur != wch) { 871 while (++m_pCur < m_pEnd && *m_pCur != wch) {
872 continue; 872 continue;
873 } 873 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 960
961 int32_t CFDE_CSSPrimitiveValue::CountArgs() const { 961 int32_t CFDE_CSSPrimitiveValue::CountArgs() const {
962 ASSERT(m_eType == FDE_CSSPRIMITIVETYPE_Function); 962 ASSERT(m_eType == FDE_CSSPRIMITIVETYPE_Function);
963 return m_pFunction->CountArgs(); 963 return m_pFunction->CountArgs();
964 } 964 }
965 965
966 IFDE_CSSValue* CFDE_CSSPrimitiveValue::GetArgs(int32_t index) const { 966 IFDE_CSSValue* CFDE_CSSPrimitiveValue::GetArgs(int32_t index) const {
967 ASSERT(m_eType == FDE_CSSPRIMITIVETYPE_Function); 967 ASSERT(m_eType == FDE_CSSPRIMITIVETYPE_Function);
968 return m_pFunction->GetArgs(index); 968 return m_pFunction->GetArgs(index);
969 } 969 }
OLDNEW
« no previous file with comments | « xfa/fde/css/fde_cssdatatable.h ('k') | xfa/fde/css/fde_cssdeclaration.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698