From fa42927a727aa7f7f081b40ff75d1a849c2365c3 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 16 Feb 2017 09:20:49 -0500 Subject: Convert CPDF_TextObject to CFX_PointF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This CL converts the OriginX and OriginY from CPDF_TextObjectItem to use a CFX_PointF instead of two floats. Change-Id: Id39de18d3d908a86f925bec68d0680392f70906e Reviewed-on: https://pdfium-review.googlesource.com/2715 Commit-Queue: dsinclair Reviewed-by: Tom Sepez Reviewed-by: Nicolás Peña --- core/fpdfapi/page/cpdf_pageobject.h | 4 ++++ core/fpdfapi/page/cpdf_textobject.cpp | 37 +++++++++++++++-------------------- core/fpdfapi/page/cpdf_textobject.h | 12 +++++++----- 3 files changed, 27 insertions(+), 26 deletions(-) (limited to 'core/fpdfapi/page') diff --git a/core/fpdfapi/page/cpdf_pageobject.h b/core/fpdfapi/page/cpdf_pageobject.h index ffc59f4eee..d2b84a5d40 100644 --- a/core/fpdfapi/page/cpdf_pageobject.h +++ b/core/fpdfapi/page/cpdf_pageobject.h @@ -51,6 +51,10 @@ class CPDF_PageObject : public CPDF_GraphicStates { void TransformClipPath(CFX_Matrix& matrix); void TransformGeneralState(CFX_Matrix& matrix); + + CFX_FloatRect GetRect() const { + return CFX_FloatRect(m_Left, m_Bottom, m_Right, m_Top); + } FX_RECT GetBBox(const CFX_Matrix* pMatrix) const; FX_FLOAT m_Left; diff --git a/core/fpdfapi/page/cpdf_textobject.cpp b/core/fpdfapi/page/cpdf_textobject.cpp index 2ca996b2d4..a84deb27c7 100644 --- a/core/fpdfapi/page/cpdf_textobject.cpp +++ b/core/fpdfapi/page/cpdf_textobject.cpp @@ -13,10 +13,13 @@ #include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h" +CPDF_TextObjectItem::CPDF_TextObjectItem() : m_CharCode(0) {} + +CPDF_TextObjectItem::~CPDF_TextObjectItem() = default; + CPDF_TextObject::CPDF_TextObject() {} -CPDF_TextObject::~CPDF_TextObject() { -} +CPDF_TextObject::~CPDF_TextObject() {} int CPDF_TextObject::CountItems() const { return pdfium::CollectionSize(m_CharCodes); @@ -24,26 +27,26 @@ int CPDF_TextObject::CountItems() const { void CPDF_TextObject::GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const { pInfo->m_CharCode = m_CharCodes[index]; - pInfo->m_OriginX = index ? m_CharPos[index - 1] : 0; - pInfo->m_OriginY = 0; + pInfo->m_Origin = CFX_PointF(index ? m_CharPos[index - 1] : 0, 0); if (pInfo->m_CharCode == CPDF_Font::kInvalidCharCode) return; CPDF_Font* pFont = m_TextState.GetFont(); - if (!pFont->IsCIDFont()) { + if (!pFont->IsCIDFont()) return; - } - if (!pFont->AsCIDFont()->IsVertWriting()) { + if (!pFont->AsCIDFont()->IsVertWriting()) return; - } + uint16_t CID = pFont->AsCIDFont()->CIDFromCharCode(pInfo->m_CharCode); - pInfo->m_OriginY = pInfo->m_OriginX; - pInfo->m_OriginX = 0; - short vx, vy; + pInfo->m_Origin = CFX_PointF(0, pInfo->m_Origin.x); + + short vx; + short vy; pFont->AsCIDFont()->GetVertOrigin(CID, vx, vy); + FX_FLOAT fontsize = m_TextState.GetFontSize(); - pInfo->m_OriginX -= fontsize * vx / 1000; - pInfo->m_OriginY -= fontsize * vy / 1000; + pInfo->m_Origin.x -= fontsize * vx / 1000; + pInfo->m_Origin.y -= fontsize * vy / 1000; } int CPDF_TextObject::CountChars() const { @@ -177,14 +180,6 @@ FX_FLOAT CPDF_TextObject::GetCharWidth(uint32_t charcode) const { return pCIDFont->GetVertWidth(CID) * fontsize; } -FX_FLOAT CPDF_TextObject::GetPosX() const { - return m_Pos.x; -} - -FX_FLOAT CPDF_TextObject::GetPosY() const { - return m_Pos.y; -} - CPDF_Font* CPDF_TextObject::GetFont() const { return m_TextState.GetFont(); } diff --git a/core/fpdfapi/page/cpdf_textobject.h b/core/fpdfapi/page/cpdf_textobject.h index 07a2aabbe2..756187046b 100644 --- a/core/fpdfapi/page/cpdf_textobject.h +++ b/core/fpdfapi/page/cpdf_textobject.h @@ -14,10 +14,13 @@ #include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" -struct CPDF_TextObjectItem { +class CPDF_TextObjectItem { + public: + CPDF_TextObjectItem(); + ~CPDF_TextObjectItem(); + uint32_t m_CharCode; - FX_FLOAT m_OriginX; - FX_FLOAT m_OriginY; + CFX_PointF m_Origin; }; class CPDF_TextObject : public CPDF_PageObject { @@ -39,8 +42,7 @@ class CPDF_TextObject : public CPDF_PageObject { void GetCharInfo(int index, uint32_t* charcode, FX_FLOAT* kerning) const; void GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const; FX_FLOAT GetCharWidth(uint32_t charcode) const; - FX_FLOAT GetPosX() const; - FX_FLOAT GetPosY() const; + CFX_PointF GetPos() const { return m_Pos; } CFX_Matrix GetTextMatrix() const; CPDF_Font* GetFont() const; FX_FLOAT GetFontSize() const; -- cgit v1.2.3