summaryrefslogtreecommitdiff
path: root/core/src/fpdfapi/fpdf_render
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/fpdfapi/fpdf_render')
-rw-r--r--core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp13
-rw-r--r--core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp81
-rw-r--r--core/src/fpdfapi/fpdf_render/render_int.h54
3 files changed, 58 insertions, 90 deletions
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp
index a9544d3c1b..ea6195dc8e 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp
@@ -311,7 +311,7 @@ CPDF_ImageRenderer::~CPDF_ImageRenderer() {
if (m_DeviceHandle) {
m_pRenderStatus->m_pDevice->CancelDIBits(m_DeviceHandle);
}
- delete (CPDF_ProgressiveImageLoaderHandle*)m_LoadHandle;
+ delete m_LoadHandle;
delete m_pClone;
}
FX_BOOL CPDF_ImageRenderer::StartLoadDIBSource() {
@@ -325,16 +325,15 @@ FX_BOOL CPDF_ImageRenderer::StartLoadDIBSource() {
if (m_ImageMatrix.d > 0) {
dest_height = -dest_height;
}
- if (m_Loader.StartLoadImage(
- m_pImageObject, m_pRenderStatus->m_pContext->GetPageCache(),
- m_LoadHandle, m_bStdCS, m_pRenderStatus->m_GroupFamily,
- m_pRenderStatus->m_bLoadMask, m_pRenderStatus, dest_width,
- dest_height)) {
+ if (m_Loader.Start(m_pImageObject,
+ m_pRenderStatus->m_pContext->GetPageCache(), m_LoadHandle,
+ m_bStdCS, m_pRenderStatus->m_GroupFamily,
+ m_pRenderStatus->m_bLoadMask, m_pRenderStatus, dest_width,
+ dest_height)) {
if (m_LoadHandle) {
m_Status = 4;
return TRUE;
}
- return FALSE;
}
return FALSE;
}
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
index fafba95527..0306ff0227 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
@@ -1534,22 +1534,21 @@ void CPDF_DIBSource::ClearImageData() {
}
}
-CPDF_ProgressiveImageLoaderHandle::CPDF_ProgressiveImageLoaderHandle() {
+CPDF_ImageLoaderHandle::CPDF_ImageLoaderHandle() {
m_pImageLoader = NULL;
m_pCache = NULL;
m_pImage = NULL;
}
-CPDF_ProgressiveImageLoaderHandle::~CPDF_ProgressiveImageLoaderHandle() {}
-FX_BOOL CPDF_ProgressiveImageLoaderHandle::Start(
- CPDF_ImageLoader* pImageLoader,
- const CPDF_ImageObject* pImage,
- CPDF_PageRenderCache* pCache,
- FX_BOOL bStdCS,
- FX_DWORD GroupFamily,
- FX_BOOL bLoadMask,
- CPDF_RenderStatus* pRenderStatus,
- int32_t nDownsampleWidth,
- int32_t nDownsampleHeight) {
+CPDF_ImageLoaderHandle::~CPDF_ImageLoaderHandle() {}
+FX_BOOL CPDF_ImageLoaderHandle::Start(CPDF_ImageLoader* pImageLoader,
+ const CPDF_ImageObject* pImage,
+ CPDF_PageRenderCache* pCache,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t nDownsampleWidth,
+ int32_t nDownsampleHeight) {
m_pImageLoader = pImageLoader;
m_pCache = pCache;
m_pImage = (CPDF_ImageObject*)pImage;
@@ -1581,7 +1580,7 @@ FX_BOOL CPDF_ProgressiveImageLoaderHandle::Start(
}
return ret;
}
-FX_BOOL CPDF_ProgressiveImageLoaderHandle::Continue(IFX_Pause* pPause) {
+FX_BOOL CPDF_ImageLoaderHandle::Continue(IFX_Pause* pPause) {
FX_BOOL ret;
if (m_pCache) {
ret = m_pCache->Continue(pPause);
@@ -1604,49 +1603,25 @@ FX_BOOL CPDF_ProgressiveImageLoaderHandle::Continue(IFX_Pause* pPause) {
}
return ret;
}
-FX_BOOL CPDF_ImageLoader::Load(const CPDF_ImageObject* pImage,
- CPDF_PageRenderCache* pCache,
- FX_BOOL bStdCS,
- FX_DWORD GroupFamily,
- FX_BOOL bLoadMask,
- CPDF_RenderStatus* pRenderStatus) {
- if (!pImage) {
- return FALSE;
- }
- if (pCache) {
- pCache->GetCachedBitmap(pImage->m_pImage->GetStream(), m_pBitmap, m_pMask,
- m_MatteColor, bStdCS, GroupFamily, bLoadMask,
- pRenderStatus, m_nDownsampleWidth,
- m_nDownsampleHeight);
- m_bCached = TRUE;
- } else {
- m_pBitmap = pImage->m_pImage->LoadDIBSource(&m_pMask, &m_MatteColor, bStdCS,
- GroupFamily, bLoadMask);
- m_bCached = FALSE;
- }
- return FALSE;
-}
-FX_BOOL CPDF_ImageLoader::StartLoadImage(const CPDF_ImageObject* pImage,
- CPDF_PageRenderCache* pCache,
- void*& LoadHandle,
- FX_BOOL bStdCS,
- FX_DWORD GroupFamily,
- FX_BOOL bLoadMask,
- CPDF_RenderStatus* pRenderStatus,
- int32_t nDownsampleWidth,
- int32_t nDownsampleHeight) {
+FX_BOOL CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage,
+ CPDF_PageRenderCache* pCache,
+ CPDF_ImageLoaderHandle*& LoadHandle,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t nDownsampleWidth,
+ int32_t nDownsampleHeight) {
m_nDownsampleWidth = nDownsampleWidth;
m_nDownsampleHeight = nDownsampleHeight;
- CPDF_ProgressiveImageLoaderHandle* pLoaderHandle =
- new CPDF_ProgressiveImageLoaderHandle;
- FX_BOOL ret = pLoaderHandle->Start(this, pImage, pCache, bStdCS, GroupFamily,
- bLoadMask, pRenderStatus,
- m_nDownsampleWidth, m_nDownsampleHeight);
- LoadHandle = pLoaderHandle;
- return ret;
+ LoadHandle = new CPDF_ImageLoaderHandle;
+ return LoadHandle->Start(this, pImage, pCache, bStdCS, GroupFamily, bLoadMask,
+ pRenderStatus, m_nDownsampleWidth,
+ m_nDownsampleHeight);
}
-FX_BOOL CPDF_ImageLoader::Continue(void* LoadHandle, IFX_Pause* pPause) {
- return ((CPDF_ProgressiveImageLoaderHandle*)LoadHandle)->Continue(pPause);
+FX_BOOL CPDF_ImageLoader::Continue(CPDF_ImageLoaderHandle* LoadHandle,
+ IFX_Pause* pPause) {
+ return LoadHandle->Continue(pPause);
}
CPDF_ImageLoader::~CPDF_ImageLoader() {
if (!m_bCached) {
diff --git a/core/src/fpdfapi/fpdf_render/render_int.h b/core/src/fpdfapi/fpdf_render/render_int.h
index 80cf6ca9ff..6a63f61c06 100644
--- a/core/src/fpdfapi/fpdf_render/render_int.h
+++ b/core/src/fpdfapi/fpdf_render/render_int.h
@@ -14,7 +14,9 @@
#include "third_party/base/nonstd_unique_ptr.h"
class CFX_GlyphBitmap;
+class CFX_ImageTransformer;
class CPDF_ImageCacheEntry;
+class CPDF_ImageLoaderHandle;
class ICodec_ScanlineDecoder;
#define TYPE3_MAX_BLUES 16
@@ -266,33 +268,26 @@ class CPDF_RenderStatus {
};
class CPDF_ImageLoader {
public:
- CPDF_ImageLoader() {
- m_pBitmap = NULL;
- m_pMask = NULL;
- m_MatteColor = 0;
- m_bCached = FALSE;
- m_nDownsampleWidth = 0;
- m_nDownsampleHeight = 0;
- }
+ CPDF_ImageLoader()
+ : m_pBitmap(nullptr),
+ m_pMask(nullptr),
+ m_MatteColor(0),
+ m_bCached(FALSE),
+ m_nDownsampleWidth(0),
+ m_nDownsampleHeight(0) {}
+ ~CPDF_ImageLoader();
- FX_BOOL Load(const CPDF_ImageObject* pImage,
- CPDF_PageRenderCache* pCache,
- FX_BOOL bStdCS = FALSE,
- FX_DWORD GroupFamily = 0,
- FX_BOOL bLoadMask = FALSE,
- CPDF_RenderStatus* pRenderStatus = NULL);
+ FX_BOOL Start(const CPDF_ImageObject* pImage,
+ CPDF_PageRenderCache* pCache,
+ CPDF_ImageLoaderHandle*& LoadHandle,
+ FX_BOOL bStdCS = FALSE,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE,
+ CPDF_RenderStatus* pRenderStatus = NULL,
+ int32_t nDownsampleWidth = 0,
+ int32_t nDownsampleHeight = 0);
+ FX_BOOL Continue(CPDF_ImageLoaderHandle* LoadHandle, IFX_Pause* pPause);
- FX_BOOL StartLoadImage(const CPDF_ImageObject* pImage,
- CPDF_PageRenderCache* pCache,
- void*& LoadHandle,
- FX_BOOL bStdCS = FALSE,
- FX_DWORD GroupFamily = 0,
- FX_BOOL bLoadMask = FALSE,
- CPDF_RenderStatus* pRenderStatus = NULL,
- int32_t nDownsampleWidth = 0,
- int32_t nDownsampleHeight = 0);
- FX_BOOL Continue(void* LoadHandle, IFX_Pause* pPause);
- ~CPDF_ImageLoader();
CFX_DIBSource* m_pBitmap;
CFX_DIBSource* m_pMask;
FX_DWORD m_MatteColor;
@@ -302,10 +297,10 @@ class CPDF_ImageLoader {
int32_t m_nDownsampleWidth;
int32_t m_nDownsampleHeight;
};
-class CPDF_ProgressiveImageLoaderHandle {
+class CPDF_ImageLoaderHandle {
public:
- CPDF_ProgressiveImageLoaderHandle();
- ~CPDF_ProgressiveImageLoaderHandle();
+ CPDF_ImageLoaderHandle();
+ ~CPDF_ImageLoaderHandle();
FX_BOOL Start(CPDF_ImageLoader* pImageLoader,
const CPDF_ImageObject* pImage,
@@ -325,7 +320,6 @@ class CPDF_ProgressiveImageLoaderHandle {
int32_t m_nDownsampleWidth;
int32_t m_nDownsampleHeight;
};
-class CFX_ImageTransformer;
class CPDF_ImageRenderer : public IPDF_ObjectRenderer {
public:
@@ -365,7 +359,7 @@ class CPDF_ImageRenderer : public IPDF_ObjectRenderer {
FX_DWORD m_Flags;
CFX_ImageTransformer* m_pTransformer;
void* m_DeviceHandle;
- void* m_LoadHandle;
+ CPDF_ImageLoaderHandle* m_LoadHandle;
FX_BOOL m_bStdCS;
int m_BlendType;
FX_BOOL StartBitmapAlpha();