| Index: fpdfsdk/fpdfview.cpp
|
| diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
|
| index f47de1518d86de874b28687c7ec47e753022171c..6a70df5367f764f06a124a4e6f0392cea329315d 100644
|
| --- a/fpdfsdk/fpdfview.cpp
|
| +++ b/fpdfsdk/fpdfview.cpp
|
| @@ -11,14 +11,17 @@
|
| #include "core/fpdfapi/fpdf_page/include/cpdf_page.h"
|
| #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
|
| #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
|
| +#include "core/fpdfapi/fpdf_render/include/cpdf_progressiverenderer.h"
|
| #include "core/fpdfapi/fpdf_render/include/cpdf_renderoptions.h"
|
| #include "core/fpdfapi/include/cpdf_modulemgr.h"
|
| +#include "core/fpdfapi/include/cpdf_pagerendercontext.h"
|
| #include "core/fxcodec/include/fx_codec.h"
|
| +#include "core/fxcrt/include/fx_memory.h"
|
| #include "core/fxcrt/include/fx_safe_types.h"
|
| #include "core/fxge/include/fx_ge.h"
|
| #include "fpdfsdk/include/fsdk_define.h"
|
| #include "fpdfsdk/include/fsdk_mgr.h"
|
| -#include "fpdfsdk/include/fsdk_rendercontext.h"
|
| +#include "fpdfsdk/include/fsdk_pauseadapter.h"
|
| #include "fpdfsdk/javascript/ijs_runtime.h"
|
| #include "public/fpdf_ext.h"
|
| #include "public/fpdf_progressive.h"
|
| @@ -562,8 +565,8 @@ DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc,
|
| if (!pPage)
|
| return;
|
|
|
| - CRenderContext* pContext = new CRenderContext;
|
| - pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>(pContext));
|
| + CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext;
|
| + pPage->SetRenderContext(WrapUnique(pContext));
|
|
|
| CFX_DIBitmap* pBitmap = nullptr;
|
| FX_BOOL bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded();
|
| @@ -573,10 +576,10 @@ DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc,
|
| pBitmap->Create(size_x, size_y, FXDIB_Argb);
|
| pBitmap->Clear(0x00ffffff);
|
| CFX_FxgeDevice* pDevice = new CFX_FxgeDevice;
|
| - pContext->m_pDevice = pDevice;
|
| + pContext->m_pDevice.reset(pDevice);
|
| pDevice->Attach(pBitmap, false, nullptr, false);
|
| } else {
|
| - pContext->m_pDevice = new CFX_WindowsDevice(dc);
|
| + pContext->m_pDevice.reset(new CFX_WindowsDevice(dc));
|
| }
|
|
|
| FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
|
| @@ -603,7 +606,7 @@ DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc,
|
| if (bBackgroundAlphaNeeded || bHasImageMask)
|
| delete pBitmap;
|
|
|
| - pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>());
|
| + pPage->SetRenderContext(std::unique_ptr<CPDF_PageRenderContext>());
|
| }
|
| #endif // defined(_WIN32)
|
|
|
| @@ -622,17 +625,17 @@ DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap,
|
| if (!pPage)
|
| return;
|
|
|
| - CRenderContext* pContext = new CRenderContext;
|
| - pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>(pContext));
|
| + CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext;
|
| + pPage->SetRenderContext(WrapUnique(pContext));
|
| CFX_FxgeDevice* pDevice = new CFX_FxgeDevice;
|
| - pContext->m_pDevice = pDevice;
|
| + pContext->m_pDevice.reset(pDevice);
|
| CFX_DIBitmap* pBitmap = CFXBitmapFromFPDFBitmap(bitmap);
|
| pDevice->Attach(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER), nullptr, false);
|
|
|
| FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
|
| rotate, flags, TRUE, nullptr);
|
|
|
| - pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>());
|
| + pPage->SetRenderContext(std::unique_ptr<CPDF_PageRenderContext>());
|
| }
|
|
|
| #ifdef _SKIA_SUPPORT_
|
| @@ -643,14 +646,14 @@ DLLEXPORT FPDF_RECORDER STDCALL FPDF_RenderPageSkp(FPDF_PAGE page,
|
| if (!pPage)
|
| return nullptr;
|
|
|
| - CRenderContext* pContext = new CRenderContext;
|
| - pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>(pContext));
|
| + CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext;
|
| + pPage->SetRenderContext(WrapUnique(pContext));
|
| CFX_FxgeDevice* skDevice = new CFX_FxgeDevice;
|
| FPDF_RECORDER recorder = skDevice->CreateRecorder(size_x, size_y);
|
| - pContext->m_pDevice = skDevice;
|
| + pContext->m_pDevice.reset(skDevice);
|
| FPDF_RenderPage_Retail(pContext, page, 0, 0, size_x, size_y, 0, 0, TRUE,
|
| nullptr);
|
| - pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>());
|
| + pPage->SetRenderContext(std::unique_ptr<CPDF_PageRenderContext>());
|
| return recorder;
|
| }
|
| #endif
|
| @@ -827,7 +830,7 @@ DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap) {
|
| delete CFXBitmapFromFPDFBitmap(bitmap);
|
| }
|
|
|
| -void FPDF_RenderPage_Retail(CRenderContext* pContext,
|
| +void FPDF_RenderPage_Retail(CPDF_PageRenderContext* pContext,
|
| FPDF_PAGE page,
|
| int start_x,
|
| int start_y,
|
| @@ -842,7 +845,7 @@ void FPDF_RenderPage_Retail(CRenderContext* pContext,
|
| return;
|
|
|
| if (!pContext->m_pOptions)
|
| - pContext->m_pOptions = new CPDF_RenderOptions;
|
| + pContext->m_pOptions.reset(new CPDF_RenderOptions);
|
|
|
| if (flags & FPDF_LCD_TEXT)
|
| pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE;
|
| @@ -881,18 +884,19 @@ void FPDF_RenderPage_Retail(CRenderContext* pContext,
|
| pContext->m_pDevice->SetClip_Rect(
|
| FX_RECT(start_x, start_y, start_x + size_x, start_y + size_y));
|
|
|
| - pContext->m_pContext = new CPDF_RenderContext(pPage);
|
| + pContext->m_pContext.reset(new CPDF_RenderContext(pPage));
|
| pContext->m_pContext->AppendLayer(pPage, &matrix);
|
|
|
| if (flags & FPDF_ANNOT) {
|
| - pContext->m_pAnnots = new CPDF_AnnotList(pPage);
|
| + pContext->m_pAnnots.reset(new CPDF_AnnotList(pPage));
|
| FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXDC_DISPLAY;
|
| - pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext, bPrinting,
|
| - &matrix, TRUE, nullptr);
|
| + pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext.get(),
|
| + bPrinting, &matrix, TRUE, nullptr);
|
| }
|
|
|
| - pContext->m_pRenderer = new CPDF_ProgressiveRenderer(
|
| - pContext->m_pContext, pContext->m_pDevice, pContext->m_pOptions);
|
| + pContext->m_pRenderer.reset(new CPDF_ProgressiveRenderer(
|
| + pContext->m_pContext.get(), pContext->m_pDevice.get(),
|
| + pContext->m_pOptions.get()));
|
| pContext->m_pRenderer->Start(pause);
|
| if (bNeedToRestore)
|
| pContext->m_pDevice->RestoreState(false);
|
|
|