summaryrefslogtreecommitdiff
path: root/core/fpdfapi
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi')
-rw-r--r--core/fpdfapi/page/cpdf_clippath.cpp52
-rw-r--r--core/fpdfapi/page/cpdf_clippath.h4
-rw-r--r--core/fpdfapi/page/cpdf_contentparser.cpp3
-rw-r--r--core/fpdfapi/render/cpdf_renderstatus.cpp21
4 files changed, 38 insertions, 42 deletions
diff --git a/core/fpdfapi/page/cpdf_clippath.cpp b/core/fpdfapi/page/cpdf_clippath.cpp
index 714b56bff3..465a2d3549 100644
--- a/core/fpdfapi/page/cpdf_clippath.cpp
+++ b/core/fpdfapi/page/cpdf_clippath.cpp
@@ -10,7 +10,6 @@
#include "core/fpdfapi/page/cpdf_path.h"
#include "core/fpdfapi/page/cpdf_textobject.h"
-#include "third_party/base/stl_util.h"
#define FPDF_CLIPPATH_MAX_TEXTS 1024
@@ -20,8 +19,8 @@ CPDF_ClipPath::CPDF_ClipPath(const CPDF_ClipPath& that) : m_Ref(that.m_Ref) {}
CPDF_ClipPath::~CPDF_ClipPath() {}
-uint32_t CPDF_ClipPath::GetPathCount() const {
- return pdfium::CollectionSize<uint32_t>(m_Ref.GetObject()->m_PathAndTypeList);
+size_t CPDF_ClipPath::GetPathCount() const {
+ return m_Ref.GetObject()->m_PathAndTypeList.size();
}
CPDF_Path CPDF_ClipPath::GetPath(size_t i) const {
@@ -32,8 +31,8 @@ uint8_t CPDF_ClipPath::GetClipType(size_t i) const {
return m_Ref.GetObject()->m_PathAndTypeList[i].second;
}
-uint32_t CPDF_ClipPath::GetTextCount() const {
- return pdfium::CollectionSize<uint32_t>(m_Ref.GetObject()->m_TextList);
+size_t CPDF_ClipPath::GetTextCount() const {
+ return m_Ref.GetObject()->m_TextList.size();
}
CPDF_TextObject* CPDF_ClipPath::GetText(size_t i) const {
@@ -43,36 +42,33 @@ CPDF_TextObject* CPDF_ClipPath::GetText(size_t i) const {
CFX_FloatRect CPDF_ClipPath::GetClipBox() const {
CFX_FloatRect rect;
bool bStarted = false;
- int count = GetPathCount();
- if (count) {
+ if (GetPathCount() > 0) {
rect = GetPath(0).GetBoundingBox();
- for (int i = 1; i < count; i++) {
+ for (size_t i = 1; i < GetPathCount(); ++i) {
CFX_FloatRect path_rect = GetPath(i).GetBoundingBox();
rect.Intersect(path_rect);
}
bStarted = true;
}
- count = GetTextCount();
- if (count) {
- CFX_FloatRect layer_rect;
- bool bLayerStarted = false;
- for (int i = 0; i < count; i++) {
- CPDF_TextObject* pTextObj = GetText(i);
- if (!pTextObj) {
- if (!bStarted) {
- rect = layer_rect;
- bStarted = true;
- } else {
- rect.Intersect(layer_rect);
- }
- bLayerStarted = false;
+
+ CFX_FloatRect layer_rect;
+ bool bLayerStarted = false;
+ for (size_t i = 0; i < GetTextCount(); ++i) {
+ CPDF_TextObject* pTextObj = GetText(i);
+ if (!pTextObj) {
+ if (!bStarted) {
+ rect = layer_rect;
+ bStarted = true;
+ } else {
+ rect.Intersect(layer_rect);
+ }
+ bLayerStarted = false;
+ } else {
+ if (!bLayerStarted) {
+ layer_rect = CFX_FloatRect(pTextObj->GetBBox(nullptr));
+ bLayerStarted = true;
} else {
- if (!bLayerStarted) {
- layer_rect = CFX_FloatRect(pTextObj->GetBBox(nullptr));
- bLayerStarted = true;
- } else {
- layer_rect.Union(CFX_FloatRect(pTextObj->GetBBox(nullptr)));
- }
+ layer_rect.Union(CFX_FloatRect(pTextObj->GetBBox(nullptr)));
}
}
}
diff --git a/core/fpdfapi/page/cpdf_clippath.h b/core/fpdfapi/page/cpdf_clippath.h
index 740342f14b..89365a2d5a 100644
--- a/core/fpdfapi/page/cpdf_clippath.h
+++ b/core/fpdfapi/page/cpdf_clippath.h
@@ -33,10 +33,10 @@ class CPDF_ClipPath {
}
bool operator!=(const CPDF_ClipPath& that) const { return !(*this == that); }
- uint32_t GetPathCount() const;
+ size_t GetPathCount() const;
CPDF_Path GetPath(size_t i) const;
uint8_t GetClipType(size_t i) const;
- uint32_t GetTextCount() const;
+ size_t GetTextCount() const;
CPDF_TextObject* GetText(size_t i) const;
CFX_FloatRect GetClipBox() const;
void AppendPath(CPDF_Path path, uint8_t type, bool bAutoMerge);
diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp
index 30701422d2..7095ff596f 100644
--- a/core/fpdfapi/page/cpdf_contentparser.cpp
+++ b/core/fpdfapi/page/cpdf_contentparser.cpp
@@ -190,8 +190,9 @@ bool CPDF_ContentParser::Continue(IFX_PauseIndicator* pPause) {
continue;
if (pObj->m_ClipPath.GetPathCount() != 1)
continue;
- if (pObj->m_ClipPath.GetTextCount())
+ if (pObj->m_ClipPath.GetTextCount() > 0)
continue;
+
CPDF_Path ClipPath = pObj->m_ClipPath.GetPath(0);
if (!ClipPath.IsRect() || pObj->IsShading())
continue;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 5f9a8992d3..e70e813cb4 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1399,8 +1399,7 @@ void CPDF_RenderStatus::ProcessClipPath(const CPDF_ClipPath& ClipPath,
m_LastClipPath = ClipPath;
m_pDevice->RestoreState(true);
- int nClipPath = ClipPath.GetPathCount();
- for (int i = 0; i < nClipPath; ++i) {
+ for (size_t i = 0; i < ClipPath.GetPathCount(); ++i) {
const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject();
if (!pPathData)
continue;
@@ -1408,15 +1407,14 @@ void CPDF_RenderStatus::ProcessClipPath(const CPDF_ClipPath& ClipPath,
if (pPathData->GetPoints().empty()) {
CFX_PathData EmptyPath;
EmptyPath.AppendRect(-1, -1, 0, 0);
- int fill_mode = FXFILL_WINDING;
- m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode);
+ m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, FXFILL_WINDING);
} else {
- int ClipType = ClipPath.GetClipType(i);
- m_pDevice->SetClip_PathFill(pPathData, pObj2Device, ClipType);
+ m_pDevice->SetClip_PathFill(pPathData, pObj2Device,
+ ClipPath.GetClipType(i));
}
}
- int textcount = ClipPath.GetTextCount();
- if (textcount == 0)
+
+ if (ClipPath.GetTextCount() == 0)
return;
if (m_pDevice->GetDeviceClass() == FXDC_DISPLAY &&
@@ -1425,7 +1423,7 @@ void CPDF_RenderStatus::ProcessClipPath(const CPDF_ClipPath& ClipPath,
}
std::unique_ptr<CFX_PathData> pTextClippingPath;
- for (int i = 0; i < textcount; ++i) {
+ for (size_t i = 0; i < ClipPath.GetTextCount(); ++i) {
CPDF_TextObject* pText = ClipPath.GetText(i);
if (pText) {
if (!pTextClippingPath)
@@ -1496,7 +1494,8 @@ bool CPDF_RenderStatus::ProcessTransparency(CPDF_PageObject* pPageObj,
pFormResource = pFormDict->GetDictFor("Resources");
}
bool bTextClip =
- (pPageObj->m_ClipPath.HasRef() && pPageObj->m_ClipPath.GetTextCount() &&
+ (pPageObj->m_ClipPath.HasRef() &&
+ pPageObj->m_ClipPath.GetTextCount() > 0 &&
m_pDevice->GetDeviceClass() == FXDC_DISPLAY &&
!(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP));
if ((m_Options.HasFlag(RENDER_OVERPRINT)) && pPageObj->IsImage() &&
@@ -1585,7 +1584,7 @@ bool CPDF_RenderStatus::ProcessTransparency(CPDF_PageObject* pPageObj,
pTextMask->Clear(0);
CFX_DefaultRenderDevice text_device;
text_device.Attach(pTextMask, false, nullptr, false);
- for (uint32_t i = 0; i < pPageObj->m_ClipPath.GetTextCount(); i++) {
+ for (size_t i = 0; i < pPageObj->m_ClipPath.GetTextCount(); ++i) {
CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i);
if (!textobj)
break;