diff options
Diffstat (limited to 'core/fpdfapi')
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp | 6 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_allstates.cpp | 2 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_contentparser.cpp | 2 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_generalstate.cpp | 74 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_generalstate.h | 6 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_pageobjectholder.h | 5 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_pageobjectholder_unittest.cpp | 6 | ||||
-rw-r--r-- | core/fpdfapi/render/cpdf_devicebuffer.cpp | 2 | ||||
-rw-r--r-- | core/fpdfapi/render/cpdf_imagerenderer.cpp | 12 | ||||
-rw-r--r-- | core/fpdfapi/render/cpdf_imagerenderer.h | 7 | ||||
-rw-r--r-- | core/fpdfapi/render/cpdf_renderstatus.cpp | 33 | ||||
-rw-r--r-- | core/fpdfapi/render/cpdf_renderstatus.h | 5 |
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_ |