From aa403d3f68a966e24a6d8e8c109970930f096afb Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Tue, 15 Mar 2016 14:57:22 -0400 Subject: core/include/fdpfapi cleanup Part I. This Cl moves a bunch of the files from core/include/fpdfapi to their correct location outside the core/include tree. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1805603002 . --- .../fpdf_render/include/cpdf_progressiverenderer.h | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 core/fpdfapi/fpdf_render/include/cpdf_progressiverenderer.h (limited to 'core/fpdfapi/fpdf_render/include/cpdf_progressiverenderer.h') diff --git a/core/fpdfapi/fpdf_render/include/cpdf_progressiverenderer.h b/core/fpdfapi/fpdf_render/include/cpdf_progressiverenderer.h new file mode 100644 index 0000000000..eddd4b0c83 --- /dev/null +++ b/core/fpdfapi/fpdf_render/include/cpdf_progressiverenderer.h @@ -0,0 +1,62 @@ +// Copyright 2016 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 + +#ifndef CORE_FPDFAPI_FPDF_RENDER_INCLUDE_CPDF_PROGRESSIVERENDERER_H_ +#define CORE_FPDFAPI_FPDF_RENDER_INCLUDE_CPDF_PROGRESSIVERENDERER_H_ + +#include + +#include "core/fpdfapi/fpdf_render/include/cpdf_rendercontext.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxcrt/fx_system.h" + +class CPDF_RenderOptions; +class CPDF_RenderStatus; +class CFX_RenderDevice; +class IFX_Pause; + +class CPDF_ProgressiveRenderer { + public: + // Must match FDF_RENDER_* definitions in public/fpdf_progressive.h, but + // cannot #include that header. fpdfsdk/fpdf_progressive.cpp has + // static_asserts to make sure the two sets of values match. + enum Status { + Ready, // FPDF_RENDER_READER + ToBeContinued, // FPDF_RENDER_TOBECOUNTINUED + Done, // FPDF_RENDER_DONE + Failed // FPDF_RENDER_FAILED + }; + + static int ToFPDFStatus(Status status) { return static_cast(status); } + + CPDF_ProgressiveRenderer(CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + const CPDF_RenderOptions* pOptions); + ~CPDF_ProgressiveRenderer(); + + Status GetStatus() const { return m_Status; } + void Start(IFX_Pause* pPause); + void Continue(IFX_Pause* pPause); + + private: + void RenderStep(); + + // Maximum page objects to render before checking for pause. + static const int kStepLimit = 100; + + Status m_Status; + CPDF_RenderContext* const m_pContext; + CFX_RenderDevice* const m_pDevice; + const CPDF_RenderOptions* const m_pOptions; + std::unique_ptr m_pRenderStatus; + CFX_FloatRect m_ClipRect; + FX_DWORD m_LayerIndex; + CPDF_RenderContext::Layer* m_pCurrentLayer; + CPDF_PageObjectList::iterator m_LastObjectRendered; +}; + +#endif // CORE_FPDFAPI_FPDF_RENDER_INCLUDE_CPDF_PROGRESSIVERENDERER_H_ -- cgit v1.2.3