Encapsulate CPDF_GraphicStates member variables
Only allow access via getters/setters.
Bug: pdfium:1680
Change-Id: If2edc7ea4bab8f8d9cedfd1a39d592deaa079537
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/113515
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index 586162c..c39493d 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -528,25 +528,25 @@
CPDF_PageObject* pPageObj) {
*buf << "q ";
float fillColor[3];
- if (GetColor(pPageObj->m_ColorState.GetFillColor(), fillColor)) {
+ if (GetColor(pPageObj->color_state().GetFillColor(), fillColor)) {
*buf << fillColor[0] << " " << fillColor[1] << " " << fillColor[2]
<< " rg ";
}
float strokeColor[3];
- if (GetColor(pPageObj->m_ColorState.GetStrokeColor(), strokeColor)) {
+ if (GetColor(pPageObj->color_state().GetStrokeColor(), strokeColor)) {
*buf << strokeColor[0] << " " << strokeColor[1] << " " << strokeColor[2]
<< " RG ";
}
- float lineWidth = pPageObj->m_GraphState.GetLineWidth();
+ float lineWidth = pPageObj->graph_state().GetLineWidth();
if (lineWidth != 1.0f)
WriteFloat(*buf, lineWidth) << " w ";
- CFX_GraphStateData::LineCap lineCap = pPageObj->m_GraphState.GetLineCap();
+ CFX_GraphStateData::LineCap lineCap = pPageObj->graph_state().GetLineCap();
if (lineCap != CFX_GraphStateData::LineCap::kButt)
*buf << static_cast<int>(lineCap) << " J ";
- CFX_GraphStateData::LineJoin lineJoin = pPageObj->m_GraphState.GetLineJoin();
+ CFX_GraphStateData::LineJoin lineJoin = pPageObj->graph_state().GetLineJoin();
if (lineJoin != CFX_GraphStateData::LineJoin::kMiter)
*buf << static_cast<int>(lineJoin) << " j ";
- std::vector<float> dash_array = pPageObj->m_GraphState.GetLineDashArray();
+ std::vector<float> dash_array = pPageObj->graph_state().GetLineDashArray();
if (dash_array.size()) {
*buf << "[";
for (size_t i = 0; i < dash_array.size(); ++i) {
@@ -556,10 +556,10 @@
WriteFloat(*buf, dash_array[i]);
}
*buf << "] ";
- WriteFloat(*buf, pPageObj->m_GraphState.GetLineDashPhase()) << " d ";
+ WriteFloat(*buf, pPageObj->graph_state().GetLineDashPhase()) << " d ";
}
- const CPDF_ClipPath& clip_path = pPageObj->m_ClipPath;
+ const CPDF_ClipPath& clip_path = pPageObj->clip_path();
if (clip_path.HasRef()) {
for (size_t i = 0; i < clip_path.GetPathCount(); ++i) {
CPDF_Path path = clip_path.GetPath(i);
@@ -582,9 +582,9 @@
}
GraphicsData graphD;
- graphD.fillAlpha = pPageObj->m_GeneralState.GetFillAlpha();
- graphD.strokeAlpha = pPageObj->m_GeneralState.GetStrokeAlpha();
- graphD.blendType = pPageObj->m_GeneralState.GetBlendType();
+ graphD.fillAlpha = pPageObj->general_state().GetFillAlpha();
+ graphD.strokeAlpha = pPageObj->general_state().GetStrokeAlpha();
+ graphD.blendType = pPageObj->general_state().GetBlendType();
if (graphD.fillAlpha == 1.0f && graphD.strokeAlpha == 1.0f &&
graphD.blendType == BlendMode::kNormal) {
return;
@@ -605,11 +605,11 @@
if (graphD.blendType != BlendMode::kNormal) {
gsDict->SetNewFor<CPDF_Name>("BM",
- pPageObj->m_GeneralState.GetBlendMode());
+ pPageObj->general_state().GetBlendMode());
}
m_pDocument->AddIndirectObject(gsDict);
name = RealizeResource(std::move(gsDict), "ExtGState");
- pPageObj->m_GeneralState.SetGraphicsResourceNames({name});
+ pPageObj->mutable_general_state().SetGraphicsResourceNames({name});
m_pObjHolder->GraphicsMapInsert(graphD, name);
}
*buf << "/" << PDF_NameEncode(name) << " gs ";
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp
index 8d6aa1f..4e2d915 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp
@@ -90,9 +90,9 @@
pPathObj->path().AppendRect(0.000000000000000000001,
0.000000000000000000001, 100, 100);
- pPathObj->m_ColorState.SetFillColor(pCS, rgb);
- pPathObj->m_ColorState.SetStrokeColor(pCS, rgb);
- pPathObj->m_GraphState.SetLineWidth(200000000000000000001.0);
+ pPathObj->mutable_color_state().SetFillColor(pCS, rgb);
+ pPathObj->mutable_color_state().SetStrokeColor(pCS, rgb);
+ pPathObj->mutable_graph_state().SetLineWidth(200000000000000000001.0);
pPathObj->Transform(CFX_Matrix(1, 0, 0, 1, 0.000000000000000000001,
200000000000000.000002));
@@ -111,9 +111,9 @@
{
// Test code in ProcessPath that handles bezier operator
auto pPathObj = std::make_unique<CPDF_PathObject>();
- pPathObj->m_ColorState.SetFillColor(pCS, rgb);
- pPathObj->m_ColorState.SetStrokeColor(pCS, rgb);
- pPathObj->m_GraphState.SetLineWidth(2.000000000000000000001);
+ pPathObj->mutable_color_state().SetFillColor(pCS, rgb);
+ pPathObj->mutable_color_state().SetStrokeColor(pCS, rgb);
+ pPathObj->mutable_graph_state().SetLineWidth(2.000000000000000000001);
pPathObj->Transform(CFX_Matrix(1, 0, 0, 1, 432, 500000000000000.000002));
pPathObj->set_filltype(CFX_FillRenderOptions::FillType::kWinding);
@@ -193,12 +193,12 @@
static const std::vector<float> rgb = {0.5f, 0.7f, 0.35f};
RetainPtr<CPDF_ColorSpace> pCS =
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceRGB);
- pPathObj->m_ColorState.SetFillColor(pCS, rgb);
+ pPathObj->mutable_color_state().SetFillColor(pCS, rgb);
static const std::vector<float> rgb2 = {1, 0.9f, 0};
- pPathObj->m_ColorState.SetStrokeColor(pCS, rgb2);
- pPathObj->m_GeneralState.SetFillAlpha(0.5f);
- pPathObj->m_GeneralState.SetStrokeAlpha(0.8f);
+ pPathObj->mutable_color_state().SetStrokeColor(pCS, rgb2);
+ pPathObj->mutable_general_state().SetFillAlpha(0.5f);
+ pPathObj->mutable_general_state().SetStrokeAlpha(0.8f);
auto pDoc = std::make_unique<CPDF_TestDocument>();
pDoc->CreateNewDoc();
@@ -224,7 +224,7 @@
EXPECT_EQ(0.8f, externalGS->GetFloatFor("CA"));
// Same path, now with a stroke.
- pPathObj->m_GraphState.SetLineWidth(10.5f);
+ pPathObj->mutable_graph_state().SetLineWidth(10.5f);
buf.str("");
TestProcessPath(&generator, &buf, pPathObj.get());
ByteString pathString2(buf);
@@ -248,19 +248,19 @@
auto pTestPage = pdfium::MakeRetain<CPDF_Page>(pDoc.get(), pPageDict);
CPDF_PageContentGenerator generator(pTestPage.Get());
auto pTextObj = std::make_unique<CPDF_TextObject>();
- pTextObj->m_TextState.SetFont(
+ pTextObj->mutable_text_state().SetFont(
CPDF_Font::GetStockFont(pDoc.get(), "Times-Roman"));
- pTextObj->m_TextState.SetFontSize(10.0f);
+ pTextObj->mutable_text_state().SetFontSize(10.0f);
static const std::vector<float> rgb = {0.5f, 0.7f, 0.35f};
RetainPtr<CPDF_ColorSpace> pCS =
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceRGB);
- pTextObj->m_ColorState.SetFillColor(pCS, rgb);
+ pTextObj->mutable_color_state().SetFillColor(pCS, rgb);
static const std::vector<float> rgb2 = {1, 0.9f, 0};
- pTextObj->m_ColorState.SetStrokeColor(pCS, rgb2);
- pTextObj->m_GeneralState.SetFillAlpha(0.5f);
- pTextObj->m_GeneralState.SetStrokeAlpha(0.8f);
+ pTextObj->mutable_color_state().SetStrokeColor(pCS, rgb2);
+ pTextObj->mutable_general_state().SetFillAlpha(0.5f);
+ pTextObj->mutable_general_state().SetStrokeAlpha(0.8f);
pTextObj->Transform(CFX_Matrix(1, 0, 0, 1, 100, 100));
pTextObj->SetText("Hello World");
fxcrt::ostringstream buf;
@@ -331,9 +331,9 @@
pDict->SetNewFor<CPDF_Reference>("FontDescriptor", pDoc.get(),
pDesc->GetObjNum());
- pTextObj->m_TextState.SetFont(
+ pTextObj->mutable_text_state().SetFont(
CPDF_DocPageData::FromDocument(pDoc.get())->GetFont(pDict));
- pTextObj->m_TextState.SetFontSize(15.5f);
+ pTextObj->mutable_text_state().SetFontSize(15.5f);
pTextObj->SetText("I am indirect");
pTextObj->SetTextRenderMode(TextRenderingMode::MODE_FILL_CLIP);
@@ -343,9 +343,9 @@
pPath->AppendPoint(CFX_PointF(5, 0), CFX_Path::Point::Type::kLine);
pPath->AppendPoint(CFX_PointF(5, 4), CFX_Path::Point::Type::kLine);
pPath->AppendPointAndClose(CFX_PointF(0, 4), CFX_Path::Point::Type::kLine);
- pTextObj->m_ClipPath.Emplace();
- pTextObj->m_ClipPath.AppendPath(*pPath,
- CFX_FillRenderOptions::FillType::kEvenOdd);
+ CPDF_ClipPath& clip_path = pTextObj->mutable_clip_path();
+ clip_path.Emplace();
+ clip_path.AppendPath(*pPath, CFX_FillRenderOptions::FillType::kEvenOdd);
TestProcessText(&generator, &buf, pTextObj.get());
}
diff --git a/core/fpdfapi/page/cpdf_allstates.cpp b/core/fpdfapi/page/cpdf_allstates.cpp
index e9263a7..fee8d22 100644
--- a/core/fpdfapi/page/cpdf_allstates.cpp
+++ b/core/fpdfapi/page/cpdf_allstates.cpp
@@ -39,7 +39,7 @@
float phase,
float scale) {
std::vector<float> dashes = ReadArrayElementsToVector(pArray, pArray->size());
- m_GraphState.SetLineDash(std::move(dashes), phase, scale);
+ mutable_graph_state().SetLineDash(std::move(dashes), phase, scale);
}
void CPDF_AllStates::ProcessExtGS(const CPDF_Dictionary* pGS,
@@ -53,18 +53,18 @@
uint32_t key = it.first.GetID();
switch (key) {
case FXBSTR_ID('L', 'W', 0, 0):
- m_GraphState.SetLineWidth(pObject->GetNumber());
+ mutable_graph_state().SetLineWidth(pObject->GetNumber());
break;
case FXBSTR_ID('L', 'C', 0, 0):
- m_GraphState.SetLineCap(
+ mutable_graph_state().SetLineCap(
static_cast<CFX_GraphStateData::LineCap>(pObject->GetInteger()));
break;
case FXBSTR_ID('L', 'J', 0, 0):
- m_GraphState.SetLineJoin(
+ mutable_graph_state().SetLineJoin(
static_cast<CFX_GraphStateData::LineJoin>(pObject->GetInteger()));
break;
case FXBSTR_ID('M', 'L', 0, 0):
- m_GraphState.SetMiterLimit(pObject->GetNumber());
+ mutable_graph_state().SetMiterLimit(pObject->GetNumber());
break;
case FXBSTR_ID('D', 0, 0, 0): {
const CPDF_Array* pDash = pObject->AsArray();
@@ -79,15 +79,16 @@
break;
}
case FXBSTR_ID('R', 'I', 0, 0):
- m_GeneralState.SetRenderIntent(pObject->GetString());
+ mutable_general_state().SetRenderIntent(pObject->GetString());
break;
case FXBSTR_ID('F', 'o', 'n', 't'): {
const CPDF_Array* pFont = pObject->AsArray();
if (!pFont)
break;
- m_TextState.SetFontSize(pFont->GetFloatAt(1));
- m_TextState.SetFont(pParser->FindFont(pFont->GetByteStringAt(0)));
+ mutable_text_state().SetFontSize(pFont->GetFloatAt(1));
+ mutable_text_state().SetFont(
+ pParser->FindFont(pFont->GetByteStringAt(0)));
break;
}
case FXBSTR_ID('T', 'R', 0, 0):
@@ -96,41 +97,44 @@
}
[[fallthrough]];
case FXBSTR_ID('T', 'R', '2', 0):
- m_GeneralState.SetTR(!pObject->IsName() ? std::move(pObject) : nullptr);
+ mutable_general_state().SetTR(!pObject->IsName() ? std::move(pObject)
+ : nullptr);
break;
case FXBSTR_ID('B', 'M', 0, 0): {
const CPDF_Array* pArray = pObject->AsArray();
- m_GeneralState.SetBlendMode(pArray ? pArray->GetByteStringAt(0)
- : pObject->GetString());
- if (m_GeneralState.GetBlendType() > BlendMode::kMultiply)
+ mutable_general_state().SetBlendMode(pArray ? pArray->GetByteStringAt(0)
+ : pObject->GetString());
+ if (general_state().GetBlendType() > BlendMode::kMultiply) {
pParser->GetPageObjectHolder()->SetBackgroundAlphaNeeded(true);
+ }
break;
}
case FXBSTR_ID('S', 'M', 'a', 's'): {
RetainPtr<CPDF_Dictionary> pMaskDict = ToDictionary(pObject);
- m_GeneralState.SetSoftMask(pMaskDict);
+ mutable_general_state().SetSoftMask(pMaskDict);
if (pMaskDict)
- m_GeneralState.SetSMaskMatrix(pParser->GetCurStates()->m_CTM);
+ mutable_general_state().SetSMaskMatrix(
+ pParser->GetCurStates()->m_CTM);
break;
}
case FXBSTR_ID('C', 'A', 0, 0):
- m_GeneralState.SetStrokeAlpha(
+ mutable_general_state().SetStrokeAlpha(
std::clamp(pObject->GetNumber(), 0.0f, 1.0f));
break;
case FXBSTR_ID('c', 'a', 0, 0):
- m_GeneralState.SetFillAlpha(
+ mutable_general_state().SetFillAlpha(
std::clamp(pObject->GetNumber(), 0.0f, 1.0f));
break;
case FXBSTR_ID('O', 'P', 0, 0):
- m_GeneralState.SetStrokeOP(!!pObject->GetInteger());
+ mutable_general_state().SetStrokeOP(!!pObject->GetInteger());
if (!pGS->KeyExist("op"))
- m_GeneralState.SetFillOP(!!pObject->GetInteger());
+ mutable_general_state().SetFillOP(!!pObject->GetInteger());
break;
case FXBSTR_ID('o', 'p', 0, 0):
- m_GeneralState.SetFillOP(!!pObject->GetInteger());
+ mutable_general_state().SetFillOP(!!pObject->GetInteger());
break;
case FXBSTR_ID('O', 'P', 'M', 0):
- m_GeneralState.SetOPMode(pObject->GetInteger());
+ mutable_general_state().SetOPMode(pObject->GetInteger());
break;
case FXBSTR_ID('B', 'G', 0, 0):
if (pGS->KeyExist("BG2")) {
@@ -138,7 +142,7 @@
}
[[fallthrough]];
case FXBSTR_ID('B', 'G', '2', 0):
- m_GeneralState.SetBG(std::move(pObject));
+ mutable_general_state().SetBG(std::move(pObject));
break;
case FXBSTR_ID('U', 'C', 'R', 0):
if (pGS->KeyExist("UCR2")) {
@@ -146,29 +150,29 @@
}
[[fallthrough]];
case FXBSTR_ID('U', 'C', 'R', '2'):
- m_GeneralState.SetUCR(std::move(pObject));
+ mutable_general_state().SetUCR(std::move(pObject));
break;
case FXBSTR_ID('H', 'T', 0, 0):
- m_GeneralState.SetHT(std::move(pObject));
+ mutable_general_state().SetHT(std::move(pObject));
break;
case FXBSTR_ID('F', 'L', 0, 0):
- m_GeneralState.SetFlatness(pObject->GetNumber());
+ mutable_general_state().SetFlatness(pObject->GetNumber());
break;
case FXBSTR_ID('S', 'M', 0, 0):
- m_GeneralState.SetSmoothness(pObject->GetNumber());
+ mutable_general_state().SetSmoothness(pObject->GetNumber());
break;
case FXBSTR_ID('S', 'A', 0, 0):
- m_GeneralState.SetStrokeAdjust(!!pObject->GetInteger());
+ mutable_general_state().SetStrokeAdjust(!!pObject->GetInteger());
break;
case FXBSTR_ID('A', 'I', 'S', 0):
- m_GeneralState.SetAlphaSource(!!pObject->GetInteger());
+ mutable_general_state().SetAlphaSource(!!pObject->GetInteger());
break;
case FXBSTR_ID('T', 'K', 0, 0):
- m_GeneralState.SetTextKnockout(!!pObject->GetInteger());
+ mutable_general_state().SetTextKnockout(!!pObject->GetInteger());
break;
}
}
- m_GeneralState.SetMatrix(m_CTM);
+ mutable_general_state().SetMatrix(m_CTM);
}
void CPDF_AllStates::ResetTextPosition() {
diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp
index 8df2a6c..0cc6bc5 100644
--- a/core/fpdfapi/page/cpdf_contentparser.cpp
+++ b/core/fpdfapi/page/cpdf_contentparser.cpp
@@ -100,15 +100,16 @@
m_pParser->GetCurStates()->set_current_transformation_matrix(form_matrix);
m_pParser->GetCurStates()->set_parent_matrix(form_matrix);
if (ClipPath.HasRef()) {
- m_pParser->GetCurStates()->m_ClipPath.AppendPathWithAutoMerge(
+ m_pParser->GetCurStates()->mutable_clip_path().AppendPathWithAutoMerge(
ClipPath, CFX_FillRenderOptions::FillType::kWinding);
}
if (m_pPageObjectHolder->GetTransparency().IsGroup()) {
- CPDF_GeneralState* pState = &m_pParser->GetCurStates()->m_GeneralState;
- pState->SetBlendType(BlendMode::kNormal);
- pState->SetStrokeAlpha(1.0f);
- pState->SetFillAlpha(1.0f);
- pState->SetSoftMask(nullptr);
+ CPDF_GeneralState& state =
+ m_pParser->GetCurStates()->mutable_general_state();
+ state.SetBlendType(BlendMode::kNormal);
+ state.SetStrokeAlpha(1.0f);
+ state.SetFillAlpha(1.0f);
+ state.SetSoftMask(nullptr);
}
m_pSingleStream = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(pStream));
m_pSingleStream->LoadAllDataFiltered();
@@ -205,7 +206,7 @@
m_pPageObjectHolder->GetMutablePageResources(), nullptr, nullptr,
m_pPageObjectHolder, m_pPageObjectHolder->GetMutableResources(),
m_pPageObjectHolder->GetBBox(), nullptr, &m_RecursionState);
- m_pParser->GetCurStates()->m_ColorState.SetDefault();
+ m_pParser->GetCurStates()->mutable_color_state().SetDefault();
}
if (m_CurrentOffset >= GetData().size())
return Stage::kCheckClip;
@@ -226,22 +227,27 @@
}
for (auto& pObj : *m_pPageObjectHolder) {
- if (!pObj->m_ClipPath.HasRef())
+ CPDF_ClipPath& clip_path = pObj->mutable_clip_path();
+ if (!clip_path.HasRef()) {
continue;
- if (pObj->m_ClipPath.GetPathCount() != 1)
+ }
+ if (clip_path.GetPathCount() != 1) {
continue;
- if (pObj->m_ClipPath.GetTextCount() > 0)
+ }
+ if (clip_path.GetTextCount() > 0) {
continue;
+ }
- CPDF_Path ClipPath = pObj->m_ClipPath.GetPath(0);
- if (!ClipPath.IsRect() || pObj->IsShading())
+ CPDF_Path path = clip_path.GetPath(0);
+ if (!path.IsRect() || pObj->IsShading()) {
continue;
+ }
- CFX_PointF point0 = ClipPath.GetPoint(0);
- CFX_PointF point2 = ClipPath.GetPoint(2);
+ CFX_PointF point0 = path.GetPoint(0);
+ CFX_PointF point2 = path.GetPoint(2);
CFX_FloatRect old_rect(point0.x, point0.y, point2.x, point2.y);
if (old_rect.Contains(pObj->GetRect()))
- pObj->m_ClipPath.SetNull();
+ clip_path.SetNull();
}
return Stage::kComplete;
}
diff --git a/core/fpdfapi/page/cpdf_graphicstates.h b/core/fpdfapi/page/cpdf_graphicstates.h
index 9f604c7..e1b35d7 100644
--- a/core/fpdfapi/page/cpdf_graphicstates.h
+++ b/core/fpdfapi/page/cpdf_graphicstates.h
@@ -21,6 +21,22 @@
void CopyStates(const CPDF_GraphicStates& src);
void DefaultStates();
+ const CPDF_ClipPath& clip_path() const { return m_ClipPath; }
+ CPDF_ClipPath& mutable_clip_path() { return m_ClipPath; }
+
+ const CFX_GraphState& graph_state() const { return m_GraphState; }
+ CFX_GraphState& mutable_graph_state() { return m_GraphState; }
+
+ const CPDF_ColorState& color_state() const { return m_ColorState; }
+ CPDF_ColorState& mutable_color_state() { return m_ColorState; }
+
+ const CPDF_TextState& text_state() const { return m_TextState; }
+ CPDF_TextState& mutable_text_state() { return m_TextState; }
+
+ const CPDF_GeneralState& general_state() const { return m_GeneralState; }
+ CPDF_GeneralState& mutable_general_state() { return m_GeneralState; }
+
+ private:
CPDF_ClipPath m_ClipPath;
CFX_GraphState m_GraphState;
CPDF_ColorState m_ColorState;
diff --git a/core/fpdfapi/page/cpdf_pageobject.cpp b/core/fpdfapi/page/cpdf_pageobject.cpp
index abc896f..68f2bcd 100644
--- a/core/fpdfapi/page/cpdf_pageobject.cpp
+++ b/core/fpdfapi/page/cpdf_pageobject.cpp
@@ -77,7 +77,7 @@
pdfium::span<const ByteString> CPDF_PageObject::GetGraphicsResourceNames()
const {
- return m_GeneralState.GetGraphicsResourceNames();
+ return general_state().GetGraphicsResourceNames();
}
void CPDF_PageObject::CopyData(const CPDF_PageObject* pSrc) {
@@ -87,16 +87,20 @@
}
void CPDF_PageObject::TransformClipPath(const CFX_Matrix& matrix) {
- if (!m_ClipPath.HasRef())
+ CPDF_ClipPath& clip_path = mutable_clip_path();
+ if (!clip_path.HasRef()) {
return;
- m_ClipPath.Transform(matrix);
+ }
+ clip_path.Transform(matrix);
SetDirty(true);
}
void CPDF_PageObject::TransformGeneralState(const CFX_Matrix& matrix) {
- if (!m_GeneralState.HasRef())
+ CPDF_GeneralState& general_state = mutable_general_state();
+ if (!general_state.HasRef()) {
return;
- m_GeneralState.GetMutableMatrix()->Concat(matrix);
+ }
+ general_state.GetMutableMatrix()->Concat(matrix);
SetDirty(true);
}
diff --git a/core/fpdfapi/page/cpdf_pathobject.cpp b/core/fpdfapi/page/cpdf_pathobject.cpp
index b5e7469..82d50c7 100644
--- a/core/fpdfapi/page/cpdf_pathobject.cpp
+++ b/core/fpdfapi/page/cpdf_pathobject.cpp
@@ -39,10 +39,10 @@
if (!m_Path.HasRef())
return;
CFX_FloatRect rect;
- float width = m_GraphState.GetLineWidth();
+ float width = graph_state().GetLineWidth();
if (m_bStroke && width != 0) {
- rect =
- m_Path.GetBoundingBoxForStrokePath(width, m_GraphState.GetMiterLimit());
+ rect = m_Path.GetBoundingBoxForStrokePath(width,
+ graph_state().GetMiterLimit());
} else {
rect = m_Path.GetBoundingBox();
}
diff --git a/core/fpdfapi/page/cpdf_shadingobject.cpp b/core/fpdfapi/page/cpdf_shadingobject.cpp
index 06d43aa..8dbaa32 100644
--- a/core/fpdfapi/page/cpdf_shadingobject.cpp
+++ b/core/fpdfapi/page/cpdf_shadingobject.cpp
@@ -24,14 +24,17 @@
}
void CPDF_ShadingObject::Transform(const CFX_Matrix& matrix) {
- if (m_ClipPath.HasRef())
- m_ClipPath.Transform(matrix);
+ CPDF_ClipPath& clip_path = mutable_clip_path();
+ if (clip_path.HasRef()) {
+ clip_path.Transform(matrix);
+ }
m_Matrix.Concat(matrix);
- if (m_ClipPath.HasRef())
+ if (clip_path.HasRef()) {
CalcBoundingBox();
- else
+ } else {
SetRect(matrix.TransformRect(GetRect()));
+ }
SetDirty(true);
}
@@ -48,7 +51,8 @@
}
void CPDF_ShadingObject::CalcBoundingBox() {
- if (!m_ClipPath.HasRef())
+ if (!clip_path().HasRef()) {
return;
- SetRect(m_ClipPath.GetClipBox());
+ }
+ SetRect(clip_path().GetClipBox());
}
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
index d49ecee..343b696 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
@@ -399,10 +399,10 @@
if (pStates) {
m_pCurStates->Copy(*pStates);
} else {
- m_pCurStates->m_GeneralState.Emplace();
- m_pCurStates->m_GraphState.Emplace();
- m_pCurStates->m_TextState.Emplace();
- m_pCurStates->m_ColorState.Emplace();
+ m_pCurStates->mutable_general_state().Emplace();
+ m_pCurStates->mutable_graph_state().Emplace();
+ m_pCurStates->mutable_text_state().Emplace();
+ m_pCurStates->mutable_color_state().Emplace();
}
// Add the sentinel.
@@ -547,17 +547,17 @@
bool bColor,
bool bText,
bool bGraph) {
- pObj->m_GeneralState = m_pCurStates->m_GeneralState;
- pObj->m_ClipPath = m_pCurStates->m_ClipPath;
+ pObj->mutable_general_state() = m_pCurStates->general_state();
+ pObj->mutable_clip_path() = m_pCurStates->clip_path();
pObj->SetContentMarks(*m_ContentMarksStack.top());
if (bColor) {
- pObj->m_ColorState = m_pCurStates->m_ColorState;
+ pObj->mutable_color_state() = m_pCurStates->color_state();
}
if (bGraph) {
- pObj->m_GraphState = m_pCurStates->m_GraphState;
+ pObj->mutable_graph_state() = m_pCurStates->graph_state();
}
if (bText) {
- pObj->m_TextState = m_pCurStates->m_TextState;
+ pObj->mutable_text_state() = m_pCurStates->text_state();
}
}
@@ -696,7 +696,7 @@
if (!pCS)
return;
- m_pCurStates->m_ColorState.GetMutableFillColor()->SetColorSpace(
+ m_pCurStates->mutable_color_state().GetMutableFillColor()->SetColorSpace(
std::move(pCS));
}
@@ -705,7 +705,7 @@
if (!pCS)
return;
- m_pCurStates->m_ColorState.GetMutableStrokeColor()->SetColorSpace(
+ m_pCurStates->mutable_color_state().GetMutableStrokeColor()->SetColorSpace(
std::move(pCS));
}
@@ -782,10 +782,10 @@
void CPDF_StreamContentParser::AddForm(RetainPtr<CPDF_Stream> pStream,
const ByteString& name) {
CPDF_AllStates status;
- status.m_GeneralState = m_pCurStates->m_GeneralState;
- status.m_GraphState = m_pCurStates->m_GraphState;
- status.m_ColorState = m_pCurStates->m_ColorState;
- status.m_TextState = m_pCurStates->m_TextState;
+ status.mutable_general_state() = m_pCurStates->general_state();
+ status.mutable_graph_state() = m_pCurStates->graph_state();
+ status.mutable_color_state() = m_pCurStates->color_state();
+ status.mutable_text_state() = m_pCurStates->text_state();
auto form = std::make_unique<CPDF_Form>(
m_pDocument, m_pPageResources, std::move(pStream), m_pResources.Get());
form->ParseContent(&status, nullptr, m_RecursionState);
@@ -883,8 +883,9 @@
if (m_ClipTextList.empty())
return;
- if (TextRenderingModeIsClipMode(m_pCurStates->m_TextState.GetTextMode()))
- m_pCurStates->m_ClipPath.AppendTexts(&m_ClipTextList);
+ if (TextRenderingModeIsClipMode(m_pCurStates->text_state().GetTextMode())) {
+ m_pCurStates->mutable_clip_path().AppendTexts(&m_ClipTextList);
+ }
m_ClipTextList.clear();
}
@@ -902,13 +903,13 @@
}
void CPDF_StreamContentParser::Handle_SetGray_Fill() {
- m_pCurStates->m_ColorState.SetFillColor(
+ m_pCurStates->mutable_color_state().SetFillColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceGray),
GetNumbers(1));
}
void CPDF_StreamContentParser::Handle_SetGray_Stroke() {
- m_pCurStates->m_ColorState.SetStrokeColor(
+ m_pCurStates->mutable_color_state().SetStrokeColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceGray),
GetNumbers(1));
}
@@ -921,7 +922,8 @@
return;
CHECK(!name.IsEmpty());
- m_pCurStates->m_GeneralState.AppendGraphicsResourceName(std::move(name));
+ m_pCurStates->mutable_general_state().AppendGraphicsResourceName(
+ std::move(name));
m_pCurStates->ProcessExtGS(pGS.Get(), this);
}
@@ -937,18 +939,18 @@
}
void CPDF_StreamContentParser::Handle_SetFlat() {
- m_pCurStates->m_GeneralState.SetFlatness(GetNumber(0));
+ m_pCurStates->mutable_general_state().SetFlatness(GetNumber(0));
}
void CPDF_StreamContentParser::Handle_BeginImageData() {}
void CPDF_StreamContentParser::Handle_SetLineJoin() {
- m_pCurStates->m_GraphState.SetLineJoin(
+ m_pCurStates->mutable_graph_state().SetLineJoin(
static_cast<CFX_GraphStateData::LineJoin>(GetInteger(0)));
}
void CPDF_StreamContentParser::Handle_SetLineCap() {
- m_pCurStates->m_GraphState.SetLineCap(
+ m_pCurStates->mutable_graph_state().SetLineCap(
static_cast<CFX_GraphStateData::LineCap>(GetInteger(0)));
}
@@ -956,7 +958,7 @@
if (m_ParamCount != 4)
return;
- m_pCurStates->m_ColorState.SetFillColor(
+ m_pCurStates->mutable_color_state().SetFillColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceCMYK),
GetNumbers(4));
}
@@ -965,7 +967,7 @@
if (m_ParamCount != 4)
return;
- m_pCurStates->m_ColorState.SetStrokeColor(
+ m_pCurStates->mutable_color_state().SetStrokeColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceCMYK),
GetNumbers(4));
}
@@ -986,7 +988,7 @@
}
void CPDF_StreamContentParser::Handle_SetMiterLimit() {
- m_pCurStates->m_GraphState.SetMiterLimit(GetNumber(0));
+ m_pCurStates->mutable_graph_state().SetMiterLimit(GetNumber(0));
}
void CPDF_StreamContentParser::Handle_MarkPlace() {}
@@ -1029,7 +1031,7 @@
if (m_ParamCount != 3)
return;
- m_pCurStates->m_ColorState.SetFillColor(
+ m_pCurStates->mutable_color_state().SetFillColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceRGB),
GetNumbers(3));
}
@@ -1038,7 +1040,7 @@
if (m_ParamCount != 3)
return;
- m_pCurStates->m_ColorState.SetStrokeColor(
+ m_pCurStates->mutable_color_state().SetStrokeColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceRGB),
GetNumbers(3));
}
@@ -1056,12 +1058,13 @@
void CPDF_StreamContentParser::Handle_SetColor_Fill() {
int nargs = std::min(m_ParamCount, 4U);
- m_pCurStates->m_ColorState.SetFillColor(nullptr, GetNumbers(nargs));
+ m_pCurStates->mutable_color_state().SetFillColor(nullptr, GetNumbers(nargs));
}
void CPDF_StreamContentParser::Handle_SetColor_Stroke() {
int nargs = std::min(m_ParamCount, 4U);
- m_pCurStates->m_ColorState.SetStrokeColor(nullptr, GetNumbers(nargs));
+ m_pCurStates->mutable_color_state().SetStrokeColor(nullptr,
+ GetNumbers(nargs));
}
void CPDF_StreamContentParser::Handle_SetColorPS_Fill() {
@@ -1070,7 +1073,7 @@
return;
if (!pLastParam->IsName()) {
- m_pCurStates->m_ColorState.SetFillColor(nullptr, GetColors());
+ m_pCurStates->mutable_color_state().SetFillColor(nullptr, GetColors());
return;
}
@@ -1081,7 +1084,8 @@
return;
std::vector<float> values = GetNamedColors();
- m_pCurStates->m_ColorState.SetFillPattern(std::move(pPattern), values);
+ m_pCurStates->mutable_color_state().SetFillPattern(std::move(pPattern),
+ values);
}
void CPDF_StreamContentParser::Handle_SetColorPS_Stroke() {
@@ -1090,7 +1094,7 @@
return;
if (!pLastParam->IsName()) {
- m_pCurStates->m_ColorState.SetStrokeColor(nullptr, GetColors());
+ m_pCurStates->mutable_color_state().SetStrokeColor(nullptr, GetColors());
return;
}
@@ -1101,7 +1105,8 @@
return;
std::vector<float> values = GetNamedColors();
- m_pCurStates->m_ColorState.SetStrokePattern(std::move(pPattern), values);
+ m_pCurStates->mutable_color_state().SetStrokePattern(std::move(pPattern),
+ values);
}
void CPDF_StreamContentParser::Handle_ShadeFill() {
@@ -1118,7 +1123,7 @@
pShading, matrix);
SetGraphicStates(pObj.get(), false, false, false);
CFX_FloatRect bbox =
- pObj->m_ClipPath.HasRef() ? pObj->m_ClipPath.GetClipBox() : m_BBox;
+ pObj->clip_path().HasRef() ? pObj->clip_path().GetClipBox() : m_BBox;
if (pShading->IsMeshShading())
bbox.Intersect(GetShadingBBox(pShading.Get(), pObj->matrix()));
pObj->SetRect(bbox);
@@ -1126,7 +1131,7 @@
}
void CPDF_StreamContentParser::Handle_SetCharSpace() {
- m_pCurStates->m_TextState.SetCharSpace(GetNumber(0));
+ m_pCurStates->mutable_text_state().SetCharSpace(GetNumber(0));
}
void CPDF_StreamContentParser::Handle_MoveTextPoint() {
@@ -1139,10 +1144,10 @@
}
void CPDF_StreamContentParser::Handle_SetFont() {
- m_pCurStates->m_TextState.SetFontSize(GetNumber(0));
+ m_pCurStates->mutable_text_state().SetFontSize(GetNumber(0));
RetainPtr<CPDF_Font> pFont = FindFont(GetString(1));
if (pFont)
- m_pCurStates->m_TextState.SetFont(std::move(pFont));
+ m_pCurStates->mutable_text_state().SetFont(std::move(pFont));
}
RetainPtr<CPDF_Dictionary> CPDF_StreamContentParser::FindResourceHolder(
@@ -1240,7 +1245,7 @@
float fInitKerning,
const std::vector<float>& kernings,
size_t nSegs) {
- RetainPtr<CPDF_Font> pFont = m_pCurStates->m_TextState.GetFont();
+ RetainPtr<CPDF_Font> pFont = m_pCurStates->text_state().GetFont();
if (!pFont)
return;
@@ -1256,14 +1261,15 @@
const TextRenderingMode text_mode =
pFont->IsType3Font() ? TextRenderingMode::MODE_FILL
- : m_pCurStates->m_TextState.GetTextMode();
+ : m_pCurStates->text_state().GetTextMode();
{
auto pText = std::make_unique<CPDF_TextObject>(GetCurrentStreamIndex());
pText->SetResourceName(pFont->GetResourceName());
SetGraphicStates(pText.get(), true, true, true);
if (TextRenderingModeIsStrokeMode(text_mode)) {
const CFX_Matrix& ctm = m_pCurStates->current_transformation_matrix();
- pdfium::span<float> text_ctm = pText->m_TextState.GetMutableCTM();
+ pdfium::span<float> text_ctm =
+ pText->mutable_text_state().GetMutableCTM();
text_ctm[0] = ctm.a;
text_ctm[1] = ctm.c;
text_ctm[2] = ctm.b;
@@ -1296,7 +1302,7 @@
}
float CPDF_StreamContentParser::GetVerticalTextSize(float fKerning) const {
- return fKerning * m_pCurStates->m_TextState.GetFontSize() / 1000;
+ return fKerning * m_pCurStates->text_state().GetFontSize() / 1000;
}
int32_t CPDF_StreamContentParser::GetCurrentStreamIndex() {
@@ -1375,7 +1381,7 @@
text_matrix.Concat(m_pCurStates->current_transformation_matrix());
text_matrix.Concat(m_mtContentToUser);
pdfium::span<float> pTextMatrix =
- m_pCurStates->m_TextState.GetMutableMatrix();
+ m_pCurStates->mutable_text_state().GetMutableMatrix();
pTextMatrix[0] = text_matrix.a;
pTextMatrix[1] = text_matrix.c;
pTextMatrix[2] = text_matrix.b;
@@ -1385,7 +1391,7 @@
void CPDF_StreamContentParser::Handle_SetTextRenderMode() {
TextRenderingMode mode;
if (SetTextRenderingModeFromInt(GetInteger(0), &mode))
- m_pCurStates->m_TextState.SetTextMode(mode);
+ m_pCurStates->mutable_text_state().SetTextMode(mode);
}
void CPDF_StreamContentParser::Handle_SetTextRise() {
@@ -1393,7 +1399,7 @@
}
void CPDF_StreamContentParser::Handle_SetWordSpace() {
- m_pCurStates->m_TextState.SetWordSpace(GetNumber(0));
+ m_pCurStates->mutable_text_state().SetWordSpace(GetNumber(0));
}
void CPDF_StreamContentParser::Handle_SetHorzScale() {
@@ -1415,7 +1421,7 @@
}
void CPDF_StreamContentParser::Handle_SetLineWidth() {
- m_pCurStates->m_GraphState.SetLineWidth(GetNumber(0));
+ m_pCurStates->mutable_graph_state().SetLineWidth(GetNumber(0));
}
void CPDF_StreamContentParser::Handle_Clip() {
@@ -1438,8 +1444,8 @@
}
void CPDF_StreamContentParser::Handle_NextLineShowText_Space() {
- m_pCurStates->m_TextState.SetWordSpace(GetNumber(2));
- m_pCurStates->m_TextState.SetCharSpace(GetNumber(1));
+ m_pCurStates->mutable_text_state().SetWordSpace(GetNumber(2));
+ m_pCurStates->mutable_text_state().SetCharSpace(GetNumber(1));
Handle_NextLineShowText();
}
@@ -1494,14 +1500,14 @@
if (path_clip_type != CFX_FillRenderOptions::FillType::kNoFill) {
CPDF_Path path;
path.AppendRect(0, 0, 0, 0);
- m_pCurStates->m_ClipPath.AppendPathWithAutoMerge(
+ m_pCurStates->mutable_clip_path().AppendPathWithAutoMerge(
path, CFX_FillRenderOptions::FillType::kWinding);
return;
}
CFX_Path::Point& point = path_points.front();
if (point.m_Type != CFX_Path::Point::Type::kMove || !point.m_CloseFigure ||
- m_pCurStates->m_GraphState.GetLineCap() !=
+ m_pCurStates->graph_state().GetLineCap() !=
CFX_GraphStateData::LineCap::kRound) {
return;
}
@@ -1541,7 +1547,8 @@
if (path_clip_type != CFX_FillRenderOptions::FillType::kNoFill) {
if (!matrix.IsIdentity())
path.Transform(matrix);
- m_pCurStates->m_ClipPath.AppendPathWithAutoMerge(path, path_clip_type);
+ m_pCurStates->mutable_clip_path().AppendPathWithAutoMerge(path,
+ path_clip_type);
}
}
diff --git a/core/fpdfapi/page/cpdf_textobject.cpp b/core/fpdfapi/page/cpdf_textobject.cpp
index 087883e..c2265f6 100644
--- a/core/fpdfapi/page/cpdf_textobject.cpp
+++ b/core/fpdfapi/page/cpdf_textobject.cpp
@@ -178,13 +178,13 @@
}
CFX_Matrix CPDF_TextObject::GetTextMatrix() const {
- pdfium::span<const float> pTextMatrix = m_TextState.GetMatrix();
+ pdfium::span<const float> pTextMatrix = text_state().GetMatrix();
return CFX_Matrix(pTextMatrix[0], pTextMatrix[2], pTextMatrix[1],
pTextMatrix[3], m_Pos.x, m_Pos.y);
}
void CPDF_TextObject::SetTextMatrix(const CFX_Matrix& matrix) {
- pdfium::span<float> pTextMatrix = m_TextState.GetMutableMatrix();
+ pdfium::span<float> pTextMatrix = mutable_text_state().GetMutableMatrix();
pTextMatrix[0] = matrix.a;
pTextMatrix[1] = matrix.c;
pTextMatrix[2] = matrix.b;
@@ -240,19 +240,19 @@
}
RetainPtr<CPDF_Font> CPDF_TextObject::GetFont() const {
- return m_TextState.GetFont();
+ return text_state().GetFont();
}
float CPDF_TextObject::GetFontSize() const {
- return m_TextState.GetFontSize();
+ return text_state().GetFontSize();
}
TextRenderingMode CPDF_TextObject::GetTextRenderMode() const {
- return m_TextState.GetTextMode();
+ return text_state().GetTextMode();
}
void CPDF_TextObject::SetTextRenderMode(TextRenderingMode mode) {
- m_TextState.SetTextMode(mode);
+ mutable_text_state().SetTextMode(mode);
SetDirty(true);
}
@@ -313,9 +313,9 @@
}
curpos += charwidth;
if (charcode == ' ' && (!pCIDFont || pCIDFont->GetCharSize(' ') == 1))
- curpos += m_TextState.GetWordSpace();
+ curpos += text_state().GetWordSpace();
- curpos += m_TextState.GetCharSpace();
+ curpos += text_state().GetCharSpace();
}
if (bVertWriting) {
@@ -328,10 +328,10 @@
SetOriginalRect(CFX_FloatRect(min_x, min_y, max_x, max_y));
CFX_FloatRect rect = GetTextMatrix().TransformRect(GetOriginalRect());
- if (TextRenderingModeIsStrokeMode(m_TextState.GetTextMode())) {
+ if (TextRenderingModeIsStrokeMode(text_state().GetTextMode())) {
// TODO(crbug.com/pdfium/1840): Does the original rect need a similar
// adjustment?
- const float half_width = m_GraphState.GetLineWidth() / 2;
+ const float half_width = graph_state().GetLineWidth() / 2;
rect.Inflate(half_width, half_width);
}
SetRect(rect);
diff --git a/core/fpdfapi/page/cpdf_tilingpattern.cpp b/core/fpdfapi/page/cpdf_tilingpattern.cpp
index d7b2fd3..adc6ccd 100644
--- a/core/fpdfapi/page/cpdf_tilingpattern.cpp
+++ b/core/fpdfapi/page/cpdf_tilingpattern.cpp
@@ -47,12 +47,12 @@
auto form =
std::make_unique<CPDF_Form>(document(), nullptr, std::move(pStream));
- CPDF_AllStates allStates;
- allStates.m_ColorState.Emplace();
- allStates.m_GraphState.Emplace();
- allStates.m_TextState.Emplace();
- allStates.m_GeneralState = pPageObj->m_GeneralState;
- form->ParseContent(&allStates, &matrix, nullptr);
+ CPDF_AllStates all_states;
+ all_states.mutable_color_state().Emplace();
+ all_states.mutable_graph_state().Emplace();
+ all_states.mutable_text_state().Emplace();
+ all_states.mutable_general_state() = pPageObj->general_state();
+ form->ParseContent(&all_states, &matrix, nullptr);
m_BBox = pDict->GetRectFor("BBox");
return form;
}
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index a5a2652..07d50ed 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -91,7 +91,7 @@
if (!m_pLoader->GetBitmap())
return false;
- CPDF_GeneralState& state = m_pImageObject->m_GeneralState;
+ CPDF_GeneralState& state = m_pImageObject->mutable_general_state();
m_BitmapAlpha = FXSYS_roundf(255 * state.GetFillAlpha());
m_pDIBBase = m_pLoader->GetBitmap();
if (GetRenderOptions().ColorModeIs(CPDF_RenderOptions::kAlpha) &&
@@ -110,7 +110,7 @@
m_bPatternColor = false;
m_pPattern = nullptr;
if (m_pDIBBase->IsMaskFormat()) {
- const CPDF_Color* pColor = m_pImageObject->m_ColorState.GetFillColor();
+ const CPDF_Color* pColor = m_pImageObject->color_state().GetFillColor();
if (pColor && pColor->IsPattern()) {
m_pPattern = pColor->GetPattern();
if (m_pPattern)
diff --git a/core/fpdfapi/render/cpdf_progressiverenderer.cpp b/core/fpdfapi/render/cpdf_progressiverenderer.cpp
index c29077a..77823b0 100644
--- a/core/fpdfapi/render/cpdf_progressiverenderer.cpp
+++ b/core/fpdfapi/render/cpdf_progressiverenderer.cpp
@@ -79,7 +79,7 @@
pCurObj->AsImage()->GetImage()->IsMask()) {
if (m_pDevice->GetDeviceType() == DeviceType::kPrinter) {
m_LastObjectRendered = iter;
- m_pRenderStatus->ProcessClipPath(pCurObj->m_ClipPath,
+ m_pRenderStatus->ProcessClipPath(pCurObj->clip_path(),
m_pCurrentLayer->GetMatrix());
return;
}
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 2da1ed2..8da0af6 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -91,7 +91,7 @@
if (options.bNoPathSmooth) {
fill_options.aliased_path = true;
}
- if (path_obj->m_GeneralState.GetStrokeAdjust()) {
+ if (path_obj->general_state().GetStrokeAdjust()) {
fill_options.adjust_stroke = true;
}
if (is_stroke) {
@@ -114,7 +114,7 @@
fill_options.stroke = true;
fill_options.stroke_text_mode = true;
}
- if (text_obj->m_GeneralState.GetStrokeAdjust()) {
+ if (text_obj->general_state().GetStrokeAdjust()) {
fill_options.adjust_stroke = true;
}
if (options.bNoTextSmooth) {
@@ -180,17 +180,17 @@
if (pInitialStates && !m_pType3Char) {
m_InitialStates.CopyStates(*pInitialStates);
if (pParentStatus) {
- if (!m_InitialStates.m_ColorState.HasFillColor()) {
- m_InitialStates.m_ColorState.SetFillColorRef(
- pParentStatus->m_InitialStates.m_ColorState.GetFillColorRef());
- *m_InitialStates.m_ColorState.GetMutableFillColor() =
- *pParentStatus->m_InitialStates.m_ColorState.GetFillColor();
+ if (!m_InitialStates.color_state().HasFillColor()) {
+ m_InitialStates.mutable_color_state().SetFillColorRef(
+ pParentStatus->m_InitialStates.color_state().GetFillColorRef());
+ *m_InitialStates.mutable_color_state().GetMutableFillColor() =
+ *pParentStatus->m_InitialStates.color_state().GetFillColor();
}
- if (!m_InitialStates.m_ColorState.HasStrokeColor()) {
- m_InitialStates.m_ColorState.SetStrokeColorRef(
- pParentStatus->m_InitialStates.m_ColorState.GetFillColorRef());
- *m_InitialStates.m_ColorState.GetMutableStrokeColor() =
- *pParentStatus->m_InitialStates.m_ColorState.GetStrokeColor();
+ if (!m_InitialStates.color_state().HasStrokeColor()) {
+ m_InitialStates.mutable_color_state().SetStrokeColorRef(
+ pParentStatus->m_InitialStates.color_state().GetFillColorRef());
+ *m_InitialStates.mutable_color_state().GetMutableStrokeColor() =
+ *pParentStatus->m_InitialStates.color_state().GetStrokeColor();
}
}
} else {
@@ -233,7 +233,7 @@
if (!m_Options.CheckPageObjectVisible(pObj)) {
return;
}
- ProcessClipPath(pObj->m_ClipPath, mtObj2Device);
+ ProcessClipPath(pObj->clip_path(), mtObj2Device);
if (ProcessTransparency(pObj, mtObj2Device)) {
return;
}
@@ -257,7 +257,7 @@
if (!m_Options.CheckPageObjectVisible(pObj))
return false;
- ProcessClipPath(pObj->m_ClipPath, mtObj2Device);
+ ProcessClipPath(pObj->clip_path(), mtObj2Device);
if (ProcessTransparency(pObj, mtObj2Device))
return false;
@@ -404,7 +404,7 @@
return m_pDevice->DrawPathWithBlend(
*path_obj->path().GetObject(), &path_matrix,
- path_obj->m_GraphState.GetObject(), fill_argb, stroke_argb,
+ path_obj->graph_state().GetObject(), fill_argb, stroke_argb,
GetFillOptionsForDrawPathWithBlend(options, path_obj, fill_type, stroke,
m_pType3Char),
m_curBlend);
@@ -418,31 +418,33 @@
}
FX_ARGB CPDF_RenderStatus::GetFillArgb(CPDF_PageObject* pObj) const {
- if (Type3CharMissingFillColor(m_pType3Char, &pObj->m_ColorState))
+ if (Type3CharMissingFillColor(m_pType3Char, &pObj->color_state())) {
return m_T3FillColor;
+ }
return GetFillArgbForType3(pObj);
}
FX_ARGB CPDF_RenderStatus::GetFillArgbForType3(CPDF_PageObject* pObj) const {
- const CPDF_ColorState* pColorState = &pObj->m_ColorState;
+ const CPDF_ColorState* pColorState = &pObj->color_state();
if (MissingFillColor(pColorState))
- pColorState = &m_InitialStates.m_ColorState;
+ pColorState = &m_InitialStates.color_state();
FX_COLORREF colorref = pColorState->GetFillColorRef();
if (colorref == 0xFFFFFFFF)
return 0;
int32_t alpha =
- static_cast<int32_t>((pObj->m_GeneralState.GetFillAlpha() * 255));
- RetainPtr<const CPDF_Object> pTR = pObj->m_GeneralState.GetTR();
+ static_cast<int32_t>((pObj->general_state().GetFillAlpha() * 255));
+ RetainPtr<const CPDF_Object> pTR = pObj->general_state().GetTR();
if (pTR) {
- if (!pObj->m_GeneralState.GetTransferFunc()) {
- pObj->m_GeneralState.SetTransferFunc(GetTransferFunc(std::move(pTR)));
+ if (!pObj->general_state().GetTransferFunc()) {
+ pObj->mutable_general_state().SetTransferFunc(
+ GetTransferFunc(std::move(pTR)));
}
- if (pObj->m_GeneralState.GetTransferFunc()) {
+ if (pObj->general_state().GetTransferFunc()) {
colorref =
- pObj->m_GeneralState.GetTransferFunc()->TranslateColor(colorref);
+ pObj->general_state().GetTransferFunc()->TranslateColor(colorref);
}
}
return m_Options.TranslateObjectColor(AlphaAndColorRefToArgb(alpha, colorref),
@@ -451,27 +453,28 @@
}
FX_ARGB CPDF_RenderStatus::GetStrokeArgb(CPDF_PageObject* pObj) const {
- const CPDF_ColorState* pColorState = &pObj->m_ColorState;
+ const CPDF_ColorState* pColorState = &pObj->color_state();
if (Type3CharMissingStrokeColor(m_pType3Char, pColorState))
return m_T3FillColor;
if (MissingStrokeColor(pColorState))
- pColorState = &m_InitialStates.m_ColorState;
+ pColorState = &m_InitialStates.color_state();
FX_COLORREF colorref = pColorState->GetStrokeColorRef();
if (colorref == 0xFFFFFFFF)
return 0;
- int32_t alpha = static_cast<int32_t>(pObj->m_GeneralState.GetStrokeAlpha() *
+ int32_t alpha = static_cast<int32_t>(pObj->general_state().GetStrokeAlpha() *
255); // not rounded.
- RetainPtr<const CPDF_Object> pTR = pObj->m_GeneralState.GetTR();
+ RetainPtr<const CPDF_Object> pTR = pObj->general_state().GetTR();
if (pTR) {
- if (!pObj->m_GeneralState.GetTransferFunc()) {
- pObj->m_GeneralState.SetTransferFunc(GetTransferFunc(std::move(pTR)));
+ if (!pObj->general_state().GetTransferFunc()) {
+ pObj->mutable_general_state().SetTransferFunc(
+ GetTransferFunc(std::move(pTR)));
}
- if (pObj->m_GeneralState.GetTransferFunc()) {
+ if (pObj->general_state().GetTransferFunc()) {
colorref =
- pObj->m_GeneralState.GetTransferFunc()->TranslateColor(colorref);
+ pObj->general_state().GetTransferFunc()->TranslateColor(colorref);
}
}
return m_Options.TranslateObjectColor(
@@ -559,7 +562,7 @@
if (stroke) {
return m_pDevice->SetClip_PathStroke(*path_obj->path().GetObject(),
&path_matrix,
- path_obj->m_GraphState.GetObject());
+ path_obj->graph_state().GetObject());
}
CFX_FillRenderOptions fill_options(path_obj->filltype());
if (m_Options.GetOptions().bNoPathSmooth) {
@@ -571,9 +574,9 @@
bool CPDF_RenderStatus::ProcessTransparency(CPDF_PageObject* pPageObj,
const CFX_Matrix& mtObj2Device) {
- const BlendMode blend_type = pPageObj->m_GeneralState.GetBlendType();
+ const BlendMode blend_type = pPageObj->general_state().GetBlendType();
RetainPtr<CPDF_Dictionary> pSMaskDict =
- pPageObj->m_GeneralState.GetMutableSoftMask();
+ pPageObj->mutable_general_state().GetMutableSoftMask();
if (pSMaskDict) {
if (pPageObj->IsImage() &&
pPageObj->AsImage()->GetImage()->GetDict()->KeyExist("SMask")) {
@@ -586,14 +589,14 @@
bool bGroupTransparent = false;
const CPDF_FormObject* pFormObj = pPageObj->AsForm();
if (pFormObj) {
- group_alpha = pFormObj->m_GeneralState.GetFillAlpha();
+ group_alpha = pFormObj->general_state().GetFillAlpha();
transparency = pFormObj->form()->GetTransparency();
bGroupTransparent = transparency.IsIsolated();
pFormResource = pFormObj->form()->GetDict()->GetDictFor("Resources");
}
bool bTextClip =
- (pPageObj->m_ClipPath.HasRef() &&
- pPageObj->m_ClipPath.GetTextCount() > 0 && !m_bPrint &&
+ (pPageObj->clip_path().HasRef() &&
+ pPageObj->clip_path().GetTextCount() > 0 && !m_bPrint &&
!(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP));
if (!pSMaskDict && group_alpha == 1.0f && blend_type == BlendMode::kNormal &&
!bTextClip && !bGroupTransparent) {
@@ -644,17 +647,17 @@
CFX_DefaultRenderDevice text_device;
text_device.Attach(pTextMask);
- for (size_t i = 0; i < pPageObj->m_ClipPath.GetTextCount(); ++i) {
- CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i);
+ for (size_t i = 0; i < pPageObj->clip_path().GetTextCount(); ++i) {
+ CPDF_TextObject* textobj = pPageObj->clip_path().GetText(i);
if (!textobj)
break;
// TODO(thestig): Should we check the return value here?
CPDF_TextRenderer::DrawTextPath(
&text_device, textobj->GetCharCodes(), textobj->GetCharPositions(),
- textobj->m_TextState.GetFont().Get(),
- textobj->m_TextState.GetFontSize(), textobj->GetTextMatrix(),
- &new_matrix, textobj->m_GraphState.GetObject(), 0xffffffff, 0,
+ textobj->text_state().GetFont().Get(),
+ textobj->text_state().GetFontSize(), textobj->GetTextMatrix(),
+ &new_matrix, textobj->graph_state().GetObject(), 0xffffffff, 0,
nullptr, CFX_FillRenderOptions());
}
}
@@ -676,7 +679,7 @@
m_bStopped = bitmap_render.m_bStopped;
if (pSMaskDict) {
CFX_Matrix smask_matrix =
- *pPageObj->m_GeneralState.GetSMaskMatrix() * mtObj2Device;
+ *pPageObj->general_state().GetSMaskMatrix() * mtObj2Device;
RetainPtr<CFX_DIBBase> pSMaskSource =
LoadSMask(pSMaskDict.Get(), &rect, smask_matrix);
if (pSMaskSource)
@@ -753,14 +756,14 @@
auto pStates = std::make_unique<CPDF_GraphicStates>();
pStates->CopyStates(*pSrcStates);
const CPDF_Color* pObjColor = stroke
- ? pSrcStates->m_ColorState.GetStrokeColor()
- : pSrcStates->m_ColorState.GetFillColor();
+ ? pSrcStates->color_state().GetStrokeColor()
+ : pSrcStates->color_state().GetFillColor();
if (!pObjColor->IsNull()) {
- pStates->m_ColorState.SetFillColorRef(
- stroke ? pSrcStates->m_ColorState.GetStrokeColorRef()
- : pSrcStates->m_ColorState.GetFillColorRef());
- pStates->m_ColorState.SetStrokeColorRef(
- pStates->m_ColorState.GetFillColorRef());
+ pStates->mutable_color_state().SetFillColorRef(
+ stroke ? pSrcStates->color_state().GetStrokeColorRef()
+ : pSrcStates->color_state().GetFillColorRef());
+ pStates->mutable_color_state().SetStrokeColorRef(
+ pStates->color_state().GetFillColorRef());
}
return pStates;
}
@@ -771,11 +774,12 @@
if (textobj->GetCharCodes().empty())
return true;
- const TextRenderingMode text_render_mode = textobj->m_TextState.GetTextMode();
+ const TextRenderingMode text_render_mode =
+ textobj->text_state().GetTextMode();
if (text_render_mode == TextRenderingMode::MODE_INVISIBLE)
return true;
- RetainPtr<CPDF_Font> pFont = textobj->m_TextState.GetFont();
+ RetainPtr<CPDF_Font> pFont = textobj->text_state().GetFont();
if (pFont->IsType3Font())
return ProcessType3Text(textobj, mtObj2Device);
@@ -817,14 +821,14 @@
FX_ARGB fill_argb = 0;
bool bPattern = false;
if (is_stroke) {
- if (textobj->m_ColorState.GetStrokeColor()->IsPattern()) {
+ if (textobj->color_state().GetStrokeColor()->IsPattern()) {
bPattern = true;
} else {
stroke_argb = GetStrokeArgb(textobj);
}
}
if (is_fill) {
- if (textobj->m_ColorState.GetFillColor()->IsPattern()) {
+ if (textobj->color_state().GetFillColor()->IsPattern()) {
bPattern = true;
} else {
fill_argb = GetFillArgb(textobj);
@@ -834,7 +838,7 @@
if (!IsAvailableMatrix(text_matrix))
return true;
- float font_size = textobj->m_TextState.GetFontSize();
+ float font_size = textobj->text_state().GetFontSize();
if (bPattern) {
DrawTextPathWithPattern(textobj, mtObj2Device, pFont.Get(), font_size,
text_matrix, is_fill, is_stroke);
@@ -844,7 +848,7 @@
const CFX_Matrix* pDeviceMatrix = &mtObj2Device;
CFX_Matrix device_matrix;
if (is_stroke) {
- pdfium::span<const float> pCTM = textobj->m_TextState.GetCTM();
+ pdfium::span<const float> pCTM = textobj->text_state().GetCTM();
if (pCTM[0] != 1.0f || pCTM[3] != 1.0f) {
CFX_Matrix ctm(pCTM[0], pCTM[1], pCTM[2], pCTM[3], 0, 0);
text_matrix *= ctm.GetInverse();
@@ -855,7 +859,7 @@
return CPDF_TextRenderer::DrawTextPath(
m_pDevice, textobj->GetCharCodes(), textobj->GetCharPositions(),
pFont.Get(), font_size, text_matrix, pDeviceMatrix,
- textobj->m_GraphState.GetObject(), fill_argb, stroke_argb,
+ textobj->graph_state().GetObject(), fill_argb, stroke_argb,
clipping_path,
GetFillOptionsForDrawTextPath(m_Options.GetOptions(), textobj,
is_stroke, is_fill));
@@ -869,7 +873,7 @@
// TODO(npm): Font fallback for type 3 fonts? (Completely separate code!!)
bool CPDF_RenderStatus::ProcessType3Text(CPDF_TextObject* textobj,
const CFX_Matrix& mtObj2Device) {
- CPDF_Type3Font* pType3Font = textobj->m_TextState.GetFont()->AsType3Font();
+ CPDF_Type3Font* pType3Font = textobj->text_state().GetFont()->AsType3Font();
if (pdfium::Contains(m_Type3FontCache, pType3Font))
return true;
@@ -880,7 +884,7 @@
CFX_Matrix text_matrix = textobj->GetTextMatrix();
CFX_Matrix char_matrix = pType3Font->GetFontMatrix();
- float font_size = textobj->m_TextState.GetFontSize();
+ float font_size = textobj->text_state().GetFontSize();
char_matrix.Scale(font_size, font_size);
// Must come before |glyphs|, because |glyphs| points into |refTypeCache|.
@@ -1049,10 +1053,10 @@
CPDF_PathObject path;
path.set_filltype(CFX_FillRenderOptions::FillType::kWinding);
- path.m_ClipPath.CopyClipPath(m_LastClipPath);
- path.m_ClipPath.AppendTexts(&pCopy);
- path.m_ColorState = textobj->m_ColorState;
- path.m_GeneralState = textobj->m_GeneralState;
+ path.mutable_clip_path().CopyClipPath(m_LastClipPath);
+ path.mutable_clip_path().AppendTexts(&pCopy);
+ path.mutable_color_state() = textobj->color_state();
+ path.mutable_general_state() = textobj->general_state();
path.path().AppendFloatRect(textobj->GetRect());
path.SetRect(textobj->GetRect());
@@ -1073,8 +1077,8 @@
continue;
CPDF_PathObject path;
- path.m_GraphState = textobj->m_GraphState;
- path.m_ColorState = textobj->m_ColorState;
+ path.mutable_graph_state() = textobj->graph_state();
+ path.mutable_color_state() = textobj->color_state();
CFX_Matrix matrix = charpos.GetEffectiveMatrix(CFX_Matrix(
font_size, 0, 0, font_size, charpos.m_Origin.x, charpos.m_Origin.y));
@@ -1105,8 +1109,8 @@
CFX_Matrix matrix = pattern->pattern_to_form() * mtObj2Device;
int alpha =
- FXSYS_roundf(255 * (stroke ? pPageObj->m_GeneralState.GetStrokeAlpha()
- : pPageObj->m_GeneralState.GetFillAlpha()));
+ FXSYS_roundf(255 * (stroke ? pPageObj->general_state().GetStrokeAlpha()
+ : pPageObj->general_state().GetFillAlpha()));
CPDF_RenderShading::Draw(m_pDevice, m_pContext, m_pCurObj, pattern, matrix,
rect, alpha, m_Options);
}
@@ -1120,7 +1124,7 @@
CFX_Matrix matrix = pShadingObj->matrix() * mtObj2Device;
CPDF_RenderShading::Draw(
m_pDevice, m_pContext, m_pCurObj, pShadingObj->pattern(), matrix, rect,
- FXSYS_roundf(255 * pShadingObj->m_GeneralState.GetFillAlpha()),
+ FXSYS_roundf(255 * pShadingObj->general_state().GetFillAlpha()),
m_Options);
}
@@ -1173,14 +1177,14 @@
DCHECK(stroke);
if (*fill_type != CFX_FillRenderOptions::FillType::kNoFill) {
- const CPDF_Color& FillColor = *path_obj->m_ColorState.GetFillColor();
+ const CPDF_Color& FillColor = *path_obj->color_state().GetFillColor();
if (FillColor.IsPattern()) {
DrawPathWithPattern(path_obj, mtObj2Device, &FillColor, false);
*fill_type = CFX_FillRenderOptions::FillType::kNoFill;
}
}
if (*stroke) {
- const CPDF_Color& StrokeColor = *path_obj->m_ColorState.GetStrokeColor();
+ const CPDF_Color& StrokeColor = *path_obj->color_state().GetStrokeColor();
if (StrokeColor.IsPattern()) {
DrawPathWithPattern(path_obj, mtObj2Device, &StrokeColor, true);
*stroke = false;
diff --git a/core/fpdftext/cpdf_textpage.cpp b/core/fpdftext/cpdf_textpage.cpp
index 4966a7e..86bae9c 100644
--- a/core/fpdftext/cpdf_textpage.cpp
+++ b/core/fpdftext/cpdf_textpage.cpp
@@ -55,17 +55,18 @@
float CalculateBaseSpace(const CPDF_TextObject* pTextObj,
const CFX_Matrix& matrix) {
const size_t nItems = pTextObj->CountItems();
- if (!pTextObj->m_TextState.GetCharSpace() || nItems < 3)
+ if (!pTextObj->text_state().GetCharSpace() || nItems < 3) {
return 0.0f;
+ }
bool bAllChar = true;
float spacing =
- matrix.TransformDistance(pTextObj->m_TextState.GetCharSpace());
+ matrix.TransformDistance(pTextObj->text_state().GetCharSpace());
float baseSpace = spacing;
for (size_t i = 0; i < nItems; ++i) {
CPDF_TextObject::Item item = pTextObj->GetItemInfo(i);
if (item.m_CharCode == 0xffffffff) {
- float fontsize_h = pTextObj->m_TextState.GetFontSizeH();
+ float fontsize_h = pTextObj->text_state().GetFontSizeH();
float kerning = -fontsize_h * item.m_Origin.x / 1000;
baseSpace = std::min(baseSpace, kerning + spacing);
bAllChar = false;
@@ -1046,18 +1047,18 @@
if (str.IsEmpty() || str.Back() == L' ')
continue;
- float fontsize_h = pTextObj->m_TextState.GetFontSizeH();
+ float fontsize_h = pTextObj->text_state().GetFontSizeH();
spacing = -fontsize_h * item.m_Origin.x / 1000;
continue;
}
- float charSpace = pTextObj->m_TextState.GetCharSpace();
+ float charSpace = pTextObj->text_state().GetCharSpace();
if (charSpace > 0.001)
spacing += matrix.TransformDistance(charSpace);
else if (charSpace < -0.001)
spacing -= matrix.TransformDistance(fabs(charSpace));
spacing -= baseSpace;
if (spacing && i > 0) {
- float fontsize_h = pTextObj->m_TextState.GetFontSizeH();
+ float fontsize_h = pTextObj->text_state().GetFontSizeH();
uint32_t space_charcode = pFont->CharCodeFromUnicode(' ');
float threshold = 0;
if (space_charcode != CPDF_Font::kInvalidCharCode)
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index ee4b678..ea678b3 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -490,27 +490,30 @@
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT page_object) {
CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
- if (!pPageObj)
+ if (!pPageObj) {
return false;
-
- if (pPageObj->m_GeneralState.GetBlendType() != BlendMode::kNormal)
+ }
+ if (pPageObj->general_state().GetBlendType() != BlendMode::kNormal) {
return true;
-
- if (pPageObj->m_GeneralState.GetSoftMask())
+ }
+ if (pPageObj->general_state().GetSoftMask()) {
return true;
-
- if (pPageObj->m_GeneralState.GetFillAlpha() != 1.0f)
+ }
+ if (pPageObj->general_state().GetFillAlpha() != 1.0f) {
return true;
-
- if (pPageObj->IsPath() && pPageObj->m_GeneralState.GetStrokeAlpha() != 1.0f)
+ }
+ if (pPageObj->IsPath() &&
+ pPageObj->general_state().GetStrokeAlpha() != 1.0f) {
return true;
-
- if (!pPageObj->IsForm())
+ }
+ if (!pPageObj->IsForm()) {
return false;
+ }
const CPDF_Form* pForm = pPageObj->AsForm()->form();
- if (!pForm)
+ if (!pForm) {
return false;
+ }
const CPDF_Transparency& trans = pForm->GetTransparency();
return trans.IsGroup() || trans.IsIsolated();
@@ -691,7 +694,7 @@
if (!pPageObj)
return;
- pPageObj->m_GeneralState.SetBlendMode(blend_mode);
+ pPageObj->mutable_general_state().SetBlendMode(blend_mode);
pPageObj->SetDirty(true);
}
@@ -751,8 +754,8 @@
return false;
std::vector<float> rgb = {R / 255.f, G / 255.f, B / 255.f};
- pPageObj->m_GeneralState.SetFillAlpha(A / 255.f);
- pPageObj->m_ColorState.SetFillColor(
+ pPageObj->mutable_general_state().SetFillAlpha(A / 255.f);
+ pPageObj->mutable_color_state().SetFillColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceRGB),
std::move(rgb));
pPageObj->SetDirty(true);
@@ -769,14 +772,15 @@
if (!pPageObj || !R || !G || !B || !A)
return false;
- if (!pPageObj->m_ColorState.HasRef())
+ if (!pPageObj->color_state().HasRef()) {
return false;
+ }
- FX_COLORREF fill_color = pPageObj->m_ColorState.GetFillColorRef();
+ FX_COLORREF fill_color = pPageObj->color_state().GetFillColorRef();
*R = FXSYS_GetRValue(fill_color);
*G = FXSYS_GetGValue(fill_color);
*B = FXSYS_GetBValue(fill_color);
- *A = FXSYS_GetUnsignedAlpha(pPageObj->m_GeneralState.GetFillAlpha());
+ *A = FXSYS_GetUnsignedAlpha(pPageObj->general_state().GetFillAlpha());
return true;
}
@@ -847,8 +851,8 @@
return false;
std::vector<float> rgb = {R / 255.f, G / 255.f, B / 255.f};
- pPageObj->m_GeneralState.SetStrokeAlpha(A / 255.f);
- pPageObj->m_ColorState.SetStrokeColor(
+ pPageObj->mutable_general_state().SetStrokeAlpha(A / 255.f);
+ pPageObj->mutable_color_state().SetStrokeColor(
CPDF_ColorSpace::GetStockCS(CPDF_ColorSpace::Family::kDeviceRGB),
std::move(rgb));
pPageObj->SetDirty(true);
@@ -862,17 +866,18 @@
unsigned int* B,
unsigned int* A) {
auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
- if (!pPageObj || !R || !G || !B || !A)
+ if (!pPageObj || !R || !G || !B || !A) {
return false;
-
- if (!pPageObj->m_ColorState.HasRef())
+ }
+ if (!pPageObj->color_state().HasRef()) {
return false;
+ }
- FX_COLORREF stroke_color = pPageObj->m_ColorState.GetStrokeColorRef();
+ FX_COLORREF stroke_color = pPageObj->color_state().GetStrokeColorRef();
*R = FXSYS_GetRValue(stroke_color);
*G = FXSYS_GetGValue(stroke_color);
*B = FXSYS_GetBValue(stroke_color);
- *A = FXSYS_GetUnsignedAlpha(pPageObj->m_GeneralState.GetStrokeAlpha());
+ *A = FXSYS_GetUnsignedAlpha(pPageObj->general_state().GetStrokeAlpha());
return true;
}
@@ -882,7 +887,7 @@
if (!pPageObj || width < 0.0f)
return false;
- pPageObj->m_GraphState.SetLineWidth(width);
+ pPageObj->mutable_graph_state().SetLineWidth(width);
pPageObj->SetDirty(true);
return true;
}
@@ -893,14 +898,15 @@
if (!pPageObj || !width)
return false;
- *width = pPageObj->m_GraphState.GetLineWidth();
+ *width = pPageObj->graph_state().GetLineWidth();
return true;
}
FPDF_EXPORT int FPDF_CALLCONV
FPDFPageObj_GetLineJoin(FPDF_PAGEOBJECT page_object) {
auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
- return pPageObj ? static_cast<int>(pPageObj->m_GraphState.GetLineJoin()) : -1;
+ return pPageObj ? static_cast<int>(pPageObj->graph_state().GetLineJoin())
+ : -1;
}
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
@@ -912,7 +918,7 @@
if (line_join < FPDF_LINEJOIN_MITER || line_join > FPDF_LINEJOIN_BEVEL)
return false;
- pPageObj->m_GraphState.SetLineJoin(
+ pPageObj->mutable_graph_state().SetLineJoin(
static_cast<CFX_GraphStateData::LineJoin>(line_join));
pPageObj->SetDirty(true);
return true;
@@ -921,7 +927,7 @@
FPDF_EXPORT int FPDF_CALLCONV
FPDFPageObj_GetLineCap(FPDF_PAGEOBJECT page_object) {
auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
- return pPageObj ? static_cast<int>(pPageObj->m_GraphState.GetLineCap()) : -1;
+ return pPageObj ? static_cast<int>(pPageObj->graph_state().GetLineCap()) : -1;
}
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
@@ -934,7 +940,7 @@
line_cap > FPDF_LINECAP_PROJECTING_SQUARE) {
return false;
}
- pPageObj->m_GraphState.SetLineCap(
+ pPageObj->mutable_graph_state().SetLineCap(
static_cast<CFX_GraphStateData::LineCap>(line_cap));
pPageObj->SetDirty(true);
return true;
@@ -946,7 +952,7 @@
if (!pPageObj || !phase)
return false;
- *phase = pPageObj->m_GraphState.GetLineDashPhase();
+ *phase = pPageObj->graph_state().GetLineDashPhase();
return true;
}
@@ -956,7 +962,7 @@
if (!pPageObj)
return false;
- pPageObj->m_GraphState.SetLineDashPhase(phase);
+ pPageObj->mutable_graph_state().SetLineDashPhase(phase);
pPageObj->SetDirty(true);
return true;
}
@@ -965,7 +971,7 @@
FPDFPageObj_GetDashCount(FPDF_PAGEOBJECT page_object) {
auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
return pPageObj ? pdfium::base::checked_cast<int>(
- pPageObj->m_GraphState.GetLineDashSize())
+ pPageObj->graph_state().GetLineDashSize())
: -1;
}
@@ -977,7 +983,7 @@
if (!pPageObj || !dash_array)
return false;
- auto dash_vector = pPageObj->m_GraphState.GetLineDashArray();
+ auto dash_vector = pPageObj->graph_state().GetLineDashArray();
if (dash_vector.size() > dash_count)
return false;
@@ -1004,7 +1010,7 @@
dashes.assign(dash_array, dash_array + dash_count);
}
- pPageObj->m_GraphState.SetLineDash(dashes, phase, 1.0f);
+ pPageObj->mutable_graph_state().SetLineDash(dashes, phase, 1.0f);
pPageObj->SetDirty(true);
return true;
diff --git a/fpdfsdk/fpdf_edittext.cpp b/fpdfsdk/fpdf_edittext.cpp
index 9a97fb4..c09880b 100644
--- a/fpdfsdk/fpdf_edittext.cpp
+++ b/fpdfsdk/fpdf_edittext.cpp
@@ -491,8 +491,8 @@
return nullptr;
auto pTextObj = std::make_unique<CPDF_TextObject>();
- pTextObj->m_TextState.SetFont(std::move(pFont));
- pTextObj->m_TextState.SetFontSize(font_size);
+ pTextObj->mutable_text_state().SetFont(std::move(pFont));
+ pTextObj->mutable_text_state().SetFontSize(font_size);
pTextObj->DefaultStates();
// Caller takes ownership.
@@ -682,9 +682,10 @@
return nullptr;
auto pTextObj = std::make_unique<CPDF_TextObject>();
- pTextObj->m_TextState.SetFont(CPDF_DocPageData::FromDocument(pDoc)->GetFont(
- pFont->GetMutableFontDict()));
- pTextObj->m_TextState.SetFontSize(font_size);
+ pTextObj->mutable_text_state().SetFont(
+ CPDF_DocPageData::FromDocument(pDoc)->GetFont(
+ pFont->GetMutableFontDict()));
+ pTextObj->mutable_text_state().SetFontSize(font_size);
pTextObj->DefaultStates();
return FPDFPageObjectFromCPDFPageObject(pTextObj.release());
}
diff --git a/fpdfsdk/fpdf_text.cpp b/fpdfsdk/fpdf_text.cpp
index a96b94b..f1b193d 100644
--- a/fpdfsdk/fpdf_text.cpp
+++ b/fpdfsdk/fpdf_text.cpp
@@ -180,12 +180,12 @@
if (!charinfo.m_pTextObj)
return false;
- FX_COLORREF fill_color = charinfo.m_pTextObj->m_ColorState.GetFillColorRef();
+ FX_COLORREF fill_color = charinfo.m_pTextObj->color_state().GetFillColorRef();
*R = FXSYS_GetRValue(fill_color);
*G = FXSYS_GetGValue(fill_color);
*B = FXSYS_GetBValue(fill_color);
*A = FXSYS_GetUnsignedAlpha(
- charinfo.m_pTextObj->m_GeneralState.GetFillAlpha());
+ charinfo.m_pTextObj->general_state().GetFillAlpha());
return true;
}
@@ -205,12 +205,12 @@
return false;
FX_COLORREF stroke_color =
- charinfo.m_pTextObj->m_ColorState.GetStrokeColorRef();
+ charinfo.m_pTextObj->color_state().GetStrokeColorRef();
*R = FXSYS_GetRValue(stroke_color);
*G = FXSYS_GetGValue(stroke_color);
*B = FXSYS_GetBValue(stroke_color);
*A = FXSYS_GetUnsignedAlpha(
- charinfo.m_pTextObj->m_GeneralState.GetStrokeAlpha());
+ charinfo.m_pTextObj->general_state().GetStrokeAlpha());
return true;
}
diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp
index c9ea333..8eb1d69 100644
--- a/fpdfsdk/fpdf_transformpage.cpp
+++ b/fpdfsdk/fpdf_transformpage.cpp
@@ -308,7 +308,7 @@
if (!pPageObj)
return nullptr;
- return FPDFClipPathFromCPDFClipPath(&pPageObj->m_ClipPath);
+ return FPDFClipPathFromCPDFClipPath(&pPageObj->mutable_clip_path());
}
FPDF_EXPORT int FPDF_CALLCONV FPDFClipPath_CountPaths(FPDF_CLIPPATH clip_path) {