summaryrefslogtreecommitdiff
path: root/core/fxge/win32/cfx_psrenderer.h
diff options
context:
space:
mode:
authorrbpotter <rbpotter@chromium.org>2017-01-06 08:10:18 -0800
committerCommit bot <commit-bot@chromium.org>2017-01-06 08:10:19 -0800
commit8d94b6687f27e1238f352939434704f75b330c1d (patch)
treeeec42ae295885acce22ed547359ead388ba17737 /core/fxge/win32/cfx_psrenderer.h
parent469f6da247ffe77d0ae6089e5d93db0b0c0bb37e (diff)
downloadpdfium-8d94b6687f27e1238f352939434704f75b330c1d.tar.xz
Revert postscript code removal.
Revert CL http://crrev.com/2608663003 in preparation for adding postscript generation to Pdfium. Note postscript generation code will not be called until additional patches land. These patches will also include modifications needed to make this code functional (currently missing a few compression functions). BUG= Review-Url: https://codereview.chromium.org/2615703002
Diffstat (limited to 'core/fxge/win32/cfx_psrenderer.h')
-rw-r--r--core/fxge/win32/cfx_psrenderer.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/core/fxge/win32/cfx_psrenderer.h b/core/fxge/win32/cfx_psrenderer.h
new file mode 100644
index 0000000000..c70708a5a4
--- /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_