summaryrefslogtreecommitdiff
path: root/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/fpdf_render/fpdf_render_image.cpp')
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_image.cpp43
1 files changed, 21 insertions, 22 deletions
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
index 295ac4f7d7..e7e9682322 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) {