diff options
Diffstat (limited to 'fpdfsdk/fxedit')
-rw-r--r-- | fpdfsdk/fxedit/fx_edit.h | 23 | ||||
-rw-r--r-- | fpdfsdk/fxedit/fxet_ap.cpp | 36 | ||||
-rw-r--r-- | fpdfsdk/fxedit/fxet_edit.cpp | 36 | ||||
-rw-r--r-- | fpdfsdk/fxedit/fxet_edit.h | 9 | ||||
-rw-r--r-- | fpdfsdk/fxedit/fxet_list.h | 2 |
5 files changed, 39 insertions, 67 deletions
diff --git a/fpdfsdk/fxedit/fx_edit.h b/fpdfsdk/fxedit/fx_edit.h deleted file mode 100644 index 6c9166709c..0000000000 --- a/fpdfsdk/fxedit/fx_edit.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef FPDFSDK_FXEDIT_FX_EDIT_H_ -#define FPDFSDK_FXEDIT_FX_EDIT_H_ - -#include "core/fxcrt/fx_basic.h" - -class IPVT_FontMap; - -#define FX_EDIT_ISLATINWORD(u) \ - (u == 0x2D || (u <= 0x005A && u >= 0x0041) || \ - (u <= 0x007A && u >= 0x0061) || (u <= 0x02AF && u >= 0x00C0)) - -CFX_ByteString GetPDFWordString(IPVT_FontMap* pFontMap, - int32_t nFontIndex, - uint16_t Word, - uint16_t SubWord); - -#endif // FPDFSDK_FXEDIT_FX_EDIT_H_ diff --git a/fpdfsdk/fxedit/fxet_ap.cpp b/fpdfsdk/fxedit/fxet_ap.cpp deleted file mode 100644 index 1576efa89a..0000000000 --- a/fpdfsdk/fxedit/fxet_ap.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/fpdfapi/font/cpdf_font.h" -#include "core/fpdfapi/parser/fpdf_parser_decode.h" -#include "core/fpdfdoc/cpvt_word.h" -#include "core/fpdfdoc/ipvt_fontmap.h" -#include "fpdfsdk/fxedit/fx_edit.h" -#include "fpdfsdk/fxedit/fxet_edit.h" - -CFX_ByteString GetPDFWordString(IPVT_FontMap* pFontMap, - int32_t nFontIndex, - uint16_t Word, - uint16_t SubWord) { - CPDF_Font* pPDFFont = pFontMap->GetPDFFont(nFontIndex); - if (!pPDFFont) - return CFX_ByteString(); - - CFX_ByteString sWord; - if (SubWord > 0) { - Word = SubWord; - } else { - uint32_t dwCharCode = pPDFFont->IsUnicodeCompatible() - ? pPDFFont->CharCodeFromUnicode(Word) - : pFontMap->CharCodeFromUnicode(nFontIndex, Word); - if (dwCharCode > 0) { - pPDFFont->AppendChar(&sWord, dwCharCode); - return sWord; - } - } - pPDFFont->AppendChar(&sWord, Word); - return sWord; -} diff --git a/fpdfsdk/fxedit/fxet_edit.cpp b/fpdfsdk/fxedit/fxet_edit.cpp index 96868d03c1..6c4595408f 100644 --- a/fpdfsdk/fxedit/fxet_edit.cpp +++ b/fpdfsdk/fxedit/fxet_edit.cpp @@ -27,7 +27,6 @@ #include "core/fxge/cfx_pathdata.h" #include "core/fxge/cfx_renderdevice.h" #include "fpdfsdk/cfx_systemhandler.h" -#include "fpdfsdk/fxedit/fx_edit.h" #include "fpdfsdk/pdfwindow/cpwl_edit.h" #include "fpdfsdk/pdfwindow/cpwl_edit_ctrl.h" #include "fpdfsdk/pdfwindow/cpwl_scroll_bar.h" @@ -586,14 +585,15 @@ void CFX_Edit::DrawEdit(CFX_RenderDevice* pDevice, crOldFill = crCurFill; } - sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word, - SubWord); + sTextBuf << pEdit->GetPDFWordString(word.nFontIndex, word.Word, + SubWord); } else { DrawTextString( - pDevice, CFX_PointF(word.ptWord.x + ptOffset.x, - word.ptWord.y + ptOffset.y), + pDevice, + CFX_PointF(word.ptWord.x + ptOffset.x, + word.ptWord.y + ptOffset.y), pFontMap->GetPDFFont(word.nFontIndex), fFontSize, pUser2Device, - GetPDFWordString(pFontMap, word.nFontIndex, word.Word, SubWord), + pEdit->GetPDFWordString(word.nFontIndex, word.Word, SubWord), crCurFill, nHorzScale); } oldplace = place; @@ -1937,6 +1937,30 @@ void CFX_Edit::AddEditUndoItem( m_Undo.AddItem(std::move(pEditUndoItem)); } +CFX_ByteString CFX_Edit::GetPDFWordString(int32_t nFontIndex, + uint16_t Word, + uint16_t SubWord) { + IPVT_FontMap* pFontMap = GetFontMap(); + CPDF_Font* pPDFFont = pFontMap->GetPDFFont(nFontIndex); + if (!pPDFFont) + return CFX_ByteString(); + + CFX_ByteString sWord; + if (SubWord > 0) { + Word = SubWord; + } else { + uint32_t dwCharCode = pPDFFont->IsUnicodeCompatible() + ? pPDFFont->CharCodeFromUnicode(Word) + : pFontMap->CharCodeFromUnicode(nFontIndex, Word); + if (dwCharCode > 0) { + pPDFFont->AppendChar(&sWord, dwCharCode); + return sWord; + } + } + pPDFFont->AppendChar(&sWord, Word); + return sWord; +} + CFX_Edit_LineRectArray::CFX_Edit_LineRectArray() {} CFX_Edit_LineRectArray::~CFX_Edit_LineRectArray() {} diff --git a/fpdfsdk/fxedit/fxet_edit.h b/fpdfsdk/fxedit/fxet_edit.h index bb5246226d..4aaee69f96 100644 --- a/fpdfsdk/fxedit/fxet_edit.h +++ b/fpdfsdk/fxedit/fxet_edit.h @@ -14,7 +14,10 @@ #include "core/fpdfdoc/cpvt_secprops.h" #include "core/fpdfdoc/cpvt_wordprops.h" #include "core/fxcrt/cfx_unowned_ptr.h" -#include "fpdfsdk/fxedit/fx_edit.h" + +#define FX_EDIT_ISLATINWORD(u) \ + (u == 0x2D || (u <= 0x005A && u >= 0x0041) || \ + (u <= 0x007A && u >= 0x0061) || (u <= 0x02AF && u >= 0x00C0)) class CFFL_FormFiller; class CFX_Edit; @@ -388,6 +391,10 @@ class CFX_Edit { int32_t GetTotalLines() const; + CFX_ByteString GetPDFWordString(int32_t nFontIndex, + uint16_t Word, + uint16_t SubWord); + private: friend class CFX_Edit_Iterator; friend class CFXEU_InsertWord; diff --git a/fpdfsdk/fxedit/fxet_list.h b/fpdfsdk/fxedit/fxet_list.h index 6a37d6125a..83b8d9e865 100644 --- a/fpdfsdk/fxedit/fxet_list.h +++ b/fpdfsdk/fxedit/fxet_list.h @@ -13,11 +13,11 @@ #include "core/fxcrt/cfx_unowned_ptr.h" #include "core/fxcrt/fx_coordinates.h" -#include "fpdfsdk/fxedit/fx_edit.h" class CFX_Edit; class CFX_Edit_Iterator; class CPWL_List_Notify; +class IPVT_FontMap; class CPLST_Select { public: |