From 868150bd69f0f1f9472affc20deea0a9341bf22b Mon Sep 17 00:00:00 2001 From: weili Date: Mon, 13 Jun 2016 14:57:29 -0700 Subject: Make code compile with clang_use_chrome_plugin (part I) This change contains files in core/fpdfapi directory. This is part of the efforts to make PDFium code compilable by Clang chromium style plugins. The changes are mainly the following: -- move inline constructor/destructor of complex class/struct out-of-line; -- add constructor/destructor of complex class/struct if not explicitly defined; -- add explicit out-of-line copy constructor when needed; -- move inline virtual functions out-of-line; -- Properly mark virtual functions with 'override'; -- some minor cleanups; BUG=pdfium:469 Review-Url: https://codereview.chromium.org/2060973002 --- core/fpdfapi/fpdf_page/cpdf_textobject.cpp | 70 +++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 15 deletions(-) (limited to 'core/fpdfapi/fpdf_page/cpdf_textobject.cpp') diff --git a/core/fpdfapi/fpdf_page/cpdf_textobject.cpp b/core/fpdfapi/fpdf_page/cpdf_textobject.cpp index 72658c67ba..caa7d0df56 100644 --- a/core/fpdfapi/fpdf_page/cpdf_textobject.cpp +++ b/core/fpdfapi/fpdf_page/cpdf_textobject.cpp @@ -23,6 +23,10 @@ CPDF_TextObject::~CPDF_TextObject() { FX_Free(m_pCharPos); } +int CPDF_TextObject::CountItems() const { + return m_nChars; +} + void CPDF_TextObject::GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const { pInfo->m_CharCode = m_nChars == 1 ? (uint32_t)(uintptr_t)m_pCharCodes : m_pCharCodes[index]; @@ -124,6 +128,37 @@ CPDF_TextObject* CPDF_TextObject::Clone() const { return obj; } +CPDF_PageObject::Type CPDF_TextObject::GetType() const { + return TEXT; +} + +void CPDF_TextObject::Transform(const CFX_Matrix& matrix) { + m_TextState.GetModify(); + CFX_Matrix text_matrix; + GetTextMatrix(&text_matrix); + text_matrix.Concat(matrix); + FX_FLOAT* pTextMatrix = m_TextState.GetMatrix(); + pTextMatrix[0] = text_matrix.GetA(); + pTextMatrix[1] = text_matrix.GetC(); + pTextMatrix[2] = text_matrix.GetB(); + pTextMatrix[3] = text_matrix.GetD(); + m_PosX = text_matrix.GetE(); + m_PosY = text_matrix.GetF(); + CalcPositionData(nullptr, nullptr, 0); +} + +bool CPDF_TextObject::IsText() const { + return true; +} + +CPDF_TextObject* CPDF_TextObject::AsText() { + return this; +} + +const CPDF_TextObject* CPDF_TextObject::AsText() const { + return this; +} + void CPDF_TextObject::GetTextMatrix(CFX_Matrix* pMatrix) const { FX_FLOAT* pTextMatrix = m_TextState.GetMatrix(); pMatrix->Set(pTextMatrix[0], pTextMatrix[2], pTextMatrix[1], pTextMatrix[3], @@ -188,6 +223,22 @@ FX_FLOAT CPDF_TextObject::GetCharWidth(uint32_t charcode) const { return pCIDFont->GetVertWidth(CID) * fontsize; } +FX_FLOAT CPDF_TextObject::GetPosX() const { + return m_PosX; +} + +FX_FLOAT CPDF_TextObject::GetPosY() const { + return m_PosY; +} + +CPDF_Font* CPDF_TextObject::GetFont() const { + return m_TextState.GetFont(); +} + +FX_FLOAT CPDF_TextObject::GetFontSize() const { + return m_TextState.GetFontSize(); +} + void CPDF_TextObject::CalcPositionData(FX_FLOAT* pTextAdvanceX, FX_FLOAT* pTextAdvanceY, FX_FLOAT horz_scale, @@ -322,21 +373,6 @@ void CPDF_TextObject::CalcPositionData(FX_FLOAT* pTextAdvanceX, } } -void CPDF_TextObject::Transform(const CFX_Matrix& matrix) { - m_TextState.GetModify(); - CFX_Matrix text_matrix; - GetTextMatrix(&text_matrix); - text_matrix.Concat(matrix); - FX_FLOAT* pTextMatrix = m_TextState.GetMatrix(); - pTextMatrix[0] = text_matrix.GetA(); - pTextMatrix[1] = text_matrix.GetC(); - pTextMatrix[2] = text_matrix.GetB(); - pTextMatrix[3] = text_matrix.GetD(); - m_PosX = text_matrix.GetE(); - m_PosY = text_matrix.GetF(); - CalcPositionData(nullptr, nullptr, 0); -} - void CPDF_TextObject::SetPosition(FX_FLOAT x, FX_FLOAT y) { FX_FLOAT dx = x - m_PosX; FX_FLOAT dy = y - m_PosY; @@ -347,3 +383,7 @@ void CPDF_TextObject::SetPosition(FX_FLOAT x, FX_FLOAT y) { m_Top += dy; m_Bottom += dy; } + +void CPDF_TextObject::RecalcPositionData() { + CalcPositionData(nullptr, nullptr, 1); +} -- cgit v1.2.3