summaryrefslogtreecommitdiff
path: root/core/fpdfapi
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi')
-rw-r--r--core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp6
-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
-rw-r--r--core/fpdfapi/render/cpdf_devicebuffer.cpp2
-rw-r--r--core/fpdfapi/render/cpdf_imagerenderer.cpp12
-rw-r--r--core/fpdfapi/render/cpdf_imagerenderer.h7
-rw-r--r--core/fpdfapi/render/cpdf_renderstatus.cpp33
-rw-r--r--core/fpdfapi/render/cpdf_renderstatus.h5
12 files changed, 83 insertions, 77 deletions
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index b29d5b30b6..717a83ca1f 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -439,7 +439,7 @@ void CPDF_PageContentGenerator::ProcessGraphics(std::ostringstream* buf,
graphD.strokeAlpha = pPageObj->m_GeneralState.GetStrokeAlpha();
graphD.blendType = pPageObj->m_GeneralState.GetBlendType();
if (graphD.fillAlpha == 1.0f && graphD.strokeAlpha == 1.0f &&
- graphD.blendType == FXDIB_BLEND_NORMAL) {
+ graphD.blendType == BlendMode::kNormal) {
return;
}
@@ -455,7 +455,7 @@ void CPDF_PageContentGenerator::ProcessGraphics(std::ostringstream* buf,
if (graphD.strokeAlpha != 1.0f)
gsDict->SetNewFor<CPDF_Number>("CA", graphD.strokeAlpha);
- if (graphD.blendType != FXDIB_BLEND_NORMAL) {
+ if (graphD.blendType != BlendMode::kNormal) {
gsDict->SetNewFor<CPDF_Name>("BM",
pPageObj->m_GeneralState.GetBlendMode());
}
@@ -479,7 +479,7 @@ ByteString CPDF_PageContentGenerator::GetOrCreateDefaultGraphics() const {
GraphicsData defaultGraphics;
defaultGraphics.fillAlpha = 1.0f;
defaultGraphics.strokeAlpha = 1.0f;
- defaultGraphics.blendType = FXDIB_BLEND_NORMAL;
+ defaultGraphics.blendType = BlendMode::kNormal;
auto it = m_pObjHolder->m_GraphicsMap.find(defaultGraphics);
// If default graphics already exists, return it.
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});
diff --git a/core/fpdfapi/render/cpdf_devicebuffer.cpp b/core/fpdfapi/render/cpdf_devicebuffer.cpp
index b29db0054b..4029f2efc2 100644
--- a/core/fpdfapi/render/cpdf_devicebuffer.cpp
+++ b/core/fpdfapi/render/cpdf_devicebuffer.cpp
@@ -64,7 +64,7 @@ void CPDF_DeviceBuffer::OutputToDevice() {
m_pBitmap->GetHeight());
m_pContext->GetBackground(pBuffer, m_pObject.Get(), nullptr, &m_Matrix);
pBuffer->CompositeBitmap(0, 0, pBuffer->GetWidth(), pBuffer->GetHeight(),
- m_pBitmap, 0, 0, FXDIB_BLEND_NORMAL, nullptr, false);
+ m_pBitmap, 0, 0, BlendMode::kNormal, nullptr, false);
m_pDevice->StretchDIBits(pBuffer, m_Rect.left, m_Rect.top, m_Rect.Width(),
m_Rect.Height());
}
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index 362cf558f7..03e00a2554 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -118,7 +118,7 @@ bool CPDF_ImageRenderer::StartRenderDIBBase() {
return DrawPatternImage(m_pObj2Device.Get());
if (m_BitmapAlpha != 255 || !state.HasRef() || !state.GetFillOP() ||
- state.GetOPMode() != 0 || state.GetBlendType() != FXDIB_BLEND_NORMAL ||
+ state.GetOPMode() != 0 || state.GetBlendType() != BlendMode::kNormal ||
state.GetStrokeAlpha() != 1.0f || state.GetFillAlpha() != 1.0f) {
return StartDIBBase();
}
@@ -142,7 +142,7 @@ bool CPDF_ImageRenderer::StartRenderDIBBase() {
int format = pColorSpace->GetFamily();
if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION ||
format == PDFCS_DEVICEN) {
- m_BlendType = FXDIB_BLEND_DARKEN;
+ m_BlendType = BlendMode::kDarken;
}
pDocument->GetPageData()->ReleaseColorSpace(pCSObj);
return StartDIBBase();
@@ -152,7 +152,7 @@ bool CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus,
CPDF_ImageObject* pImageObject,
const CFX_Matrix* pObj2Device,
bool bStdCS,
- int blendType) {
+ BlendMode blendType) {
ASSERT(pImageObject);
m_pRenderStatus = pStatus;
m_bStdCS = bStdCS;
@@ -178,7 +178,7 @@ bool CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus,
const CFX_Matrix* pImage2Device,
uint32_t flags,
bool bStdCS,
- int blendType) {
+ BlendMode blendType) {
m_pRenderStatus = pStatus;
m_pDIBBase = pDIBBase;
m_FillArgb = bitmap_argb;
@@ -222,7 +222,7 @@ void CPDF_ImageRenderer::CalculateDrawImage(
CPDF_ImageRenderer image_render;
if (image_render.Start(&bitmap_render, pDIBBase, 0xffffffff, 255, pNewMatrix,
- m_Flags, true, FXDIB_BLEND_NORMAL)) {
+ m_Flags, true, BlendMode::kNormal)) {
image_render.Continue(nullptr);
}
if (m_Loader.MatteColor() == 0xffffffff)
@@ -333,7 +333,7 @@ bool CPDF_ImageRenderer::DrawMaskedImage() {
bitmap_render.Initialize(nullptr, nullptr);
CPDF_ImageRenderer image_render;
if (image_render.Start(&bitmap_render, m_pDIBBase, 0, 255, &new_matrix,
- m_Flags, true, FXDIB_BLEND_NORMAL)) {
+ m_Flags, true, BlendMode::kNormal)) {
image_render.Continue(nullptr);
}
CFX_DefaultRenderDevice bitmap_device2;
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.h b/core/fpdfapi/render/cpdf_imagerenderer.h
index c538d9f5f2..6df412f2c0 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.h
+++ b/core/fpdfapi/render/cpdf_imagerenderer.h
@@ -13,6 +13,7 @@
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/unowned_ptr.h"
#include "core/fxge/dib/cfx_imagerenderer.h"
+#include "core/fxge/fx_dib.h"
class CFX_DIBitmap;
class CFX_DIBBase;
@@ -33,7 +34,7 @@ class CPDF_ImageRenderer {
CPDF_ImageObject* pImageObject,
const CFX_Matrix* pObj2Device,
bool bStdCS,
- int blendType);
+ BlendMode blendType);
bool Start(CPDF_RenderStatus* pStatus,
const RetainPtr<CFX_DIBBase>& pDIBBase,
@@ -42,7 +43,7 @@ class CPDF_ImageRenderer {
const CFX_Matrix* pImage2Device,
uint32_t flags,
bool bStdCS,
- int blendType);
+ BlendMode blendType);
bool Continue(PauseIndicatorIface* pPause);
bool GetResult() const { return m_Result; }
@@ -76,7 +77,7 @@ class CPDF_ImageRenderer {
std::unique_ptr<CFX_ImageRenderer> m_DeviceHandle;
int m_Status = 0;
int m_BitmapAlpha = 0;
- int m_BlendType = FXDIB_BLEND_NORMAL;
+ BlendMode m_BlendType = BlendMode::kNormal;
FX_ARGB m_FillArgb = 0;
uint32_t m_Flags = 0;
bool m_bPatternColor = false;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 4e9c69b870..b409203a54 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1110,7 +1110,7 @@ bool CPDF_RenderStatus::ContinueSingleObject(CPDF_PageObject* pObj,
m_pImageRenderer = pdfium::MakeUnique<CPDF_ImageRenderer>();
if (!m_pImageRenderer->Start(this, pObj->AsImage(), &mtObj2Device, false,
- FXDIB_BLEND_NORMAL)) {
+ BlendMode::kNormal)) {
if (!m_pImageRenderer->GetResult())
DrawObjWithBackground(pObj, mtObj2Device);
m_pImageRenderer.reset();
@@ -1437,7 +1437,7 @@ bool CPDF_RenderStatus::ProcessTransparency(CPDF_PageObject* pPageObj,
#if defined _SKIA_SUPPORT_
DebugVerifyDeviceIsPreMultiplied();
#endif
- int blend_type = pPageObj->m_GeneralState.GetBlendType();
+ BlendMode blend_type = pPageObj->m_GeneralState.GetBlendType();
CPDF_Dictionary* pSMaskDict =
ToDictionary(pPageObj->m_GeneralState.GetSoftMask());
if (pSMaskDict) {
@@ -1488,12 +1488,12 @@ bool CPDF_RenderStatus::ProcessTransparency(CPDF_PageObject* pPageObj,
int format = pColorSpace->GetFamily();
if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION ||
format == PDFCS_DEVICEN) {
- blend_type = FXDIB_BLEND_DARKEN;
+ blend_type = BlendMode::kDarken;
}
pDocument->GetPageData()->ReleaseColorSpace(pCSObj);
}
}
- if (!pSMaskDict && group_alpha == 1.0f && blend_type == FXDIB_BLEND_NORMAL &&
+ if (!pSMaskDict && group_alpha == 1.0f && blend_type == BlendMode::kNormal &&
!bTextClip && !bGroupTransparent) {
return false;
}
@@ -1502,7 +1502,7 @@ bool CPDF_RenderStatus::ProcessTransparency(CPDF_PageObject* pPageObj,
int rendCaps = m_pDevice->GetRenderCaps();
if (!(transparency.IsIsolated() || pSMaskDict || bTextClip) &&
(rendCaps & FXRC_BLEND_MODE)) {
- int oldBlend = m_curBlend;
+ BlendMode oldBlend = m_curBlend;
m_curBlend = blend_type;
bRet = DrawObjWithBlend(pPageObj, mtObj2Device);
m_curBlend = oldBlend;
@@ -1910,7 +1910,7 @@ bool CPDF_RenderStatus::ProcessType3Text(CPDF_TextObject* textobj,
image_matrix.Concat(matrix);
CPDF_ImageRenderer renderer;
if (renderer.Start(this, pType3Char->GetBitmap(), fill_argb, 255,
- &image_matrix, 0, false, FXDIB_BLEND_NORMAL)) {
+ &image_matrix, 0, false, BlendMode::kNormal)) {
renderer.Continue(nullptr);
}
if (!renderer.GetResult())
@@ -1948,7 +1948,7 @@ bool CPDF_RenderStatus::ProcessType3Text(CPDF_TextObject* textobj,
glyph.m_pGlyph->m_pBitmap->GetWidth(),
glyph.m_pGlyph->m_pBitmap->GetHeight(),
glyph.m_pGlyph->m_pBitmap, fill_argb, 0, 0,
- FXDIB_BLEND_NORMAL, nullptr, false, 0);
+ BlendMode::kNormal, nullptr, false, 0);
}
m_pDevice->SetBitMask(pBitmap, rect.left, rect.top, fill_argb);
return true;
@@ -2315,18 +2315,18 @@ void CPDF_RenderStatus::DrawTilingPattern(CPDF_TilingPattern* pPattern,
} else {
if (pPattern->colored()) {
pScreen->CompositeBitmap(start_x, start_y, width, height,
- pPatternBitmap, 0, 0, FXDIB_BLEND_NORMAL,
+ pPatternBitmap, 0, 0, BlendMode::kNormal,
nullptr, false);
} else {
pScreen->CompositeMask(start_x, start_y, width, height,
pPatternBitmap, fill_argb, 0, 0,
- FXDIB_BLEND_NORMAL, nullptr, false, 0);
+ BlendMode::kNormal, nullptr, false, 0);
}
}
}
}
CompositeDIBitmap(pScreen, clip_box.left, clip_box.top, 0, 255,
- FXDIB_BLEND_NORMAL, CPDF_Transparency());
+ BlendMode::kNormal, CPDF_Transparency());
}
void CPDF_RenderStatus::DrawPathWithPattern(CPDF_PathObject* pPathObj,
@@ -2380,12 +2380,12 @@ void CPDF_RenderStatus::CompositeDIBitmap(
int top,
FX_ARGB mask_argb,
int bitmap_alpha,
- int blend_mode,
+ BlendMode blend_mode,
const CPDF_Transparency& transparency) {
if (!pDIBitmap)
return;
- if (blend_mode == FXDIB_BLEND_NORMAL) {
+ if (blend_mode == BlendMode::kNormal) {
if (!pDIBitmap->IsAlphaMask()) {
if (bitmap_alpha < 255) {
#ifdef _SKIA_SUPPORT_
@@ -2416,7 +2416,8 @@ void CPDF_RenderStatus::CompositeDIBitmap(
}
}
bool bIsolated = transparency.IsIsolated();
- bool bBackAlphaRequired = blend_mode && bIsolated && !m_bDropObjects;
+ bool bBackAlphaRequired =
+ blend_mode != BlendMode::kNormal && bIsolated && !m_bDropObjects;
bool bGetBackGround =
((m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT)) ||
(!(m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT) &&
@@ -2440,7 +2441,7 @@ void CPDF_RenderStatus::CompositeDIBitmap(
RetainPtr<CFX_DIBitmap> pForeBitmap = m_pDevice->GetBitmap();
pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(),
pForeBitmap, rect.left, rect.top,
- FXDIB_BLEND_NORMAL, nullptr, false);
+ BlendMode::kNormal, nullptr, false);
left = std::min(left, 0);
top = std::min(top, 0);
if (pDIBitmap->IsAlphaMask()) {
@@ -2470,7 +2471,7 @@ void CPDF_RenderStatus::CompositeDIBitmap(
FX_RECT rect(left, top, left + pDIBitmap->GetWidth(),
top + pDIBitmap->GetHeight());
RetainPtr<CFX_DIBitmap> pBackdrop = GetBackdrop(
- m_pCurObj.Get(), rect, blend_mode > FXDIB_BLEND_NORMAL && bIsolated,
+ m_pCurObj.Get(), rect, blend_mode != BlendMode::kNormal && bIsolated,
&back_left, &back_top);
if (!pBackdrop)
return;
@@ -2492,7 +2493,7 @@ void CPDF_RenderStatus::CompositeDIBitmap(
pBackdrop1->Clear((uint32_t)-1);
pBackdrop1->CompositeBitmap(0, 0, pBackdrop->GetWidth(),
pBackdrop->GetHeight(), pBackdrop, 0, 0,
- FXDIB_BLEND_NORMAL, nullptr, false);
+ BlendMode::kNormal, nullptr, false);
pBackdrop = std::move(pBackdrop1);
m_pDevice->SetDIBits(pBackdrop, back_left, back_top);
}
diff --git a/core/fpdfapi/render/cpdf_renderstatus.h b/core/fpdfapi/render/cpdf_renderstatus.h
index a4f3fd4d75..1911758a2e 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.h
+++ b/core/fpdfapi/render/cpdf_renderstatus.h
@@ -16,6 +16,7 @@
#include "core/fpdfapi/render/cpdf_renderoptions.h"
#include "core/fxcrt/unowned_ptr.h"
#include "core/fxge/cfx_renderdevice.h"
+#include "core/fxge/fx_dib.h"
class CFX_PathData;
class CPDF_Color;
@@ -111,7 +112,7 @@ class CPDF_RenderStatus {
int top,
FX_ARGB mask_argb,
int bitmap_alpha,
- int blend_mode,
+ BlendMode blend_mode,
const CPDF_Transparency& transparency);
private:
@@ -202,7 +203,7 @@ class CPDF_RenderStatus {
uint32_t m_GroupFamily = 0;
UnownedPtr<CPDF_Type3Char> m_pType3Char;
FX_ARGB m_T3FillColor = 0;
- int m_curBlend = FXDIB_BLEND_NORMAL;
+ BlendMode m_curBlend = BlendMode::kNormal;
};
#endif // CORE_FPDFAPI_RENDER_CPDF_RENDERSTATUS_H_