// 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

#ifndef _FDE_RENDERCONTEXT
#define _FDE_RENDERCONTEXT
class IFDE_Page;
class IFDE_RenderDevice;

void FDE_GetPageMatrix(CFX_Matrix& pageMatrix,
                       const CFX_RectF& docPageRect,
                       const CFX_Rect& devicePageRect,
                       int32_t iRotate,
                       FX_DWORD dwCoordinatesType = 0);
enum FDE_RENDERSTATUS {
  FDE_RENDERSTATUS_Reset = 0,
  FDE_RENDERSTATUS_Paused,
  FDE_RENDERSTATUS_Done,
  FDE_RENDERSTATUS_Failed,
};

class IFDE_RenderContext {
 public:
  static IFDE_RenderContext* Create();
  virtual ~IFDE_RenderContext() {}
  virtual void Release() = 0;
  virtual FX_BOOL StartRender(IFDE_RenderDevice* pRenderDevice,
                              IFDE_CanvasSet* pCanvasSet,
                              const CFX_Matrix& tmDoc2Device) = 0;
  virtual FDE_RENDERSTATUS GetStatus() const = 0;
  virtual FDE_RENDERSTATUS DoRender(IFX_Pause* pPause = NULL) = 0;
  virtual void StopRender() = 0;
};
#endif
