1// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef XFA_FDE_FDE_RENDER_H_
8#define XFA_FDE_FDE_RENDER_H_
9
10#include <memory>
11#include <vector>
12
13#include "core/fxcrt/fx_coordinates.h"
14#include "xfa/fde/fde_gedevice.h"
15#include "xfa/fde/fde_iterator.h"
16#include "xfa/fde/fde_visualset.h"
17
18class CFDE_RenderDevice;
19
20enum FDE_RENDERSTATUS {
21  FDE_RENDERSTATUS_Reset = 0,
22  FDE_RENDERSTATUS_Paused,
23  FDE_RENDERSTATUS_Done,
24  FDE_RENDERSTATUS_Failed,
25};
26
27class CFDE_RenderContext {
28 public:
29  CFDE_RenderContext();
30  ~CFDE_RenderContext();
31
32  bool StartRender(CFDE_RenderDevice* pRenderDevice,
33                   IFDE_CanvasSet* pCanvasSet,
34                   const CFX_Matrix& tmDoc2Device);
35  FDE_RENDERSTATUS GetStatus() const { return m_eStatus; }
36  FDE_RENDERSTATUS DoRender(IFX_Pause* pPause = nullptr);
37  void StopRender();
38  void RenderText(IFDE_TextSet* pTextSet, FDE_TEXTEDITPIECE* pText);
39
40 protected:
41  FDE_RENDERSTATUS m_eStatus;
42  CFDE_RenderDevice* m_pRenderDevice;
43  CFX_Matrix m_Transform;
44  std::vector<FXTEXT_CHARPOS> m_CharPos;
45  std::unique_ptr<CFDE_Brush> m_pBrush;
46  std::unique_ptr<CFDE_VisualSetIterator> m_pIterator;
47};
48
49#endif  // XFA_FDE_FDE_RENDER_H_
50