From ed9c4386713084f37548b46ab36f618021f716f5 Mon Sep 17 00:00:00 2001 From: dsinclair Date: Mon, 4 Apr 2016 15:24:20 -0700 Subject: Make IPDF_VariableText_{Provider,Iterator} inner classes. This CL moves the IPDF_VariableText_Provider and IPDF_VariableText_Iterator classes to be nested sub-classes of IPDF_VariableText. BUG=pdfium:455 Review URL: https://codereview.chromium.org/1855403002 --- core/fpdfdoc/cpvt_generateap.cpp | 2 +- core/fpdfdoc/cpvt_generateap.h | 5 +- core/fpdfdoc/cpvt_provider.h | 6 +- core/fpdfdoc/doc_vt.cpp | 10 +- core/fpdfdoc/include/ipdf_variabletext_provider.h | 28 ---- core/fpdfdoc/ipdf_variabletext_provider.cpp | 9 -- core/fpdfdoc/pdf_vt.h | 14 +- core/include/fpdfdoc/fpdf_vt.h | 186 ++++++---------------- 8 files changed, 71 insertions(+), 189 deletions(-) delete mode 100644 core/fpdfdoc/include/ipdf_variabletext_provider.h delete mode 100644 core/fpdfdoc/ipdf_variabletext_provider.cpp (limited to 'core') diff --git a/core/fpdfdoc/cpvt_generateap.cpp b/core/fpdfdoc/cpvt_generateap.cpp index f9d6e9630b..dd935de61e 100644 --- a/core/fpdfdoc/cpvt_generateap.cpp +++ b/core/fpdfdoc/cpvt_generateap.cpp @@ -499,7 +499,7 @@ FX_BOOL CPVT_GenerateAP::GenerateListBoxAP(CPDF_Document* pDoc, // Static. CFX_ByteString CPVT_GenerateAP::GenerateEditAP( IPVT_FontMap* pFontMap, - IPDF_VariableText_Iterator* pIterator, + IPDF_VariableText::Iterator* pIterator, const CFX_FloatPoint& ptOffset, FX_BOOL bContinuous, uint16_t SubWord, diff --git a/core/fpdfdoc/cpvt_generateap.h b/core/fpdfdoc/cpvt_generateap.h index b97b38ad6b..79062cbfc3 100644 --- a/core/fpdfdoc/cpvt_generateap.h +++ b/core/fpdfdoc/cpvt_generateap.h @@ -12,6 +12,7 @@ #include "core/fxcrt/include/fx_coordinates.h" #include "core/fxcrt/include/fx_string.h" #include "core/fxcrt/include/fx_system.h" +#include "core/include/fpdfdoc/fpdf_vt.h" // border style #define PBS_SOLID 0 @@ -23,8 +24,8 @@ class CPDF_Dictionary; class CPDF_Document; -class IPDF_VariableText_Iterator; class IPVT_FontMap; + struct CPVT_WordRange; FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); @@ -38,7 +39,7 @@ class CPVT_GenerateAP { static FX_BOOL GenerateListBoxAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); static CFX_ByteString GenerateEditAP(IPVT_FontMap* pFontMap, - IPDF_VariableText_Iterator* pIterator, + IPDF_VariableText::Iterator* pIterator, const CFX_FloatPoint& ptOffset, FX_BOOL bContinuous, uint16_t SubWord = 0, diff --git a/core/fpdfdoc/cpvt_provider.h b/core/fpdfdoc/cpvt_provider.h index e7edd538e5..fb6ff94861 100644 --- a/core/fpdfdoc/cpvt_provider.h +++ b/core/fpdfdoc/cpvt_provider.h @@ -7,16 +7,16 @@ #ifndef CORE_FPDFDOC_CPVT_PROVIDER_H_ #define CORE_FPDFDOC_CPVT_PROVIDER_H_ -#include "core/fpdfdoc/include/ipdf_variabletext_provider.h" #include "core/fpdfdoc/ipvt_fontmap.h" #include "core/fxcrt/include/fx_system.h" +#include "core/include/fpdfdoc/fpdf_vt.h" -class CPVT_Provider : public IPDF_VariableText_Provider { +class CPVT_Provider : public IPDF_VariableText::Provider { public: CPVT_Provider(IPVT_FontMap* pFontMap); ~CPVT_Provider() override; - // IPDF_VariableText_Provider + // IPDF_VariableText::Provider int32_t GetCharWidth(int32_t nFontIndex, uint16_t word, int32_t nWordStyle) override; diff --git a/core/fpdfdoc/doc_vt.cpp b/core/fpdfdoc/doc_vt.cpp index 5977288d54..e91b945986 100644 --- a/core/fpdfdoc/doc_vt.cpp +++ b/core/fpdfdoc/doc_vt.cpp @@ -6,10 +6,10 @@ #include -#include "core/fpdfdoc/include/ipdf_variabletext_provider.h" #include "core/fpdfdoc/pdf_vt.h" #include "core/include/fpdfdoc/fpdf_doc.h" #include "core/include/fpdfdoc/fpdf_vt.h" +#include "core/include/fpdfdoc/fpdf_vt.h" const uint8_t gFontSizeSteps[] = {4, 6, 8, 9, 10, 12, 14, 18, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, @@ -1643,15 +1643,15 @@ int32_t CPDF_VariableText::GetDefaultFontIndex() { FX_BOOL CPDF_VariableText::IsLatinWord(uint16_t word) { return m_pVTProvider ? m_pVTProvider->IsLatinWord(word) : FALSE; } -IPDF_VariableText_Iterator* CPDF_VariableText::GetIterator() { +IPDF_VariableText::Iterator* CPDF_VariableText::GetIterator() { if (!m_pVTIterator) { m_pVTIterator = new CPDF_VariableText_Iterator(this); } return m_pVTIterator; } -IPDF_VariableText_Provider* CPDF_VariableText::SetProvider( - IPDF_VariableText_Provider* pProvider) { - IPDF_VariableText_Provider* pOld = m_pVTProvider; +IPDF_VariableText::Provider* CPDF_VariableText::SetProvider( + IPDF_VariableText::Provider* pProvider) { + IPDF_VariableText::Provider* pOld = m_pVTProvider; m_pVTProvider = pProvider; return pOld; } diff --git a/core/fpdfdoc/include/ipdf_variabletext_provider.h b/core/fpdfdoc/include/ipdf_variabletext_provider.h deleted file mode 100644 index 592c7da9d2..0000000000 --- a/core/fpdfdoc/include/ipdf_variabletext_provider.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 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 CORE_FPDFDOC_INCLUDE_IPDF_VARIABLETEXT_PROVIDER_H_ -#define CORE_FPDFDOC_INCLUDE_IPDF_VARIABLETEXT_PROVIDER_H_ - -#include "core/fxcrt/include/fx_system.h" - -class IPDF_VariableText_Provider { - public: - virtual ~IPDF_VariableText_Provider(); - - virtual int32_t GetCharWidth(int32_t nFontIndex, - uint16_t word, - int32_t nWordStyle) = 0; - virtual int32_t GetTypeAscent(int32_t nFontIndex) = 0; - virtual int32_t GetTypeDescent(int32_t nFontIndex) = 0; - virtual int32_t GetWordFontIndex(uint16_t word, - int32_t charset, - int32_t nFontIndex) = 0; - virtual int32_t GetDefaultFontIndex() = 0; - virtual FX_BOOL IsLatinWord(uint16_t word) = 0; -}; - -#endif // CORE_FPDFDOC_INCLUDE_IPDF_VARIABLETEXT_PROVIDER_H_ diff --git a/core/fpdfdoc/ipdf_variabletext_provider.cpp b/core/fpdfdoc/ipdf_variabletext_provider.cpp deleted file mode 100644 index 82937f745a..0000000000 --- a/core/fpdfdoc/ipdf_variabletext_provider.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 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/fpdfdoc/include/ipdf_variabletext_provider.h" - -IPDF_VariableText_Provider::~IPDF_VariableText_Provider() {} diff --git a/core/fpdfdoc/pdf_vt.h b/core/fpdfdoc/pdf_vt.h index f97c48638f..73913f78f4 100644 --- a/core/fpdfdoc/pdf_vt.h +++ b/core/fpdfdoc/pdf_vt.h @@ -342,9 +342,9 @@ class CPDF_VariableText : public IPDF_VariableText, private CPDF_EditContainer { ~CPDF_VariableText() override; // IPDF_VariableText - IPDF_VariableText_Provider* SetProvider( - IPDF_VariableText_Provider* pProvider) override; - IPDF_VariableText_Iterator* GetIterator() override; + IPDF_VariableText::Provider* SetProvider( + IPDF_VariableText::Provider* pProvider) override; + IPDF_VariableText::Iterator* GetIterator() override; void SetPlateRect(const CFX_FloatRect& rect) override { CPDF_EditContainer::SetPlateRect(rect); } @@ -521,16 +521,16 @@ class CPDF_VariableText : public IPDF_VariableText, private CPDF_EditContainer { private: FX_BOOL m_bInitial; FX_BOOL m_bRichText; - IPDF_VariableText_Provider* m_pVTProvider; - CPDF_VariableText_Iterator* m_pVTIterator; + IPDF_VariableText::Provider* m_pVTProvider; + CPDF_VariableText::Iterator* m_pVTIterator; }; -class CPDF_VariableText_Iterator : public IPDF_VariableText_Iterator { +class CPDF_VariableText_Iterator : public IPDF_VariableText::Iterator { public: explicit CPDF_VariableText_Iterator(CPDF_VariableText* pVT); ~CPDF_VariableText_Iterator() override; - // IPDF_VariableText_Iterator + // IPDF_VariableText::Iterator FX_BOOL NextWord() override; FX_BOOL PrevWord() override; FX_BOOL NextLine() override; diff --git a/core/include/fpdfdoc/fpdf_vt.h b/core/include/fpdfdoc/fpdf_vt.h index 1e0d351fee..d8a904c632 100644 --- a/core/include/fpdfdoc/fpdf_vt.h +++ b/core/include/fpdfdoc/fpdf_vt.h @@ -10,8 +10,6 @@ #include "core/include/fxge/fx_dib.h" class IPDF_VariableText; -class IPDF_VariableText_Iterator; -class IPDF_VariableText_Provider; struct CPVT_Line; struct CPVT_Section; struct CPVT_Word; @@ -39,57 +37,43 @@ struct CPVT_WordPlace { FX_BOOL operator!=(const CPVT_WordPlace& wp) const { return !(*this == wp); } inline int32_t WordCmp(const CPVT_WordPlace& wp) const { - if (nSecIndex > wp.nSecIndex) { + if (nSecIndex > wp.nSecIndex) return 1; - } - if (nSecIndex < wp.nSecIndex) { + if (nSecIndex < wp.nSecIndex) return -1; - } - if (nLineIndex > wp.nLineIndex) { + if (nLineIndex > wp.nLineIndex) return 1; - } - if (nLineIndex < wp.nLineIndex) { + if (nLineIndex < wp.nLineIndex) return -1; - } - if (nWordIndex > wp.nWordIndex) { + if (nWordIndex > wp.nWordIndex) return 1; - } - if (nWordIndex < wp.nWordIndex) { + if (nWordIndex < wp.nWordIndex) return -1; - } return 0; } inline int32_t LineCmp(const CPVT_WordPlace& wp) const { - if (nSecIndex > wp.nSecIndex) { + if (nSecIndex > wp.nSecIndex) return 1; - } - if (nSecIndex < wp.nSecIndex) { + if (nSecIndex < wp.nSecIndex) return -1; - } - if (nLineIndex > wp.nLineIndex) { + if (nLineIndex > wp.nLineIndex) return 1; - } - if (nLineIndex < wp.nLineIndex) { + if (nLineIndex < wp.nLineIndex) return -1; - } return 0; } inline int32_t SecCmp(const CPVT_WordPlace& wp) const { - if (nSecIndex > wp.nSecIndex) { + if (nSecIndex > wp.nSecIndex) return 1; - } - if (nSecIndex < wp.nSecIndex) { + if (nSecIndex < wp.nSecIndex) return -1; - } return 0; } int32_t nSecIndex; - int32_t nLineIndex; - int32_t nWordIndex; }; struct CPVT_WordRange { @@ -135,7 +119,6 @@ struct CPVT_WordRange { } CPVT_WordPlace BeginPos; - CPVT_WordPlace EndPos; }; struct CPVT_SecProps { @@ -152,9 +135,7 @@ struct CPVT_SecProps { nAlignment(other.nAlignment) {} FX_FLOAT fLineLeading; - FX_FLOAT fLineIndent; - int32_t nAlignment; }; struct CPVT_WordProps { @@ -192,17 +173,11 @@ struct CPVT_WordProps { nHorzScale(other.nHorzScale) {} int32_t nFontIndex; - FX_FLOAT fFontSize; - FX_COLORREF dwWordColor; - int32_t nScriptType; - int32_t nWordStyle; - FX_FLOAT fCharSpace; - int32_t nHorzScale; }; struct CPVT_Word { @@ -217,23 +192,14 @@ struct CPVT_Word { WordProps() {} uint16_t Word; - int32_t nCharset; - CPVT_WordPlace WordPlace; - CFX_FloatPoint ptWord; - FX_FLOAT fAscent; - FX_FLOAT fDescent; - FX_FLOAT fWidth; - int32_t nFontIndex; - FX_FLOAT fFontSize; - CPVT_WordProps WordProps; }; struct CPVT_Line { @@ -241,104 +207,84 @@ struct CPVT_Line { : ptLine(0, 0), fLineWidth(0.0f), fLineAscent(0.0f), fLineDescent(0.0f) {} CPVT_WordPlace lineplace; - CPVT_WordPlace lineEnd; - CFX_FloatPoint ptLine; - FX_FLOAT fLineWidth; - FX_FLOAT fLineAscent; - FX_FLOAT fLineDescent; }; struct CPVT_Section { CPVT_WordPlace secplace; - CFX_FloatRect rcSection; - CPVT_SecProps SecProps; - CPVT_WordProps WordProps; }; -class IPDF_VariableText_Iterator { - public: - virtual ~IPDF_VariableText_Iterator() {} - - virtual FX_BOOL NextWord() = 0; - - virtual FX_BOOL PrevWord() = 0; - - virtual FX_BOOL NextLine() = 0; - - virtual FX_BOOL PrevLine() = 0; - - virtual FX_BOOL NextSection() = 0; - - virtual FX_BOOL PrevSection() = 0; - - virtual FX_BOOL GetWord(CPVT_Word& word) const = 0; - - virtual FX_BOOL SetWord(const CPVT_Word& word) = 0; - - virtual FX_BOOL GetLine(CPVT_Line& line) const = 0; - - virtual FX_BOOL GetSection(CPVT_Section& section) const = 0; - - virtual FX_BOOL SetSection(const CPVT_Section& section) = 0; - - virtual void SetAt(int32_t nWordIndex) = 0; - - virtual void SetAt(const CPVT_WordPlace& place) = 0; - - virtual const CPVT_WordPlace& GetAt() const = 0; -}; class IPDF_VariableText { public: - static IPDF_VariableText* NewVariableText(); + class Provider { + public: + virtual ~Provider() {} + + virtual int32_t GetCharWidth(int32_t nFontIndex, + uint16_t word, + int32_t nWordStyle) = 0; + virtual int32_t GetTypeAscent(int32_t nFontIndex) = 0; + virtual int32_t GetTypeDescent(int32_t nFontIndex) = 0; + virtual int32_t GetWordFontIndex(uint16_t word, + int32_t charset, + int32_t nFontIndex) = 0; + virtual int32_t GetDefaultFontIndex() = 0; + virtual FX_BOOL IsLatinWord(uint16_t word) = 0; + }; + + class Iterator { + public: + virtual ~Iterator() {} + + virtual FX_BOOL NextWord() = 0; + virtual FX_BOOL PrevWord() = 0; + virtual FX_BOOL NextLine() = 0; + virtual FX_BOOL PrevLine() = 0; + virtual FX_BOOL NextSection() = 0; + virtual FX_BOOL PrevSection() = 0; + virtual FX_BOOL GetWord(CPVT_Word& word) const = 0; + virtual FX_BOOL SetWord(const CPVT_Word& word) = 0; + virtual FX_BOOL GetLine(CPVT_Line& line) const = 0; + virtual FX_BOOL GetSection(CPVT_Section& section) const = 0; + virtual FX_BOOL SetSection(const CPVT_Section& section) = 0; + virtual void SetAt(int32_t nWordIndex) = 0; + virtual void SetAt(const CPVT_WordPlace& place) = 0; + virtual const CPVT_WordPlace& GetAt() const = 0; + }; + static IPDF_VariableText* NewVariableText(); static void DelVariableText(IPDF_VariableText* pVT); - virtual IPDF_VariableText_Provider* SetProvider( - IPDF_VariableText_Provider* pProvider) = 0; + virtual void Initialize() = 0; - virtual IPDF_VariableText_Iterator* GetIterator() = 0; + virtual Provider* SetProvider(Provider* pProvider) = 0; + virtual Iterator* GetIterator() = 0; virtual void SetPlateRect(const CFX_FloatRect& rect) = 0; - virtual void SetAlignment(int32_t nFormat = 0) = 0; - virtual void SetPasswordChar(uint16_t wSubWord = '*') = 0; - virtual void SetLimitChar(int32_t nLimitChar = 0) = 0; - virtual void SetCharArray(int32_t nCharArray = 0) = 0; - virtual void SetCharSpace(FX_FLOAT fCharSpace = 0.0f) = 0; - virtual void SetHorzScale(int32_t nHorzScale = 100) = 0; - virtual void SetMultiLine(FX_BOOL bMultiLine = TRUE) = 0; - virtual void SetAutoReturn(FX_BOOL bAuto = TRUE) = 0; - virtual void SetAutoFontSize(FX_BOOL bAuto = TRUE) = 0; - virtual void SetFontSize(FX_FLOAT fFontSize) = 0; - virtual void SetLineLeading(FX_FLOAT fLineLeading) = 0; - virtual void SetRichText(FX_BOOL bRichText) = 0; - virtual void Initialize() = 0; - virtual FX_BOOL IsValid() const = 0; - virtual FX_BOOL IsRichText() const = 0; + virtual FX_BOOL IsMultiLine() const = 0; virtual void RearrangeAll() = 0; - virtual void RearrangePart(const CPVT_WordRange& PlaceRange) = 0; virtual void ResetAll() = 0; @@ -347,18 +293,15 @@ class IPDF_VariableText { int32_t charset = 1, const CPVT_SecProps* pSecProps = NULL, const CPVT_WordProps* pWordProps = NULL) = 0; - virtual CPVT_WordPlace InsertWord( const CPVT_WordPlace& place, uint16_t word, int32_t charset = 1, const CPVT_WordProps* pWordProps = NULL) = 0; - virtual CPVT_WordPlace InsertSection( const CPVT_WordPlace& place, const CPVT_SecProps* pSecProps = NULL, const CPVT_WordProps* pWordProps = NULL) = 0; - virtual CPVT_WordPlace InsertText( const CPVT_WordPlace& place, const FX_WCHAR* text, @@ -367,70 +310,45 @@ class IPDF_VariableText { const CPVT_WordProps* pWordProps = NULL) = 0; virtual CPVT_WordPlace DeleteWords(const CPVT_WordRange& PlaceRange) = 0; - virtual CPVT_WordPlace DeleteWord(const CPVT_WordPlace& place) = 0; - virtual CPVT_WordPlace BackSpaceWord(const CPVT_WordPlace& place) = 0; virtual const CFX_FloatRect& GetPlateRect() const = 0; - virtual CFX_FloatRect GetContentRect() const = 0; - virtual int32_t GetTotalWords() const = 0; - virtual FX_FLOAT GetFontSize() const = 0; - virtual int32_t GetAlignment() const = 0; - virtual uint16_t GetPasswordChar() const = 0; - virtual int32_t GetCharArray() const = 0; - virtual int32_t GetLimitChar() const = 0; - - virtual FX_BOOL IsMultiLine() const = 0; - virtual int32_t GetHorzScale() const = 0; - virtual FX_FLOAT GetCharSpace() const = 0; - virtual CPVT_WordPlace GetBeginWordPlace() const = 0; - virtual CPVT_WordPlace GetEndWordPlace() const = 0; - virtual CPVT_WordPlace GetPrevWordPlace( const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetNextWordPlace( const CPVT_WordPlace& place) const = 0; virtual CPVT_WordPlace SearchWordPlace(const CFX_FloatPoint& point) const = 0; - virtual CPVT_WordPlace GetUpWordPlace(const CPVT_WordPlace& place, const CFX_FloatPoint& point) const = 0; - virtual CPVT_WordPlace GetDownWordPlace( const CPVT_WordPlace& place, const CFX_FloatPoint& point) const = 0; - virtual CPVT_WordPlace GetLineBeginPlace( const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetLineEndPlace(const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetSectionBeginPlace( const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetSectionEndPlace( const CPVT_WordPlace& place) const = 0; virtual void UpdateWordPlace(CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace AdjustLineHeader(const CPVT_WordPlace& place, FX_BOOL bPrevOrNext) const = 0; virtual int32_t WordPlaceToWordIndex(const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace WordIndexToWordPlace(int32_t index) const = 0; protected: -- cgit v1.2.3