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

Side by Side Diff: xfa/fde/cfx_wordbreak.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/cfx_wordbreak.h ('k') | xfa/fde/css/cfde_cssrulecollection.cpp » ('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/cfx_wordbreak.h" 7 #include "xfa/fde/cfx_wordbreak.h"
8 8
9 #include "xfa/fde/cfx_chariter.h" 9 #include "xfa/fde/cfx_chariter.h"
10 10
(...skipping 2771 matching lines...) Expand 10 before | Expand all | Expand 10 after
2782 2782
2783 void CFX_WordBreak::Attach(IFX_CharIter* pIter) { 2783 void CFX_WordBreak::Attach(IFX_CharIter* pIter) {
2784 ASSERT(pIter); 2784 ASSERT(pIter);
2785 m_pCurIter.reset(pIter); 2785 m_pCurIter.reset(pIter);
2786 } 2786 }
2787 2787
2788 void CFX_WordBreak::Attach(const CFX_WideString& wsText) { 2788 void CFX_WordBreak::Attach(const CFX_WideString& wsText) {
2789 m_pCurIter.reset(new CFX_CharIter(wsText)); 2789 m_pCurIter.reset(new CFX_CharIter(wsText));
2790 } 2790 }
2791 2791
2792 FX_BOOL CFX_WordBreak::Next(FX_BOOL bPrev) { 2792 bool CFX_WordBreak::Next(bool bPrev) {
2793 std::unique_ptr<IFX_CharIter> pIter( 2793 std::unique_ptr<IFX_CharIter> pIter(
2794 (bPrev ? m_pPreIter : m_pCurIter)->Clone()); 2794 (bPrev ? m_pPreIter : m_pCurIter)->Clone());
2795 if (pIter->IsEOF(!bPrev)) 2795 if (pIter->IsEOF(!bPrev))
2796 return FALSE; 2796 return false;
2797 2797
2798 pIter->Next(bPrev); 2798 pIter->Next(bPrev);
2799 if (!FindNextBreakPos(pIter.get(), bPrev, TRUE)) 2799 if (!FindNextBreakPos(pIter.get(), bPrev, true))
2800 return FALSE; 2800 return false;
2801 2801
2802 if (bPrev) { 2802 if (bPrev) {
2803 m_pCurIter = std::move(m_pPreIter); 2803 m_pCurIter = std::move(m_pPreIter);
2804 m_pCurIter->Next(TRUE); 2804 m_pCurIter->Next(true);
2805 m_pPreIter = std::move(pIter); 2805 m_pPreIter = std::move(pIter);
2806 } else { 2806 } else {
2807 m_pPreIter = std::move(m_pCurIter); 2807 m_pPreIter = std::move(m_pCurIter);
2808 m_pPreIter->Next(); 2808 m_pPreIter->Next();
2809 m_pCurIter = std::move(pIter); 2809 m_pCurIter = std::move(pIter);
2810 } 2810 }
2811 return TRUE; 2811 return true;
2812 } 2812 }
2813 2813
2814 void CFX_WordBreak::SetAt(int32_t nIndex) { 2814 void CFX_WordBreak::SetAt(int32_t nIndex) {
2815 m_pPreIter.reset(); 2815 m_pPreIter.reset();
2816 m_pCurIter->SetAt(nIndex); 2816 m_pCurIter->SetAt(nIndex);
2817 FindNextBreakPos(m_pCurIter.get(), TRUE, FALSE); 2817 FindNextBreakPos(m_pCurIter.get(), true, false);
2818 m_pPreIter = std::move(m_pCurIter); 2818 m_pPreIter = std::move(m_pCurIter);
2819 m_pCurIter.reset(m_pPreIter->Clone()); 2819 m_pCurIter.reset(m_pPreIter->Clone());
2820 FindNextBreakPos(m_pCurIter.get(), FALSE, FALSE); 2820 FindNextBreakPos(m_pCurIter.get(), false, false);
2821 } 2821 }
2822 2822
2823 int32_t CFX_WordBreak::GetWordPos() const { 2823 int32_t CFX_WordBreak::GetWordPos() const {
2824 return m_pPreIter->GetAt(); 2824 return m_pPreIter->GetAt();
2825 } 2825 }
2826 2826
2827 int32_t CFX_WordBreak::GetWordLength() const { 2827 int32_t CFX_WordBreak::GetWordLength() const {
2828 return m_pCurIter->GetAt() - m_pPreIter->GetAt() + 1; 2828 return m_pCurIter->GetAt() - m_pPreIter->GetAt() + 1;
2829 } 2829 }
2830 2830
2831 void CFX_WordBreak::GetWord(CFX_WideString& wsWord) const { 2831 void CFX_WordBreak::GetWord(CFX_WideString& wsWord) const {
2832 int32_t nWordLength = GetWordLength(); 2832 int32_t nWordLength = GetWordLength();
2833 if (nWordLength <= 0) { 2833 if (nWordLength <= 0) {
2834 return; 2834 return;
2835 } 2835 }
2836 FX_WCHAR* lpBuf = wsWord.GetBuffer(nWordLength); 2836 FX_WCHAR* lpBuf = wsWord.GetBuffer(nWordLength);
2837 std::unique_ptr<IFX_CharIter> pTempIter(m_pPreIter->Clone()); 2837 std::unique_ptr<IFX_CharIter> pTempIter(m_pPreIter->Clone());
2838 int32_t i = 0; 2838 int32_t i = 0;
2839 while (pTempIter->GetAt() <= m_pCurIter->GetAt()) { 2839 while (pTempIter->GetAt() <= m_pCurIter->GetAt()) {
2840 lpBuf[i++] = pTempIter->GetChar(); 2840 lpBuf[i++] = pTempIter->GetChar();
2841 if (!pTempIter->Next()) 2841 if (!pTempIter->Next())
2842 break; 2842 break;
2843 } 2843 }
2844 wsWord.ReleaseBuffer(nWordLength); 2844 wsWord.ReleaseBuffer(nWordLength);
2845 } 2845 }
2846 2846
2847 FX_BOOL CFX_WordBreak::IsEOF(FX_BOOL bTail) const { 2847 bool CFX_WordBreak::IsEOF(bool bTail) const {
2848 return m_pCurIter->IsEOF(bTail); 2848 return m_pCurIter->IsEOF(bTail);
2849 } 2849 }
2850 2850
2851 FX_BOOL CFX_WordBreak::FindNextBreakPos(IFX_CharIter* pIter, 2851 bool CFX_WordBreak::FindNextBreakPos(IFX_CharIter* pIter,
2852 FX_BOOL bPrev, 2852 bool bPrev,
2853 FX_BOOL bFromNext) { 2853 bool bFromNext) {
2854 FX_WordBreakProp ePreType = FX_WordBreakProp_None; 2854 FX_WordBreakProp ePreType = FX_WordBreakProp_None;
2855 FX_WordBreakProp eCurType = FX_WordBreakProp_None; 2855 FX_WordBreakProp eCurType = FX_WordBreakProp_None;
2856 FX_WordBreakProp eNextType = FX_WordBreakProp_None; 2856 FX_WordBreakProp eNextType = FX_WordBreakProp_None;
2857 if (pIter->IsEOF(!bPrev)) { 2857 if (pIter->IsEOF(!bPrev)) {
2858 return TRUE; 2858 return true;
2859 } 2859 }
2860 if (!(bFromNext || pIter->IsEOF(bPrev))) { 2860 if (!(bFromNext || pIter->IsEOF(bPrev))) {
2861 pIter->Next(!bPrev); 2861 pIter->Next(!bPrev);
2862 ePreType = GetWordBreakProperty(pIter->GetChar()); 2862 ePreType = GetWordBreakProperty(pIter->GetChar());
2863 pIter->Next(bPrev); 2863 pIter->Next(bPrev);
2864 } 2864 }
2865 eCurType = GetWordBreakProperty(pIter->GetChar()); 2865 eCurType = GetWordBreakProperty(pIter->GetChar());
2866 FX_BOOL bFirst = TRUE; 2866 bool bFirst = true;
2867 do { 2867 do {
2868 pIter->Next(bPrev); 2868 pIter->Next(bPrev);
2869 eNextType = GetWordBreakProperty(pIter->GetChar()); 2869 eNextType = GetWordBreakProperty(pIter->GetChar());
2870 uint16_t wBreak = 2870 uint16_t wBreak =
2871 gs_FX_WordBreak_Table[eCurType] & ((uint16_t)(1 << eNextType)); 2871 gs_FX_WordBreak_Table[eCurType] & ((uint16_t)(1 << eNextType));
2872 if (wBreak) { 2872 if (wBreak) {
2873 if (pIter->IsEOF(!bPrev)) { 2873 if (pIter->IsEOF(!bPrev)) {
2874 pIter->Next(!bPrev); 2874 pIter->Next(!bPrev);
2875 return TRUE; 2875 return true;
2876 } 2876 }
2877 if (bFirst) { 2877 if (bFirst) {
2878 int32_t nFlags = 0; 2878 int32_t nFlags = 0;
2879 if (eCurType == FX_WordBreakProp_MidLetter) { 2879 if (eCurType == FX_WordBreakProp_MidLetter) {
2880 if (eNextType == FX_WordBreakProp_ALetter) { 2880 if (eNextType == FX_WordBreakProp_ALetter) {
2881 nFlags = 1; 2881 nFlags = 1;
2882 } 2882 }
2883 } else if (eCurType == FX_WordBreakProp_MidNum) { 2883 } else if (eCurType == FX_WordBreakProp_MidNum) {
2884 if (eNextType == FX_WordBreakProp_Numberic) { 2884 if (eNextType == FX_WordBreakProp_Numberic) {
2885 nFlags = 2; 2885 nFlags = 2;
2886 } 2886 }
2887 } else if (eCurType == FX_WordBreakProp_MidNumLet) { 2887 } else if (eCurType == FX_WordBreakProp_MidNumLet) {
2888 if (eNextType == FX_WordBreakProp_ALetter) { 2888 if (eNextType == FX_WordBreakProp_ALetter) {
2889 nFlags = 1; 2889 nFlags = 1;
2890 } else if (eNextType == FX_WordBreakProp_Numberic) { 2890 } else if (eNextType == FX_WordBreakProp_Numberic) {
2891 nFlags = 2; 2891 nFlags = 2;
2892 } 2892 }
2893 } 2893 }
2894 if (nFlags > 0) { 2894 if (nFlags > 0) {
2895 ASSERT(nFlags <= 2); 2895 ASSERT(nFlags <= 2);
2896 if (!((nFlags == 1 && ePreType == FX_WordBreakProp_ALetter) || 2896 if (!((nFlags == 1 && ePreType == FX_WordBreakProp_ALetter) ||
2897 (nFlags == 2 && ePreType == FX_WordBreakProp_Numberic))) { 2897 (nFlags == 2 && ePreType == FX_WordBreakProp_Numberic))) {
2898 pIter->Next(!bPrev); 2898 pIter->Next(!bPrev);
2899 return TRUE; 2899 return true;
2900 } 2900 }
2901 pIter->Next(bPrev); 2901 pIter->Next(bPrev);
2902 wBreak = FALSE; 2902 wBreak = false;
2903 } 2903 }
2904 bFirst = FALSE; 2904 bFirst = false;
2905 } 2905 }
2906 if (wBreak) { 2906 if (wBreak) {
2907 int32_t nFlags = 0; 2907 int32_t nFlags = 0;
2908 if (eNextType == FX_WordBreakProp_MidLetter) { 2908 if (eNextType == FX_WordBreakProp_MidLetter) {
2909 if (eCurType == FX_WordBreakProp_ALetter) { 2909 if (eCurType == FX_WordBreakProp_ALetter) {
2910 nFlags = 1; 2910 nFlags = 1;
2911 } 2911 }
2912 } else if (eNextType == FX_WordBreakProp_MidNum) { 2912 } else if (eNextType == FX_WordBreakProp_MidNum) {
2913 if (eCurType == FX_WordBreakProp_Numberic) { 2913 if (eCurType == FX_WordBreakProp_Numberic) {
2914 nFlags = 2; 2914 nFlags = 2;
2915 } 2915 }
2916 } else if (eNextType == FX_WordBreakProp_MidNumLet) { 2916 } else if (eNextType == FX_WordBreakProp_MidNumLet) {
2917 if (eCurType == FX_WordBreakProp_ALetter) { 2917 if (eCurType == FX_WordBreakProp_ALetter) {
2918 nFlags = 1; 2918 nFlags = 1;
2919 } else if (eCurType == FX_WordBreakProp_Numberic) { 2919 } else if (eCurType == FX_WordBreakProp_Numberic) {
2920 nFlags = 2; 2920 nFlags = 2;
2921 } 2921 }
2922 } 2922 }
2923 if (nFlags <= 0) { 2923 if (nFlags <= 0) {
2924 pIter->Next(!bPrev); 2924 pIter->Next(!bPrev);
2925 return TRUE; 2925 return true;
2926 } 2926 }
2927 ASSERT(nFlags <= 2); 2927 ASSERT(nFlags <= 2);
2928 pIter->Next(bPrev); 2928 pIter->Next(bPrev);
2929 eNextType = (FX_WordBreakProp)GetWordBreakProperty(pIter->GetChar()); 2929 eNextType = (FX_WordBreakProp)GetWordBreakProperty(pIter->GetChar());
2930 if (!((nFlags == 1 && eNextType == FX_WordBreakProp_ALetter) || 2930 if (!((nFlags == 1 && eNextType == FX_WordBreakProp_ALetter) ||
2931 (nFlags == 2 && eNextType == FX_WordBreakProp_Numberic))) { 2931 (nFlags == 2 && eNextType == FX_WordBreakProp_Numberic))) {
2932 pIter->Next(!bPrev); 2932 pIter->Next(!bPrev);
2933 pIter->Next(!bPrev); 2933 pIter->Next(!bPrev);
2934 return TRUE; 2934 return true;
2935 } 2935 }
2936 } 2936 }
2937 } 2937 }
2938 ePreType = eCurType; 2938 ePreType = eCurType;
2939 eCurType = eNextType; 2939 eCurType = eNextType;
2940 bFirst = FALSE; 2940 bFirst = false;
2941 } while (!pIter->IsEOF(!bPrev)); 2941 } while (!pIter->IsEOF(!bPrev));
2942 return TRUE; 2942 return true;
2943 } 2943 }
OLDNEW
« no previous file with comments | « xfa/fde/cfx_wordbreak.h ('k') | xfa/fde/css/cfde_cssrulecollection.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698