Index: core/fxge/win32/cfx_psrenderer.h |
diff --git a/core/fxge/win32/cfx_psrenderer.h b/core/fxge/win32/cfx_psrenderer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c70708a5a44c9a32fcf65fc817868d8b18c67621 |
--- /dev/null |
+++ b/core/fxge/win32/cfx_psrenderer.h |
@@ -0,0 +1,98 @@ |
+// 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_FXGE_WIN32_CFX_PSRENDERER_H_ |
+#define CORE_FXGE_WIN32_CFX_PSRENDERER_H_ |
+ |
+#include "core/fxcrt/fx_coordinates.h" |
+#include "core/fxcrt/fx_system.h" |
+#include "core/fxge/cfx_graphstatedata.h" |
+#include "core/fxge/win32/cpsoutput.h" |
+ |
+class CFX_DIBSource; |
+class CFX_FaceCache; |
+class CFX_Font; |
+class CFX_FontCache; |
+class CFX_Matrix; |
+class CFX_PathData; |
+class CPSFont; |
+struct FXTEXT_CHARPOS; |
+ |
+class CFX_PSRenderer { |
+ public: |
+ CFX_PSRenderer(); |
+ ~CFX_PSRenderer(); |
+ |
+ void Init(CPSOutput* pOutput, |
+ int pslevel, |
+ int width, |
+ int height, |
+ bool bCmykOutput); |
+ bool StartRendering(); |
+ void EndRendering(); |
+ void SaveState(); |
+ void RestoreState(bool bKeepSaved); |
+ void SetClip_PathFill(const CFX_PathData* pPathData, |
+ const CFX_Matrix* pObject2Device, |
+ int fill_mode); |
+ void SetClip_PathStroke(const CFX_PathData* pPathData, |
+ const CFX_Matrix* pObject2Device, |
+ const CFX_GraphStateData* pGraphState); |
+ FX_RECT GetClipBox() { return m_ClipBox; } |
+ bool DrawPath(const CFX_PathData* pPathData, |
+ const CFX_Matrix* pObject2Device, |
+ const CFX_GraphStateData* pGraphState, |
+ uint32_t fill_color, |
+ uint32_t stroke_color, |
+ int fill_mode); |
+ bool SetDIBits(const CFX_DIBSource* pBitmap, |
+ uint32_t color, |
+ int dest_left, |
+ int dest_top); |
+ bool StretchDIBits(const CFX_DIBSource* pBitmap, |
+ uint32_t color, |
+ int dest_left, |
+ int dest_top, |
+ int dest_width, |
+ int dest_height, |
+ uint32_t flags); |
+ bool DrawDIBits(const CFX_DIBSource* pBitmap, |
+ uint32_t color, |
+ const CFX_Matrix* pMatrix, |
+ uint32_t flags); |
+ bool DrawText(int nChars, |
+ const FXTEXT_CHARPOS* pCharPos, |
+ CFX_Font* pFont, |
+ const CFX_Matrix* pObject2Device, |
+ FX_FLOAT font_size, |
+ uint32_t color); |
+ |
+ private: |
+ void OutputPath(const CFX_PathData* pPathData, |
+ const CFX_Matrix* pObject2Device); |
+ void SetGraphState(const CFX_GraphStateData* pGraphState); |
+ void SetColor(uint32_t color); |
+ void FindPSFontGlyph(CFX_FaceCache* pFaceCache, |
+ CFX_Font* pFont, |
+ const FXTEXT_CHARPOS& charpos, |
+ int* ps_fontnum, |
+ int* ps_glyphindex); |
+ void WritePSBinary(const uint8_t* data, int len); |
+ |
+ CPSOutput* m_pOutput; |
+ int m_PSLevel; |
+ CFX_GraphStateData m_CurGraphState; |
+ bool m_bGraphStateSet; |
+ bool m_bCmykOutput; |
+ bool m_bColorSet; |
+ uint32_t m_LastColor; |
+ FX_RECT m_ClipBox; |
+ CFX_ArrayTemplate<CPSFont*> m_PSFontList; |
+ CFX_ArrayTemplate<FX_RECT> m_ClipBoxStack; |
+ bool m_bInited; |
+}; |
+ |
+#endif // CORE_FXGE_WIN32_CFX_PSRENDERER_H_ |