diff options
author | Lei Zhang <thestig@chromium.org> | 2015-08-17 18:00:48 -0700 |
---|---|---|
committer | Lei Zhang <thestig@chromium.org> | 2015-08-17 18:00:48 -0700 |
commit | 2ae87d2e8ddff79d0e96aad3db97e090db21fb99 (patch) | |
tree | 9bbae4e8d6b554a4b4b12fe0cfc5a8a5b54e43b7 /core/src/fpdftext | |
parent | 1d9dbd53b205b2b4d9e75a7eeb95e80837917ea3 (diff) | |
download | pdfium-2ae87d2e8ddff79d0e96aad3db97e090db21fb99.tar.xz |
Clean up IFX_BidiChar
- Replace IFX_BidiChar with just CFX_BidiChar
- Document implementation
- Change out parameters to pointers
- Remove dead code
- Add an enum for bidi directions
- Move several externs to a header
- Add unit tests
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1197643002 .
Diffstat (limited to 'core/src/fpdftext')
-rw-r--r-- | core/src/fpdftext/fpdf_text.cpp | 16 | ||||
-rw-r--r-- | core/src/fpdftext/fpdf_text_int.cpp | 36 | ||||
-rw-r--r-- | core/src/fpdftext/text_int.h | 2 |
3 files changed, 27 insertions, 27 deletions
diff --git a/core/src/fpdftext/fpdf_text.cpp b/core/src/fpdftext/fpdf_text.cpp index e7ca6c136f..af944d965e 100644 --- a/core/src/fpdftext/fpdf_text.cpp +++ b/core/src/fpdftext/fpdf_text.cpp @@ -9,7 +9,7 @@ #include "../../include/fpdfapi/fpdf_pageobj.h" #include "../../include/fpdfapi/fpdf_resource.h" #include "../../include/fpdftext/fpdf_text.h" -#include "../../include/fxcrt/fx_arb.h" +#include "../../include/fxcrt/fx_bidi.h" #include "../../include/fxcrt/fx_ucd.h" #include "text_int.h" #include "txtproc.h" @@ -321,35 +321,35 @@ void NormalizeString(CFX_WideString& str) { return; } CFX_WideString sBuffer; - nonstd::unique_ptr<IFX_BidiChar> pBidiChar(IFX_BidiChar::Create()); + nonstd::unique_ptr<CFX_BidiChar> pBidiChar(new CFX_BidiChar); CFX_WordArray order; FX_BOOL bR2L = FALSE; int32_t start = 0, count = 0, i = 0; int nR2L = 0, nL2R = 0; for (i = 0; i < str.GetLength(); i++) { if (pBidiChar->AppendChar(str.GetAt(i))) { - int32_t ret = pBidiChar->GetBidiInfo(start, count); + CFX_BidiChar::Direction ret = pBidiChar->GetBidiInfo(&start, &count); order.Add(start); order.Add(count); order.Add(ret); if (!bR2L) { - if (ret == 2) { + if (ret == CFX_BidiChar::RIGHT) { nR2L++; - } else if (ret == 1) { + } else if (ret == CFX_BidiChar::LEFT) { nL2R++; } } } } if (pBidiChar->EndChar()) { - int32_t ret = pBidiChar->GetBidiInfo(start, count); + CFX_BidiChar::Direction ret = pBidiChar->GetBidiInfo(&start, &count); order.Add(start); order.Add(count); order.Add(ret); if (!bR2L) { - if (ret == 2) { + if (ret == CFX_BidiChar::RIGHT) { nR2L++; - } else if (ret == 1) { + } else if (ret == CFX_BidiChar::LEFT) { nL2R++; } } diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp index ce673447a4..462f1369dd 100644 --- a/core/src/fpdftext/fpdf_text_int.cpp +++ b/core/src/fpdftext/fpdf_text_int.cpp @@ -13,7 +13,7 @@ #include "../../include/fpdfapi/fpdf_pageobj.h" #include "../../include/fpdfapi/fpdf_resource.h" #include "../../include/fpdftext/fpdf_text.h" -#include "../../include/fxcrt/fx_arb.h" +#include "../../include/fxcrt/fx_bidi.h" #include "../../include/fxcrt/fx_ucd.h" #include "text_int.h" @@ -1020,10 +1020,10 @@ int CPDF_TextPage::GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const { } return w; } -void CPDF_TextPage::OnPiece(IFX_BidiChar* pBidi, CFX_WideString& str) { +void CPDF_TextPage::OnPiece(CFX_BidiChar* pBidi, CFX_WideString& str) { int32_t start, count; - int32_t ret = pBidi->GetBidiInfo(start, count); - if (ret == 2) { + CFX_BidiChar::Direction ret = pBidi->GetBidiInfo(&start, &count); + if (ret == CFX_BidiChar::RIGHT) { for (int i = start + count - 1; i >= start; i--) { m_TextBuf.AppendChar(str.GetAt(i)); m_charList.Add(*(PAGECHAR_INFO*)m_TempCharList.GetAt(i)); @@ -1104,7 +1104,7 @@ void CPDF_TextPage::CloseTempLine() { if (count1 <= 0) { return; } - nonstd::unique_ptr<IFX_BidiChar> pBidiChar(IFX_BidiChar::Create()); + nonstd::unique_ptr<CFX_BidiChar> pBidiChar(new CFX_BidiChar); CFX_WideString str = m_TempTextBuf.GetWideString(); CFX_WordArray order; FX_BOOL bR2L = FALSE; @@ -1126,28 +1126,28 @@ void CPDF_TextPage::CloseTempLine() { bPrevSpace = FALSE; } if (pBidiChar->AppendChar(str.GetAt(i))) { - int32_t ret = pBidiChar->GetBidiInfo(start, count); + CFX_BidiChar::Direction ret = pBidiChar->GetBidiInfo(&start, &count); order.Add(start); order.Add(count); order.Add(ret); if (!bR2L) { - if (ret == 2) { + if (ret == CFX_BidiChar::RIGHT) { nR2L++; - } else if (ret == 1) { + } else if (ret == CFX_BidiChar::LEFT) { nL2R++; } } } } if (pBidiChar->EndChar()) { - int32_t ret = pBidiChar->GetBidiInfo(start, count); + CFX_BidiChar::Direction ret = pBidiChar->GetBidiInfo(&start, &count); order.Add(start); order.Add(count); order.Add(ret); if (!bR2L) { - if (ret == 2) { + if (ret == CFX_BidiChar::RIGHT) { nR2L++; - } else if (ret == 1) { + } else if (ret == CFX_BidiChar::LEFT) { nL2R++; } } @@ -1762,7 +1762,7 @@ void CPDF_TextPage::SwapTempTextBuf(int32_t iCharListStartAppend, FX_BOOL CPDF_TextPage::IsRightToLeft(const CPDF_TextObject* pTextObj, const CPDF_Font* pFont, int nItems) const { - nonstd::unique_ptr<IFX_BidiChar> pBidiChar(IFX_BidiChar::Create()); + nonstd::unique_ptr<CFX_BidiChar> pBidiChar(new CFX_BidiChar); int32_t nR2L = 0; int32_t nL2R = 0; int32_t start = 0, count = 0; @@ -1781,19 +1781,19 @@ FX_BOOL CPDF_TextPage::IsRightToLeft(const CPDF_TextObject* pTextObj, continue; } if (pBidiChar->AppendChar(wChar)) { - int32_t ret = pBidiChar->GetBidiInfo(start, count); - if (ret == 2) { + CFX_BidiChar::Direction ret = pBidiChar->GetBidiInfo(&start, &count); + if (ret == CFX_BidiChar::RIGHT) { nR2L++; - } else if (ret == 1) { + } else if (ret == CFX_BidiChar::LEFT) { nL2R++; } } } if (pBidiChar->EndChar()) { - int32_t ret = pBidiChar->GetBidiInfo(start, count); - if (ret == 2) { + CFX_BidiChar::Direction ret = pBidiChar->GetBidiInfo(&start, &count); + if (ret == CFX_BidiChar::RIGHT) { nR2L++; - } else if (ret == 1) { + } else if (ret == CFX_BidiChar::LEFT) { nL2R++; } } diff --git a/core/src/fpdftext/text_int.h b/core/src/fpdftext/text_int.h index 091ee241d4..3f1023ac8a 100644 --- a/core/src/fpdftext/text_int.h +++ b/core/src/fpdftext/text_int.h @@ -111,7 +111,7 @@ class CPDF_TextPage : public IPDF_TextPage { CPDF_TextObject* pTextObj2); int GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const; void CloseTempLine(); - void OnPiece(IFX_BidiChar* pBidi, CFX_WideString& str); + void OnPiece(CFX_BidiChar* pBidi, CFX_WideString& str); int32_t PreMarkedContent(PDFTEXT_Obj pObj); void ProcessMarkedContent(PDFTEXT_Obj pObj); void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const; |