summaryrefslogtreecommitdiff
path: root/xfa/fde/cfde_rendercontext.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fde/cfde_rendercontext.h')
-rw-r--r--xfa/fde/cfde_rendercontext.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/xfa/fde/cfde_rendercontext.h b/xfa/fde/cfde_rendercontext.h
new file mode 100644
index 0000000000..28b8780052
--- /dev/null
+++ b/xfa/fde/cfde_rendercontext.h
@@ -0,0 +1,50 @@
+// 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 XFA_FDE_CFDE_RENDERCONTEXT_H_
+#define XFA_FDE_CFDE_RENDERCONTEXT_H_
+
+#include <memory>
+#include <vector>
+
+#include "core/fxcrt/fx_coordinates.h"
+#include "xfa/fde/cfde_renderdevice.h"
+#include "xfa/fde/cfde_visualsetiterator.h"
+#include "xfa/fde/ifde_visualset.h"
+
+class CFDE_RenderDevice;
+class CFDE_TxtEdtTextSet;
+
+enum FDE_RENDERSTATUS {
+ FDE_RENDERSTATUS_Reset = 0,
+ FDE_RENDERSTATUS_Paused,
+ FDE_RENDERSTATUS_Done,
+ FDE_RENDERSTATUS_Failed,
+};
+
+class CFDE_RenderContext {
+ public:
+ CFDE_RenderContext();
+ ~CFDE_RenderContext();
+
+ bool StartRender(CFDE_RenderDevice* pRenderDevice,
+ CFDE_TxtEdtPage* pCanvasSet,
+ const CFX_Matrix& tmDoc2Device);
+ FDE_RENDERSTATUS GetStatus() const { return m_eStatus; }
+ FDE_RENDERSTATUS DoRender(IFX_Pause* pPause = nullptr);
+ void StopRender();
+ void RenderText(CFDE_TxtEdtTextSet* pTextSet, FDE_TEXTEDITPIECE* pText);
+
+ protected:
+ FDE_RENDERSTATUS m_eStatus;
+ CFDE_RenderDevice* m_pRenderDevice;
+ CFX_Matrix m_Transform;
+ std::vector<FXTEXT_CHARPOS> m_CharPos;
+ std::unique_ptr<CFDE_Brush> m_pBrush;
+ std::unique_ptr<CFDE_VisualSetIterator> m_pIterator;
+};
+
+#endif // XFA_FDE_CFDE_RENDERCONTEXT_H_