summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/page')
-rw-r--r--core/fpdfapi/page/cpdf_allstates.cpp2
-rw-r--r--core/fpdfapi/page/cpdf_contentparser.cpp2
-rw-r--r--core/fpdfapi/page/cpdf_generalstate.cpp74
-rw-r--r--core/fpdfapi/page/cpdf_generalstate.h6
-rw-r--r--core/fpdfapi/page/cpdf_pageobjectholder.h5
-rw-r--r--core/fpdfapi/page/cpdf_pageobjectholder_unittest.cpp6
6 files changed, 49 insertions, 46 deletions
diff --git a/core/fpdfapi/page/cpdf_allstates.cpp b/core/fpdfapi/page/cpdf_allstates.cpp
index 3e6692b223..81df19210a 100644
--- a/core/fpdfapi/page/cpdf_allstates.cpp
+++ b/core/fpdfapi/page/cpdf_allstates.cpp
@@ -99,7 +99,7 @@ void CPDF_AllStates::ProcessExtGS(CPDF_Dictionary* pGS,
CPDF_Array* pArray = pObject->AsArray();
m_GeneralState.SetBlendMode(pArray ? pArray->GetStringAt(0)
: pObject->GetString());
- if (m_GeneralState.GetBlendType() > FXDIB_BLEND_MULTIPLY)
+ if (m_GeneralState.GetBlendType() > BlendMode::kMultiply)
pParser->GetPageObjectHolder()->SetBackgroundAlphaNeeded(true);
break;
}
diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp
index cf31447697..90d6925045 100644
--- a/core/fpdfapi/page/cpdf_contentparser.cpp
+++ b/core/fpdfapi/page/cpdf_contentparser.cpp
@@ -103,7 +103,7 @@ CPDF_ContentParser::CPDF_ContentParser(CPDF_Form* pForm,
}
if (pForm->GetTransparency().IsGroup()) {
CPDF_GeneralState* pState = &m_pParser->GetCurStates()->m_GeneralState;
- pState->SetBlendType(FXDIB_BLEND_NORMAL);
+ pState->SetBlendType(BlendMode::kNormal);
pState->SetStrokeAlpha(1.0f);
pState->SetFillAlpha(1.0f);
pState->SetSoftMask(nullptr);
diff --git a/core/fpdfapi/page/cpdf_generalstate.cpp b/core/fpdfapi/page/cpdf_generalstate.cpp
index 7687626e54..cf942ab560 100644
--- a/core/fpdfapi/page/cpdf_generalstate.cpp
+++ b/core/fpdfapi/page/cpdf_generalstate.cpp
@@ -27,43 +27,43 @@ int RI_StringToId(const ByteString& ri) {
return 0;
}
-int GetBlendTypeInternal(const ByteString& mode) {
+BlendMode GetBlendTypeInternal(const ByteString& mode) {
switch (mode.GetID()) {
case FXBSTR_ID('N', 'o', 'r', 'm'):
case FXBSTR_ID('C', 'o', 'm', 'p'):
- return FXDIB_BLEND_NORMAL;
+ return BlendMode::kNormal;
case FXBSTR_ID('M', 'u', 'l', 't'):
- return FXDIB_BLEND_MULTIPLY;
+ return BlendMode::kMultiply;
case FXBSTR_ID('S', 'c', 'r', 'e'):
- return FXDIB_BLEND_SCREEN;
+ return BlendMode::kScreen;
case FXBSTR_ID('O', 'v', 'e', 'r'):
- return FXDIB_BLEND_OVERLAY;
+ return BlendMode::kOverlay;
case FXBSTR_ID('D', 'a', 'r', 'k'):
- return FXDIB_BLEND_DARKEN;
+ return BlendMode::kDarken;
case FXBSTR_ID('L', 'i', 'g', 'h'):
- return FXDIB_BLEND_LIGHTEN;
+ return BlendMode::kLighten;
case FXBSTR_ID('C', 'o', 'l', 'o'):
if (mode.GetLength() == 10)
- return FXDIB_BLEND_COLORDODGE;
+ return BlendMode::kColorDodge;
if (mode.GetLength() == 9)
- return FXDIB_BLEND_COLORBURN;
- return FXDIB_BLEND_COLOR;
+ return BlendMode::kColorBurn;
+ return BlendMode::kColor;
case FXBSTR_ID('H', 'a', 'r', 'd'):
- return FXDIB_BLEND_HARDLIGHT;
+ return BlendMode::kHardLight;
case FXBSTR_ID('S', 'o', 'f', 't'):
- return FXDIB_BLEND_SOFTLIGHT;
+ return BlendMode::kSoftLight;
case FXBSTR_ID('D', 'i', 'f', 'f'):
- return FXDIB_BLEND_DIFFERENCE;
+ return BlendMode::kDifference;
case FXBSTR_ID('E', 'x', 'c', 'l'):
- return FXDIB_BLEND_EXCLUSION;
+ return BlendMode::kExclusion;
case FXBSTR_ID('H', 'u', 'e', 0):
- return FXDIB_BLEND_HUE;
+ return BlendMode::kHue;
case FXBSTR_ID('S', 'a', 't', 'u'):
- return FXDIB_BLEND_SATURATION;
+ return BlendMode::kSaturation;
case FXBSTR_ID('L', 'u', 'm', 'i'):
- return FXDIB_BLEND_LUMINOSITY;
+ return BlendMode::kLuminosity;
}
- return FXDIB_BLEND_NORMAL;
+ return BlendMode::kNormal;
}
} // namespace
@@ -81,48 +81,48 @@ void CPDF_GeneralState::SetRenderIntent(const ByteString& ri) {
ByteString CPDF_GeneralState::GetBlendMode() const {
switch (GetBlendType()) {
- case FXDIB_BLEND_NORMAL:
+ case BlendMode::kNormal:
return ByteString(pdfium::transparency::kNormal);
- case FXDIB_BLEND_MULTIPLY:
+ case BlendMode::kMultiply:
return ByteString(pdfium::transparency::kMultiply);
- case FXDIB_BLEND_SCREEN:
+ case BlendMode::kScreen:
return ByteString(pdfium::transparency::kScreen);
- case FXDIB_BLEND_OVERLAY:
+ case BlendMode::kOverlay:
return ByteString(pdfium::transparency::kOverlay);
- case FXDIB_BLEND_DARKEN:
+ case BlendMode::kDarken:
return ByteString(pdfium::transparency::kDarken);
- case FXDIB_BLEND_LIGHTEN:
+ case BlendMode::kLighten:
return ByteString(pdfium::transparency::kLighten);
- case FXDIB_BLEND_COLORDODGE:
+ case BlendMode::kColorDodge:
return ByteString(pdfium::transparency::kColorDodge);
- case FXDIB_BLEND_COLORBURN:
+ case BlendMode::kColorBurn:
return ByteString(pdfium::transparency::kColorBurn);
- case FXDIB_BLEND_HARDLIGHT:
+ case BlendMode::kHardLight:
return ByteString(pdfium::transparency::kHardLight);
- case FXDIB_BLEND_SOFTLIGHT:
+ case BlendMode::kSoftLight:
return ByteString(pdfium::transparency::kSoftLight);
- case FXDIB_BLEND_DIFFERENCE:
+ case BlendMode::kDifference:
return ByteString(pdfium::transparency::kDifference);
- case FXDIB_BLEND_EXCLUSION:
+ case BlendMode::kExclusion:
return ByteString(pdfium::transparency::kExclusion);
- case FXDIB_BLEND_HUE:
+ case BlendMode::kHue:
return ByteString(pdfium::transparency::kHue);
- case FXDIB_BLEND_SATURATION:
+ case BlendMode::kSaturation:
return ByteString(pdfium::transparency::kSaturation);
- case FXDIB_BLEND_COLOR:
+ case BlendMode::kColor:
return ByteString(pdfium::transparency::kColor);
- case FXDIB_BLEND_LUMINOSITY:
+ case BlendMode::kLuminosity:
return ByteString(pdfium::transparency::kLuminosity);
}
return ByteString(pdfium::transparency::kNormal);
}
-int CPDF_GeneralState::GetBlendType() const {
+BlendMode CPDF_GeneralState::GetBlendType() const {
const StateData* pData = m_Ref.GetObject();
- return pData ? pData->m_BlendType : FXDIB_BLEND_NORMAL;
+ return pData ? pData->m_BlendType : BlendMode::kNormal;
}
-void CPDF_GeneralState::SetBlendType(int type) {
+void CPDF_GeneralState::SetBlendType(BlendMode type) {
m_Ref.GetPrivateCopy()->m_BlendType = type;
}
diff --git a/core/fpdfapi/page/cpdf_generalstate.h b/core/fpdfapi/page/cpdf_generalstate.h
index 096271fd8b..4df3d0ebe0 100644
--- a/core/fpdfapi/page/cpdf_generalstate.h
+++ b/core/fpdfapi/page/cpdf_generalstate.h
@@ -29,8 +29,8 @@ class CPDF_GeneralState {
void SetRenderIntent(const ByteString& ri);
ByteString GetBlendMode() const;
- int GetBlendType() const;
- void SetBlendType(int type);
+ BlendMode GetBlendType() const;
+ void SetBlendType(BlendMode type);
float GetFillAlpha() const;
void SetFillAlpha(float alpha);
@@ -85,7 +85,7 @@ class CPDF_GeneralState {
~StateData() override;
ByteString m_BlendMode = pdfium::transparency::kNormal;
- int m_BlendType = FXDIB_BLEND_NORMAL;
+ BlendMode m_BlendType = BlendMode::kNormal;
UnownedPtr<CPDF_Object> m_pSoftMask;
CFX_Matrix m_SMaskMatrix;
float m_StrokeAlpha = 1.0f;
diff --git a/core/fpdfapi/page/cpdf_pageobjectholder.h b/core/fpdfapi/page/cpdf_pageobjectholder.h
index 4f5a60f79d..59493293f9 100644
--- a/core/fpdfapi/page/cpdf_pageobjectholder.h
+++ b/core/fpdfapi/page/cpdf_pageobjectholder.h
@@ -18,6 +18,7 @@
#include "core/fxcrt/fx_string.h"
#include "core/fxcrt/fx_system.h"
#include "core/fxcrt/unowned_ptr.h"
+#include "core/fxge/fx_dib.h"
class CPDF_ContentParser;
class CPDF_Dictionary;
@@ -30,13 +31,15 @@ class PauseIndicatorIface;
struct GraphicsData {
float fillAlpha;
float strokeAlpha;
- int blendType;
+ BlendMode blendType;
+
bool operator<(const GraphicsData& other) const;
};
struct FontData {
ByteString baseFont;
ByteString type;
+
bool operator<(const FontData& other) const;
};
diff --git a/core/fpdfapi/page/cpdf_pageobjectholder_unittest.cpp b/core/fpdfapi/page/cpdf_pageobjectholder_unittest.cpp
index ddad795fea..77602562f3 100644
--- a/core/fpdfapi/page/cpdf_pageobjectholder_unittest.cpp
+++ b/core/fpdfapi/page/cpdf_pageobjectholder_unittest.cpp
@@ -18,7 +18,7 @@ TEST(CPDFPageObjectHolder, GraphicsDataAsKey) {
// Verify self-comparisions.
for (float c1 : {fMin, 1.0f, 2.0f, fMax, fInf, fNan}) {
for (float c2 : {fMin, 1.0f, 2.0f, fMax, fInf, fNan}) {
- for (int c3 : {1, 2})
+ for (BlendMode c3 : {BlendMode::kMultiply, BlendMode::kScreen})
EXPECT_FALSE(GraphicsData({c1, c2, c3}) < GraphicsData({c1, c2, c3}));
}
}
@@ -27,7 +27,7 @@ TEST(CPDFPageObjectHolder, GraphicsDataAsKey) {
// Insert in reverse index permuted order.
size_t x = 0;
- for (int c3 : {2, 1}) {
+ for (BlendMode c3 : {BlendMode::kScreen, BlendMode::kMultiply}) {
for (float c2 : {fNan, fInf, fMax, 2.0f, 1.0f, fMin}) {
for (float c1 : {fNan, fInf, fMax, 2.0f, 1.0f, fMin}) {
graphics_map[{c1, c2, c3}] = x++;
@@ -56,7 +56,7 @@ TEST(CPDFPageObjectHolder, GraphicsDataAsKey) {
EXPECT_EQ(72u, x);
// Erase in forward index permuted order.
- for (int c3 : {1, 2}) {
+ for (BlendMode c3 : {BlendMode::kMultiply, BlendMode::kScreen}) {
for (float c2 : {fMin, 1.0f, 2.0f, fMax, fInf, fNan}) {
for (float c1 : {fMin, 1.0f, 2.0f, fMax, fInf, fNan})
graphics_map.erase({c1, c2, c3});