| Index: fpdfsdk/src/fpdf_progressive.cpp
|
| diff --git a/fpdfsdk/src/fpdf_progressive.cpp b/fpdfsdk/src/fpdf_progressive.cpp
|
| index b6691af82d5b55b8ac1ccbfd2ce5b5cbe689f099..360910b62a50e8bb877d4459d0a836a2f70424db 100644
|
| --- a/fpdfsdk/src/fpdf_progressive.cpp
|
| +++ b/fpdfsdk/src/fpdf_progressive.cpp
|
| @@ -1,7 +1,7 @@
|
| // Copyright 2014 PDFium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
| -
|
| +
|
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
| #include "../include/fpdf_progressive.h"
|
| @@ -9,106 +9,135 @@
|
| #include "../include/fpdfview.h"
|
| #include "../include/fsdk_rendercontext.h"
|
|
|
| -extern void (*Func_RenderPage)( CRenderContext*, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
|
| - int rotate, int flags,FX_BOOL bNeedToRestore, IFSDK_PAUSE_Adapter * pause );
|
| +extern void (*Func_RenderPage)(CRenderContext*,
|
| + FPDF_PAGE page,
|
| + int start_x,
|
| + int start_y,
|
| + int size_x,
|
| + int size_y,
|
| + int rotate,
|
| + int flags,
|
| + FX_BOOL bNeedToRestore,
|
| + IFSDK_PAUSE_Adapter* pause);
|
|
|
| extern void DropContext(void* data);
|
|
|
| -DLLEXPORT int STDCALL FPDF_RenderPageBitmap_Start( FPDF_BITMAP bitmap, FPDF_PAGE page,
|
| - int start_x, int start_y, int size_x,
|
| - int size_y, int rotate, int flags,
|
| - IFSDK_PAUSE * pause )
|
| -{
|
| - if (bitmap == NULL || page == NULL)
|
| - return FPDF_RENDER_FAILED;
|
| -
|
| - if (!pause)
|
| - return FPDF_RENDER_FAILED;
|
| -
|
| - if (pause->version !=1)
|
| - return FPDF_RENDER_FAILED;
|
| -
|
| - CPDF_Page* pPage = (CPDF_Page*)page;
|
| -
|
| -// FXMT_CSLOCK_OBJ(&pPage->m_PageLock);
|
| -
|
| - CRenderContext* pContext = FX_NEW CRenderContext;
|
| - pPage->SetPrivateData((void*)1, pContext, DropContext );
|
| +DLLEXPORT int STDCALL FPDF_RenderPageBitmap_Start(FPDF_BITMAP bitmap,
|
| + FPDF_PAGE page,
|
| + int start_x,
|
| + int start_y,
|
| + int size_x,
|
| + int size_y,
|
| + int rotate,
|
| + int flags,
|
| + IFSDK_PAUSE* pause) {
|
| + if (bitmap == NULL || page == NULL)
|
| + return FPDF_RENDER_FAILED;
|
| +
|
| + if (!pause)
|
| + return FPDF_RENDER_FAILED;
|
| +
|
| + if (pause->version != 1)
|
| + return FPDF_RENDER_FAILED;
|
| +
|
| + CPDF_Page* pPage = (CPDF_Page*)page;
|
| +
|
| + // FXMT_CSLOCK_OBJ(&pPage->m_PageLock);
|
| +
|
| + CRenderContext* pContext = FX_NEW CRenderContext;
|
| + pPage->SetPrivateData((void*)1, pContext, DropContext);
|
| #ifdef _SKIA_SUPPORT_
|
| - pContext->m_pDevice = FX_NEW CFX_SkiaDevice;
|
| - if (flags & FPDF_REVERSE_BYTE_ORDER)
|
| - ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap,0,TRUE);
|
| - else
|
| - ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
|
| + pContext->m_pDevice = FX_NEW CFX_SkiaDevice;
|
| + if (flags & FPDF_REVERSE_BYTE_ORDER)
|
| + ((CFX_SkiaDevice*)pContext->m_pDevice)
|
| + ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
|
| + else
|
| + ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
|
| #else
|
| - pContext->m_pDevice = FX_NEW CFX_FxgeDevice;
|
| - if (flags & FPDF_REVERSE_BYTE_ORDER)
|
| - ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap,0,TRUE);
|
| - else
|
| - ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
|
| + pContext->m_pDevice = FX_NEW CFX_FxgeDevice;
|
| + if (flags & FPDF_REVERSE_BYTE_ORDER)
|
| + ((CFX_FxgeDevice*)pContext->m_pDevice)
|
| + ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
|
| + else
|
| + ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
|
| #endif
|
| - IFSDK_PAUSE_Adapter IPauseAdapter(pause);
|
| -
|
| - if (flags & FPDF_NO_CATCH)
|
| - Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,FALSE, &IPauseAdapter);
|
| - else {
|
| - try {
|
| - Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate, flags,FALSE, &IPauseAdapter);
|
| - }
|
| - catch (...){}
|
| - }
|
| -
|
| - if ( pContext->m_pRenderer )
|
| - {
|
| - CPDF_ProgressiveRenderer::RenderStatus status = CPDF_ProgressiveRenderer::Failed;
|
| - status = pContext->m_pRenderer->GetStatus();
|
| - return status;
|
| - }
|
| - return FPDF_RENDER_FAILED;
|
| + IFSDK_PAUSE_Adapter IPauseAdapter(pause);
|
| +
|
| + if (flags & FPDF_NO_CATCH)
|
| + Func_RenderPage(pContext,
|
| + page,
|
| + start_x,
|
| + start_y,
|
| + size_x,
|
| + size_y,
|
| + rotate,
|
| + flags,
|
| + FALSE,
|
| + &IPauseAdapter);
|
| + else {
|
| + try {
|
| + Func_RenderPage(pContext,
|
| + page,
|
| + start_x,
|
| + start_y,
|
| + size_x,
|
| + size_y,
|
| + rotate,
|
| + flags,
|
| + FALSE,
|
| + &IPauseAdapter);
|
| + } catch (...) {
|
| + }
|
| + }
|
| +
|
| + if (pContext->m_pRenderer) {
|
| + CPDF_ProgressiveRenderer::RenderStatus status =
|
| + CPDF_ProgressiveRenderer::Failed;
|
| + status = pContext->m_pRenderer->GetStatus();
|
| + return status;
|
| + }
|
| + return FPDF_RENDER_FAILED;
|
| }
|
|
|
| -DLLEXPORT int STDCALL FPDF_RenderPage_Continue(FPDF_PAGE page,IFSDK_PAUSE * pause)
|
| -{
|
| - if (page == NULL)
|
| - return FPDF_RENDER_FAILED;
|
| +DLLEXPORT int STDCALL
|
| + FPDF_RenderPage_Continue(FPDF_PAGE page, IFSDK_PAUSE* pause) {
|
| + if (page == NULL)
|
| + return FPDF_RENDER_FAILED;
|
|
|
| - if (!pause)
|
| - return FPDF_RENDER_FAILED;
|
| -
|
| - if (pause->version !=1)
|
| - return FPDF_RENDER_FAILED;
|
| + if (!pause)
|
| + return FPDF_RENDER_FAILED;
|
|
|
| - CPDF_Page* pPage = (CPDF_Page*)page;
|
| + if (pause->version != 1)
|
| + return FPDF_RENDER_FAILED;
|
|
|
| -// FXMT_CSLOCK_OBJ(&pPage->m_PageLock);
|
| + CPDF_Page* pPage = (CPDF_Page*)page;
|
|
|
| - CRenderContext * pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
|
| - if (pContext && pContext->m_pRenderer)
|
| - {
|
| - IFSDK_PAUSE_Adapter IPauseAdapter(pause);
|
| - pContext->m_pRenderer->Continue(&IPauseAdapter);
|
| + // FXMT_CSLOCK_OBJ(&pPage->m_PageLock);
|
|
|
| - CPDF_ProgressiveRenderer::RenderStatus status = CPDF_ProgressiveRenderer::Failed;
|
| - status = pContext->m_pRenderer->GetStatus();
|
| - return status;
|
| - }
|
| - return FPDF_RENDER_FAILED;
|
| -}
|
| + CRenderContext* pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
|
| + if (pContext && pContext->m_pRenderer) {
|
| + IFSDK_PAUSE_Adapter IPauseAdapter(pause);
|
| + pContext->m_pRenderer->Continue(&IPauseAdapter);
|
|
|
| + CPDF_ProgressiveRenderer::RenderStatus status =
|
| + CPDF_ProgressiveRenderer::Failed;
|
| + status = pContext->m_pRenderer->GetStatus();
|
| + return status;
|
| + }
|
| + return FPDF_RENDER_FAILED;
|
| +}
|
|
|
| -DLLEXPORT void STDCALL FPDF_RenderPage_Close(FPDF_PAGE page)
|
| -{
|
| - if (page == NULL) return;
|
| - CPDF_Page* pPage = (CPDF_Page*)page;
|
| +DLLEXPORT void STDCALL FPDF_RenderPage_Close(FPDF_PAGE page) {
|
| + if (page == NULL)
|
| + return;
|
| + CPDF_Page* pPage = (CPDF_Page*)page;
|
|
|
| -// FXMT_CSLOCK_OBJ(&pPage->m_PageLock);
|
| + // FXMT_CSLOCK_OBJ(&pPage->m_PageLock);
|
|
|
| - CRenderContext * pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
|
| - if (pContext)
|
| - {
|
| - pContext->m_pDevice->RestoreState();
|
| - delete pContext;
|
| - pPage->RemovePrivateData((void*)1);
|
| - }
|
| + CRenderContext* pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
|
| + if (pContext) {
|
| + pContext->m_pDevice->RestoreState();
|
| + delete pContext;
|
| + pPage->RemovePrivateData((void*)1);
|
| + }
|
| }
|
| -
|
|
|