summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortsepez <tsepez@chromium.org>2016-08-29 10:24:19 -0700
committerCommit bot <commit-bot@chromium.org>2016-08-29 10:24:19 -0700
commitd09a09751f724ecdb1a0bc307447a3d0c212ebff (patch)
tree917a2986be9769a6bfaf8ac4cc96a8a4006eed82
parenta032f7f79c67ddef4db0f44fca8f0d245bfb8e82 (diff)
downloadpdfium-d09a09751f724ecdb1a0bc307447a3d0c212ebff.tar.xz
Replace wrapper methods in CPDF_Path with -> operator.
These just invoked exaclty the same methodes in the underlying xxxData class, which we can now do with just a ->() Move some methods to the xxxData class, where they belong. In doing so, put MakePrivateCopy() calls at each callsite for those methods that made a copy. Review-Url: https://codereview.chromium.org/2286983002
-rw-r--r--BUILD.gn1
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_allstates.cpp2
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_clippath.cpp12
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_pathobject.cpp4
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_textobject.cpp22
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_textstate.cpp47
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_textstate.h14
-rw-r--r--core/fpdfapi/fpdf_page/cpdf_textstatedata.cpp35
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_parser.cpp14
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp10
-rw-r--r--core/fpdfapi/fpdf_page/include/cpdf_path.h19
-rw-r--r--core/fpdfapi/fpdf_page/include/cpdf_textstatedata.h12
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render.cpp4
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_text.cpp8
-rw-r--r--core/fpdftext/cpdf_textpage.cpp6
-rw-r--r--fpdfsdk/fpdf_transformpage.cpp6
16 files changed, 91 insertions, 125 deletions
diff --git a/BUILD.gn b/BUILD.gn
index 982c57a179..8d3e2424f4 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -447,7 +447,6 @@ static_library("fpdfapi") {
"core/fpdfapi/fpdf_page/cpdf_shadingpattern.cpp",
"core/fpdfapi/fpdf_page/cpdf_shadingpattern.h",
"core/fpdfapi/fpdf_page/cpdf_textobject.cpp",
- "core/fpdfapi/fpdf_page/cpdf_textstate.cpp",
"core/fpdfapi/fpdf_page/cpdf_textstate.h",
"core/fpdfapi/fpdf_page/cpdf_textstatedata.cpp",
"core/fpdfapi/fpdf_page/cpdf_tilingpattern.cpp",
diff --git a/core/fpdfapi/fpdf_page/cpdf_allstates.cpp b/core/fpdfapi/fpdf_page/cpdf_allstates.cpp
index fb0c2445e7..eb43bd10c4 100644
--- a/core/fpdfapi/fpdf_page/cpdf_allstates.cpp
+++ b/core/fpdfapi/fpdf_page/cpdf_allstates.cpp
@@ -104,7 +104,7 @@ void CPDF_AllStates::ProcessExtGS(CPDF_Dictionary* pGS,
m_TextState.MakePrivateCopy();
m_TextState->m_FontSize = pFont->GetNumberAt(1);
- m_TextState.SetFont(pParser->FindFont(pFont->GetStringAt(0)));
+ m_TextState->SetFont(pParser->FindFont(pFont->GetStringAt(0)));
break;
}
case FXBSTR_ID('T', 'R', 0, 0):
diff --git a/core/fpdfapi/fpdf_page/cpdf_clippath.cpp b/core/fpdfapi/fpdf_page/cpdf_clippath.cpp
index 2c05df0d19..51f3086c12 100644
--- a/core/fpdfapi/fpdf_page/cpdf_clippath.cpp
+++ b/core/fpdfapi/fpdf_page/cpdf_clippath.cpp
@@ -38,9 +38,9 @@ CFX_FloatRect CPDF_ClipPath::GetClipBox() const {
FX_BOOL bStarted = FALSE;
int count = GetPathCount();
if (count) {
- rect = GetPath(0).GetBoundingBox();
+ rect = GetPath(0)->GetBoundingBox();
for (int i = 1; i < count; i++) {
- CFX_FloatRect path_rect = GetPath(i).GetBoundingBox();
+ CFX_FloatRect path_rect = GetPath(i)->GetBoundingBox();
rect.Intersect(path_rect);
}
bStarted = TRUE;
@@ -77,10 +77,10 @@ void CPDF_ClipPath::AppendPath(CPDF_Path path, uint8_t type, bool bAutoMerge) {
CPDF_ClipPathData* pData = GetObject();
if (!pData->m_PathAndTypeList.empty() && bAutoMerge) {
const CPDF_Path& old_path = pData->m_PathAndTypeList.back().first;
- if (old_path.IsRect()) {
- CFX_FloatRect old_rect(old_path.GetPointX(0), old_path.GetPointY(0),
- old_path.GetPointX(2), old_path.GetPointY(2));
- CFX_FloatRect new_rect = path.GetBoundingBox();
+ if (old_path->IsRect()) {
+ CFX_FloatRect old_rect(old_path->GetPointX(0), old_path->GetPointY(0),
+ old_path->GetPointX(2), old_path->GetPointY(2));
+ CFX_FloatRect new_rect = path->GetBoundingBox();
if (old_rect.Contains(new_rect))
pData->m_PathAndTypeList.pop_back();
}
diff --git a/core/fpdfapi/fpdf_page/cpdf_pathobject.cpp b/core/fpdfapi/fpdf_page/cpdf_pathobject.cpp
index ceb3dd43cc..d48c84bf4a 100644
--- a/core/fpdfapi/fpdf_page/cpdf_pathobject.cpp
+++ b/core/fpdfapi/fpdf_page/cpdf_pathobject.cpp
@@ -48,9 +48,9 @@ void CPDF_PathObject::CalcBoundingBox() {
CFX_FloatRect rect;
FX_FLOAT width = m_GraphState->m_LineWidth;
if (m_bStroke && width != 0) {
- rect = m_Path.GetBoundingBox(width, m_GraphState->m_MiterLimit);
+ rect = m_Path->GetBoundingBox(width, m_GraphState->m_MiterLimit);
} else {
- rect = m_Path.GetBoundingBox();
+ rect = m_Path->GetBoundingBox();
}
rect.Transform(&m_Matrix);
if (width == 0 && m_bStroke) {
diff --git a/core/fpdfapi/fpdf_page/cpdf_textobject.cpp b/core/fpdfapi/fpdf_page/cpdf_textobject.cpp
index a3653359de..7b39dff924 100644
--- a/core/fpdfapi/fpdf_page/cpdf_textobject.cpp
+++ b/core/fpdfapi/fpdf_page/cpdf_textobject.cpp
@@ -35,7 +35,7 @@ void CPDF_TextObject::GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const {
if (pInfo->m_CharCode == CPDF_Font::kInvalidCharCode) {
return;
}
- CPDF_Font* pFont = m_TextState.GetFont();
+ CPDF_Font* pFont = m_TextState->GetFont();
if (!pFont->IsCIDFont()) {
return;
}
@@ -47,7 +47,7 @@ void CPDF_TextObject::GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const {
pInfo->m_OriginX = 0;
short vx, vy;
pFont->AsCIDFont()->GetVertOrigin(CID, vx, vy);
- FX_FLOAT fontsize = m_TextState.GetFontSize();
+ FX_FLOAT fontsize = m_TextState->GetFontSize();
pInfo->m_OriginX -= fontsize * vx / 1000;
pInfo->m_OriginY -= fontsize * vy / 1000;
}
@@ -137,7 +137,7 @@ void CPDF_TextObject::Transform(const CFX_Matrix& matrix) {
CFX_Matrix text_matrix;
GetTextMatrix(&text_matrix);
text_matrix.Concat(matrix);
- FX_FLOAT* pTextMatrix = m_TextState.GetMatrix();
+ FX_FLOAT* pTextMatrix = m_TextState->GetMatrix();
pTextMatrix[0] = text_matrix.GetA();
pTextMatrix[1] = text_matrix.GetC();
pTextMatrix[2] = text_matrix.GetB();
@@ -160,7 +160,7 @@ const CPDF_TextObject* CPDF_TextObject::AsText() const {
}
void CPDF_TextObject::GetTextMatrix(CFX_Matrix* pMatrix) const {
- const FX_FLOAT* pTextMatrix = m_TextState.GetMatrix();
+ const FX_FLOAT* pTextMatrix = m_TextState->GetMatrix();
pMatrix->Set(pTextMatrix[0], pTextMatrix[2], pTextMatrix[1], pTextMatrix[3],
m_PosX, m_PosY);
}
@@ -174,7 +174,7 @@ void CPDF_TextObject::SetSegments(const CFX_ByteString* pStrs,
}
FX_Free(m_pCharPos);
m_pCharPos = nullptr;
- CPDF_Font* pFont = m_TextState.GetFont();
+ CPDF_Font* pFont = m_TextState->GetFont();
m_nChars = 0;
for (int i = 0; i < nsegs; ++i) {
m_nChars += pFont->CountChar(pStrs[i].c_str(), pStrs[i].GetLength());
@@ -209,8 +209,8 @@ void CPDF_TextObject::SetText(const CFX_ByteString& str) {
}
FX_FLOAT CPDF_TextObject::GetCharWidth(uint32_t charcode) const {
- FX_FLOAT fontsize = m_TextState.GetFontSize() / 1000;
- CPDF_Font* pFont = m_TextState.GetFont();
+ FX_FLOAT fontsize = m_TextState->GetFontSize() / 1000;
+ CPDF_Font* pFont = m_TextState->GetFont();
FX_BOOL bVertWriting = FALSE;
CPDF_CIDFont* pCIDFont = pFont->AsCIDFont();
if (pCIDFont) {
@@ -232,11 +232,11 @@ FX_FLOAT CPDF_TextObject::GetPosY() const {
}
CPDF_Font* CPDF_TextObject::GetFont() const {
- return m_TextState.GetFont();
+ return m_TextState->GetFont();
}
FX_FLOAT CPDF_TextObject::GetFontSize() const {
- return m_TextState.GetFontSize();
+ return m_TextState->GetFontSize();
}
void CPDF_TextObject::CalcPositionData(FX_FLOAT* pTextAdvanceX,
@@ -248,13 +248,13 @@ void CPDF_TextObject::CalcPositionData(FX_FLOAT* pTextAdvanceX,
FX_FLOAT max_x = -10000 * 1.0f;
FX_FLOAT min_y = 10000 * 1.0f;
FX_FLOAT max_y = -10000 * 1.0f;
- CPDF_Font* pFont = m_TextState.GetFont();
+ CPDF_Font* pFont = m_TextState->GetFont();
FX_BOOL bVertWriting = FALSE;
CPDF_CIDFont* pCIDFont = pFont->AsCIDFont();
if (pCIDFont) {
bVertWriting = pCIDFont->IsVertWriting();
}
- FX_FLOAT fontsize = m_TextState.GetFontSize();
+ FX_FLOAT fontsize = m_TextState->GetFontSize();
for (int i = 0; i < m_nChars; ++i) {
uint32_t charcode =
m_nChars == 1 ? (uint32_t)(uintptr_t)m_pCharCodes : m_pCharCodes[i];
diff --git a/core/fpdfapi/fpdf_page/cpdf_textstate.cpp b/core/fpdfapi/fpdf_page/cpdf_textstate.cpp
deleted file mode 100644
index 47e2116836..0000000000
--- a/core/fpdfapi/fpdf_page/cpdf_textstate.cpp
+++ /dev/null
@@ -1,47 +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/fpdfapi/fpdf_font/include/cpdf_font.h"
-#include "core/fpdfapi/fpdf_page/cpdf_textstate.h"
-#include "core/fpdfapi/fpdf_page/pageint.h"
-#include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
-
-void CPDF_TextState::SetFont(CPDF_Font* pFont) {
- MakePrivateCopy();
- CPDF_TextStateData* pStateData = GetObject();
- CPDF_Document* pDoc = pStateData->m_pDocument;
- CPDF_DocPageData* pPageData = pDoc ? pDoc->GetPageData() : nullptr;
- if (pPageData && pStateData->m_pFont && !pPageData->IsForceClear())
- pPageData->ReleaseFont(pStateData->m_pFont->GetFontDict());
-
- pStateData->m_pDocument = pFont ? pFont->m_pDocument : nullptr;
- pStateData->m_pFont = pFont;
-}
-
-FX_FLOAT CPDF_TextState::GetFontSizeV() const {
- const FX_FLOAT* pMatrix = GetMatrix();
- FX_FLOAT unit = FXSYS_sqrt2(pMatrix[1], pMatrix[3]);
- FX_FLOAT size = unit * GetFontSize();
- return (FX_FLOAT)FXSYS_fabs(size);
-}
-
-FX_FLOAT CPDF_TextState::GetFontSizeH() const {
- const FX_FLOAT* pMatrix = GetMatrix();
- FX_FLOAT unit = FXSYS_sqrt2(pMatrix[0], pMatrix[2]);
- FX_FLOAT size = unit * GetFontSize();
- return (FX_FLOAT)FXSYS_fabs(size);
-}
-
-FX_FLOAT CPDF_TextState::GetBaselineAngle() const {
- const FX_FLOAT* m_Matrix = GetMatrix();
- return FXSYS_atan2(m_Matrix[2], m_Matrix[0]);
-}
-
-FX_FLOAT CPDF_TextState::GetShearAngle() const {
- const FX_FLOAT* m_Matrix = GetMatrix();
- FX_FLOAT shear_angle = FXSYS_atan2(m_Matrix[1], m_Matrix[3]);
- return GetBaselineAngle() + shear_angle;
-}
diff --git a/core/fpdfapi/fpdf_page/cpdf_textstate.h b/core/fpdfapi/fpdf_page/cpdf_textstate.h
index 59c988de06..744739a6ac 100644
--- a/core/fpdfapi/fpdf_page/cpdf_textstate.h
+++ b/core/fpdfapi/fpdf_page/cpdf_textstate.h
@@ -10,21 +10,7 @@
#include "core/fpdfapi/fpdf_page/include/cpdf_textstatedata.h"
#include "core/fxcrt/include/fx_basic.h"
-class CPDF_Font;
-
class CPDF_TextState : public CFX_CountRef<CPDF_TextStateData> {
- public:
- CPDF_Font* GetFont() const { return GetObject()->m_pFont; }
- void SetFont(CPDF_Font* pFont);
-
- FX_FLOAT GetFontSize() const { return GetObject()->m_FontSize; }
- FX_FLOAT* GetMatrix() { return GetObject()->m_Matrix; }
- const FX_FLOAT* GetMatrix() const { return GetObject()->m_Matrix; }
-
- FX_FLOAT GetFontSizeV() const;
- FX_FLOAT GetFontSizeH() const;
- FX_FLOAT GetBaselineAngle() const;
- FX_FLOAT GetShearAngle() const;
};
#endif // CORE_FPDFAPI_FPDF_PAGE_CPDF_TEXTSTATE_H_
diff --git a/core/fpdfapi/fpdf_page/cpdf_textstatedata.cpp b/core/fpdfapi/fpdf_page/cpdf_textstatedata.cpp
index e60af0076e..9ae99a1cdb 100644
--- a/core/fpdfapi/fpdf_page/cpdf_textstatedata.cpp
+++ b/core/fpdfapi/fpdf_page/cpdf_textstatedata.cpp
@@ -72,3 +72,38 @@ CPDF_TextStateData::~CPDF_TextStateData() {
pPageData->ReleaseFont(m_pFont->GetFontDict());
}
}
+
+void CPDF_TextStateData::SetFont(CPDF_Font* pFont) {
+ CPDF_DocPageData* pPageData =
+ m_pDocument ? m_pDocument->GetPageData() : nullptr;
+ if (pPageData && m_pFont && !pPageData->IsForceClear())
+ pPageData->ReleaseFont(m_pFont->GetFontDict());
+
+ m_pDocument = pFont ? pFont->m_pDocument : nullptr;
+ m_pFont = pFont;
+}
+
+FX_FLOAT CPDF_TextStateData::GetFontSizeV() const {
+ const FX_FLOAT* pMatrix = GetMatrix();
+ FX_FLOAT unit = FXSYS_sqrt2(pMatrix[1], pMatrix[3]);
+ FX_FLOAT size = unit * GetFontSize();
+ return (FX_FLOAT)FXSYS_fabs(size);
+}
+
+FX_FLOAT CPDF_TextStateData::GetFontSizeH() const {
+ const FX_FLOAT* pMatrix = GetMatrix();
+ FX_FLOAT unit = FXSYS_sqrt2(pMatrix[0], pMatrix[2]);
+ FX_FLOAT size = unit * GetFontSize();
+ return (FX_FLOAT)FXSYS_fabs(size);
+}
+
+FX_FLOAT CPDF_TextStateData::GetBaselineAngle() const {
+ const FX_FLOAT* pMatrix = GetMatrix();
+ return FXSYS_atan2(pMatrix[2], pMatrix[0]);
+}
+
+FX_FLOAT CPDF_TextStateData::GetShearAngle() const {
+ const FX_FLOAT* pMatrix = GetMatrix();
+ FX_FLOAT shear_angle = FXSYS_atan2(pMatrix[1], pMatrix[3]);
+ return GetBaselineAngle() + shear_angle;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp
index 3afcf4b7d1..5d5b75b60e 100644
--- a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp
+++ b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp
@@ -1144,7 +1144,7 @@ void CPDF_StreamContentParser::Handle_SetFont() {
m_pCurStates->m_TextState->m_FontSize = fs;
CPDF_Font* pFont = FindFont(GetString(1));
if (pFont)
- m_pCurStates->m_TextState.SetFont(pFont);
+ m_pCurStates->m_TextState->SetFont(pFont);
}
CPDF_Object* CPDF_StreamContentParser::FindResourceObj(
@@ -1231,17 +1231,17 @@ void CPDF_StreamContentParser::AddTextObject(CFX_ByteString* pStrs,
FX_FLOAT fInitKerning,
FX_FLOAT* pKerning,
int nsegs) {
- CPDF_Font* pFont = m_pCurStates->m_TextState.GetFont();
+ CPDF_Font* pFont = m_pCurStates->m_TextState->GetFont();
if (!pFont) {
return;
}
if (fInitKerning != 0) {
if (!pFont->IsVertWriting()) {
m_pCurStates->m_TextX -=
- (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000;
+ (fInitKerning * m_pCurStates->m_TextState->GetFontSize()) / 1000;
} else {
m_pCurStates->m_TextY -=
- (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000;
+ (fInitKerning * m_pCurStates->m_TextState->GetFontSize()) / 1000;
}
}
if (nsegs == 0) {
@@ -1281,11 +1281,11 @@ void CPDF_StreamContentParser::AddTextObject(CFX_ByteString* pStrs,
if (pKerning && pKerning[nsegs - 1] != 0) {
if (!pFont->IsVertWriting()) {
m_pCurStates->m_TextX -=
- (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) /
+ (pKerning[nsegs - 1] * m_pCurStates->m_TextState->GetFontSize()) /
1000;
} else {
m_pCurStates->m_TextY -=
- (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) /
+ (pKerning[nsegs - 1] * m_pCurStates->m_TextState->GetFontSize()) /
1000;
}
}
@@ -1313,7 +1313,7 @@ void CPDF_StreamContentParser::Handle_ShowText_Positioning() {
if (nsegs == 0) {
for (size_t i = 0; i < n; i++) {
m_pCurStates->m_TextX -=
- (pArray->GetNumberAt(i) * m_pCurStates->m_TextState.GetFontSize()) /
+ (pArray->GetNumberAt(i) * m_pCurStates->m_TextState->GetFontSize()) /
1000;
}
return;
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
index 1b37862e99..e19c9a4a61 100644
--- a/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
+++ b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
@@ -689,8 +689,8 @@ void CPDF_ContentParser::Start(CPDF_Form* pForm,
if (pBBox) {
form_bbox = pBBox->GetRect();
ClipPath.New();
- ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right,
- form_bbox.top);
+ ClipPath->AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right,
+ form_bbox.top);
ClipPath.Transform(&form_matrix);
if (pParentMatrix) {
ClipPath.Transform(pParentMatrix);
@@ -808,10 +808,10 @@ void CPDF_ContentParser::Continue(IFX_Pause* pPause) {
if (pObj->m_ClipPath.GetTextCount())
continue;
CPDF_Path ClipPath = pObj->m_ClipPath.GetPath(0);
- if (!ClipPath.IsRect() || pObj->IsShading())
+ if (!ClipPath->IsRect() || pObj->IsShading())
continue;
- CFX_FloatRect old_rect(ClipPath.GetPointX(0), ClipPath.GetPointY(0),
- ClipPath.GetPointX(2), ClipPath.GetPointY(2));
+ CFX_FloatRect old_rect(ClipPath->GetPointX(0), ClipPath->GetPointY(0),
+ ClipPath->GetPointX(2), ClipPath->GetPointY(2));
CFX_FloatRect obj_rect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right,
pObj->m_Top);
if (old_rect.Contains(obj_rect))
diff --git a/core/fpdfapi/fpdf_page/include/cpdf_path.h b/core/fpdfapi/fpdf_page/include/cpdf_path.h
index 33db4d755a..adc7d86f44 100644
--- a/core/fpdfapi/fpdf_page/include/cpdf_path.h
+++ b/core/fpdfapi/fpdf_page/include/cpdf_path.h
@@ -14,18 +14,6 @@
class CPDF_Path : public CFX_CountRef<CFX_PathData> {
public:
- int GetPointCount() const { return GetObject()->GetPointCount(); }
- int GetFlag(int index) const { return GetObject()->GetFlag(index); }
- FX_FLOAT GetPointX(int index) const { return GetObject()->GetPointX(index); }
- FX_FLOAT GetPointY(int index) const { return GetObject()->GetPointY(index); }
- FX_PATHPOINT* GetPoints() const { return GetObject()->GetPoints(); }
- CFX_FloatRect GetBoundingBox() const { return GetObject()->GetBoundingBox(); }
- CFX_FloatRect GetBoundingBox(FX_FLOAT line_width,
- FX_FLOAT miter_limit) const {
- return GetObject()->GetBoundingBox(line_width, miter_limit);
- }
-
- FX_BOOL IsRect() const { return GetObject()->IsRect(); }
void Transform(const CFX_Matrix* pMatrix) {
MakePrivateCopy();
GetObject()->Transform(pMatrix);
@@ -33,13 +21,6 @@ class CPDF_Path : public CFX_CountRef<CFX_PathData> {
void Append(const CPDF_Path& other, const CFX_Matrix* pMatrix) {
GetObject()->Append(other.GetObject(), pMatrix);
}
-
- void AppendRect(FX_FLOAT left,
- FX_FLOAT bottom,
- FX_FLOAT right,
- FX_FLOAT top) {
- GetObject()->AppendRect(left, bottom, right, top);
- }
};
#endif // CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_PATH_H_
diff --git a/core/fpdfapi/fpdf_page/include/cpdf_textstatedata.h b/core/fpdfapi/fpdf_page/include/cpdf_textstatedata.h
index 4e33d5f170..40fa1ea8d3 100644
--- a/core/fpdfapi/fpdf_page/include/cpdf_textstatedata.h
+++ b/core/fpdfapi/fpdf_page/include/cpdf_textstatedata.h
@@ -34,6 +34,18 @@ class CPDF_TextStateData {
CPDF_TextStateData(const CPDF_TextStateData& src);
~CPDF_TextStateData();
+ void SetFont(CPDF_Font* pFont);
+
+ CPDF_Font* GetFont() const { return m_pFont; }
+ FX_FLOAT GetFontSize() const { return m_FontSize; }
+ FX_FLOAT* GetMatrix() { return m_Matrix; }
+ const FX_FLOAT* GetMatrix() const { return m_Matrix; }
+
+ FX_FLOAT GetFontSizeV() const;
+ FX_FLOAT GetFontSizeH() const;
+ FX_FLOAT GetBaselineAngle() const;
+ FX_FLOAT GetShearAngle() const;
+
CPDF_Font* m_pFont;
CPDF_Document* m_pDocument;
FX_FLOAT m_FontSize;
diff --git a/core/fpdfapi/fpdf_render/fpdf_render.cpp b/core/fpdfapi/fpdf_render/fpdf_render.cpp
index f5ab9696c7..447cc04f06 100644
--- a/core/fpdfapi/fpdf_render/fpdf_render.cpp
+++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp
@@ -809,8 +809,8 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj,
textobj->GetTextMatrix(&text_matrix);
CPDF_TextRenderer::DrawTextPath(
&text_device, textobj->m_nChars, textobj->m_pCharCodes,
- textobj->m_pCharPos, textobj->m_TextState.GetFont(),
- textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix,
+ textobj->m_pCharPos, textobj->m_TextState->GetFont(),
+ textobj->m_TextState->GetFontSize(), &text_matrix, &new_matrix,
textobj->m_GraphState.GetObject(), (FX_ARGB)-1, 0, nullptr, 0);
}
}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
index 4b59f1d61a..387ecff27c 100644
--- a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
+++ b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
@@ -235,7 +235,7 @@ FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj,
if (text_render_mode == TextRenderingMode::MODE_INVISIBLE)
return TRUE;
- CPDF_Font* pFont = textobj->m_TextState.GetFont();
+ CPDF_Font* pFont = textobj->m_TextState->GetFont();
if (pFont->IsType3Font())
return ProcessType3Text(textobj, pObj2Device);
@@ -297,7 +297,7 @@ FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj,
if (!IsAvailableMatrix(text_matrix))
return TRUE;
- FX_FLOAT font_size = textobj->m_TextState.GetFontSize();
+ FX_FLOAT font_size = textobj->m_TextState->GetFontSize();
if (bPattern) {
DrawTextPathWithPattern(textobj, pObj2Device, pFont, font_size,
&text_matrix, bFill, bStroke);
@@ -373,7 +373,7 @@ class CPDF_RefType3Cache {
// TODO(npm): Font fallback for type 3 fonts? (Completely separate code!!)
FX_BOOL CPDF_RenderStatus::ProcessType3Text(const CPDF_TextObject* textobj,
const CFX_Matrix* pObj2Device) {
- CPDF_Type3Font* pType3Font = textobj->m_TextState.GetFont()->AsType3Font();
+ CPDF_Type3Font* pType3Font = textobj->m_TextState->GetFont()->AsType3Font();
for (int i = 0; i < m_Type3FontCache.GetSize(); ++i) {
if (m_Type3FontCache.GetAt(i) == pType3Font)
return TRUE;
@@ -385,7 +385,7 @@ FX_BOOL CPDF_RenderStatus::ProcessType3Text(const CPDF_TextObject* textobj,
CFX_Matrix text_matrix;
textobj->GetTextMatrix(&text_matrix);
CFX_Matrix char_matrix = pType3Font->GetFontMatrix();
- FX_FLOAT font_size = textobj->m_TextState.GetFontSize();
+ FX_FLOAT font_size = textobj->m_TextState->GetFontSize();
char_matrix.Scale(font_size, font_size);
FX_ARGB fill_argb = GetFillArgb(textobj, TRUE);
int fill_alpha = FXARGB_A(fill_argb);
diff --git a/core/fpdftext/cpdf_textpage.cpp b/core/fpdftext/cpdf_textpage.cpp
index ca1cbf1925..2ea6509021 100644
--- a/core/fpdftext/cpdf_textpage.cpp
+++ b/core/fpdftext/cpdf_textpage.cpp
@@ -54,7 +54,7 @@ FX_FLOAT CalculateBaseSpace(const CPDF_TextObject* pTextObj,
CPDF_TextObjectItem item;
pTextObj->GetItemInfo(i, &item);
if (item.m_CharCode == static_cast<uint32_t>(-1)) {
- FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH();
+ FX_FLOAT fontsize_h = pTextObj->m_TextState->GetFontSizeH();
FX_FLOAT kerning = -fontsize_h * item.m_OriginX / 1000;
baseSpace = std::min(baseSpace, kerning + spacing);
bAllChar = false;
@@ -1084,7 +1084,7 @@ void CPDF_TextPage::ProcessTextObject(PDFTEXT_Obj Obj) {
if (str.IsEmpty() || str.GetAt(str.GetLength() - 1) == TEXT_SPACE_CHAR)
continue;
- FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH();
+ FX_FLOAT fontsize_h = pTextObj->m_TextState->GetFontSizeH();
spacing = -fontsize_h * item.m_OriginX / 1000;
continue;
}
@@ -1096,7 +1096,7 @@ void CPDF_TextPage::ProcessTextObject(PDFTEXT_Obj Obj) {
spacing -= baseSpace;
if (spacing && i > 0) {
int last_width = 0;
- FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH();
+ FX_FLOAT fontsize_h = pTextObj->m_TextState->GetFontSizeH();
uint32_t space_charcode = pFont->CharCodeFromUnicode(' ');
FX_FLOAT threshold = 0;
if (space_charcode != CPDF_Font::kInvalidCharCode)
diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp
index af8bb7de5b..7c26c73d87 100644
--- a/fpdfsdk/fpdf_transformpage.cpp
+++ b/fpdfsdk/fpdf_transformpage.cpp
@@ -223,7 +223,7 @@ DLLEXPORT FPDF_CLIPPATH STDCALL FPDF_CreateClipPath(float left,
pNewClipPath->MakePrivateCopy();
CPDF_Path Path;
Path.MakePrivateCopy();
- Path.AppendRect(left, bottom, right, top);
+ Path->AppendRect(left, bottom, right, top);
pNewClipPath->AppendPath(Path, FXFILL_ALTERNATE, FALSE);
return pNewClipPath;
}
@@ -239,7 +239,7 @@ void OutputPath(CFX_ByteTextBuf& buf, CPDF_Path path) {
FX_PATHPOINT* pPoints = pPathData->GetPoints();
- if (path.IsRect()) {
+ if (path->IsRect()) {
buf << (pPoints[0].m_PointX) << " " << (pPoints[0].m_PointY) << " "
<< (pPoints[2].m_PointX - pPoints[0].m_PointX) << " "
<< (pPoints[2].m_PointY - pPoints[0].m_PointY) << " re\n";
@@ -290,7 +290,7 @@ DLLEXPORT void STDCALL FPDFPage_InsertClipPath(FPDF_PAGE page,
for (i = 0; i < pClipPath->GetPathCount(); i++) {
CPDF_Path path = pClipPath->GetPath(i);
int iClipType = pClipPath->GetClipType(i);
- if (path.GetPointCount() == 0) {
+ if (path->GetPointCount() == 0) {
// Empty clipping (totally clipped out)
strClip << "0 0 m W n ";
} else {