Index: core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
index 295ac4f7d770ac576247985946460491ecc63e00..e7e96823220c88af7ccb740daa04ea62382a7a2a 100644 |
--- a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
+++ b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp |
@@ -33,7 +33,7 @@ |
#include "core/fxge/skia/fx_skia_device.h" |
#endif |
-FX_BOOL CPDF_RenderStatus::ProcessImage(const CPDF_ImageObject* pImageObj, |
+FX_BOOL CPDF_RenderStatus::ProcessImage(CPDF_ImageObject* pImageObj, |
const CFX_Matrix* pObj2Device) { |
CPDF_ImageRenderer render; |
if (render.Start(this, pImageObj, pObj2Device, m_bStdCS, m_curBlend)) { |
@@ -388,30 +388,27 @@ FX_BOOL CPDF_ImageRenderer::StartLoadDIBSource() { |
} |
FX_BOOL CPDF_ImageRenderer::StartRenderDIBSource() { |
- if (!m_Loader.m_pBitmap) { |
+ if (!m_Loader.m_pBitmap) |
return FALSE; |
- } |
- m_BitmapAlpha = 255; |
- const CPDF_GeneralStateData* pGeneralState = |
- m_pImageObject->m_GeneralState.GetObject(); |
- if (pGeneralState) { |
- m_BitmapAlpha = FXSYS_round(pGeneralState->m_FillAlpha * 255); |
- } |
+ |
+ m_BitmapAlpha = |
+ FXSYS_round(255 * m_pImageObject->m_GeneralState.GetFillAlpha()); |
m_pDIBSource = m_Loader.m_pBitmap; |
if (m_pRenderStatus->m_Options.m_ColorMode == RENDER_COLOR_ALPHA && |
!m_Loader.m_pMask) { |
return StartBitmapAlpha(); |
} |
- if (pGeneralState && pGeneralState->m_pTR) { |
- if (!pGeneralState->m_pTransferFunc) { |
- ((CPDF_GeneralStateData*)pGeneralState)->m_pTransferFunc = |
- m_pRenderStatus->GetTransferFunc(pGeneralState->m_pTR); |
+ if (m_pImageObject->m_GeneralState.GetTR()) { |
+ if (!m_pImageObject->m_GeneralState.GetTransferFunc()) { |
+ m_pImageObject->m_GeneralState.SetTransferFunc( |
+ m_pRenderStatus->GetTransferFunc( |
+ m_pImageObject->m_GeneralState.GetTR())); |
} |
- if (pGeneralState->m_pTransferFunc && |
- !pGeneralState->m_pTransferFunc->m_bIdentity) { |
+ if (m_pImageObject->m_GeneralState.GetTransferFunc() && |
+ !m_pImageObject->m_GeneralState.GetTransferFunc()->m_bIdentity) { |
m_pDIBSource = m_Loader.m_pBitmap = |
- pGeneralState->m_pTransferFunc->TranslateImage(m_Loader.m_pBitmap, |
- !m_Loader.m_bCached); |
+ m_pImageObject->m_GeneralState.GetTransferFunc()->TranslateImage( |
+ m_Loader.m_pBitmap, !m_Loader.m_bCached); |
if (m_Loader.m_bCached && m_Loader.m_pMask) { |
m_Loader.m_pMask = m_Loader.m_pMask->Clone(); |
} |
@@ -474,10 +471,12 @@ FX_BOOL CPDF_ImageRenderer::StartRenderDIBSource() { |
if (m_bPatternColor) { |
return DrawPatternImage(m_pObj2Device); |
} |
- if (m_BitmapAlpha == 255 && pGeneralState && pGeneralState->m_FillOP && |
- pGeneralState->m_OPMode == 0 && |
- pGeneralState->m_BlendType == FXDIB_BLEND_NORMAL && |
- pGeneralState->m_StrokeAlpha == 1 && pGeneralState->m_FillAlpha == 1) { |
+ if (m_BitmapAlpha == 255 && m_pImageObject->m_GeneralState && |
+ m_pImageObject->m_GeneralState.GetFillOP() && |
+ m_pImageObject->m_GeneralState.GetOPMode() == 0 && |
+ m_pImageObject->m_GeneralState.GetBlendType() == FXDIB_BLEND_NORMAL && |
+ m_pImageObject->m_GeneralState.GetStrokeAlpha() == 1.0f && |
+ m_pImageObject->m_GeneralState.GetFillAlpha() == 1.0f) { |
CPDF_Document* pDocument = nullptr; |
CPDF_Page* pPage = nullptr; |
if (m_pRenderStatus->m_pContext->GetPageCache()) { |
@@ -505,7 +504,7 @@ FX_BOOL CPDF_ImageRenderer::StartRenderDIBSource() { |
} |
FX_BOOL CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus, |
- const CPDF_PageObject* pObj, |
+ CPDF_PageObject* pObj, |
const CFX_Matrix* pObj2Device, |
FX_BOOL bStdCS, |
int blendType) { |