// 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 FPDFSDK_INCLUDE_FSDK_RENDERCONTEXT_H_
#define FPDFSDK_INCLUDE_FSDK_RENDERCONTEXT_H_

#include "core/fpdfapi/fpdf_render/include/cpdf_progressiverenderer.h"
#include "fpdfsdk/include/fsdk_define.h"
#include "public/fpdf_progressive.h"

// Everything about rendering is put here: for OOM recovery
class CRenderContext {
 public:
  CRenderContext() { Clear(); }
  ~CRenderContext();

  void Clear();

  CFX_RenderDevice* m_pDevice;
  CPDF_RenderContext* m_pContext;
  CPDF_ProgressiveRenderer* m_pRenderer;
  CPDF_AnnotList* m_pAnnots;
  CPDF_RenderOptions* m_pOptions;
#ifdef _WIN32_WCE
  CFX_DIBitmap* m_pBitmap;
  HBITMAP m_hBitmap;
#endif
};

class IFSDK_PAUSE_Adapter : public IFX_Pause {
 public:
  explicit IFSDK_PAUSE_Adapter(IFSDK_PAUSE* IPause);
  ~IFSDK_PAUSE_Adapter() override;

  FX_BOOL NeedToPauseNow() override;

 private:
  IFSDK_PAUSE* m_IPause;
};

#endif  // FPDFSDK_INCLUDE_FSDK_RENDERCONTEXT_H_
