diff options
Diffstat (limited to 'xfa/fde/cfde_renderdevice.h')
-rw-r--r-- | xfa/fde/cfde_renderdevice.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/xfa/fde/cfde_renderdevice.h b/xfa/fde/cfde_renderdevice.h new file mode 100644 index 0000000000..f429ac1703 --- /dev/null +++ b/xfa/fde/cfde_renderdevice.h @@ -0,0 +1,127 @@ +// 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_RENDERDEVICE_H_ +#define XFA_FDE_CFDE_RENDERDEVICE_H_ + +#include <vector> + +#include "core/fxge/cfx_renderdevice.h" +#include "xfa/fgas/font/cfgas_gefont.h" + +class CFDE_Brush; +class CFDE_Path; +class CFDE_Pen; +class CFX_GraphStateData; + +class CFDE_RenderDevice { + public: + CFDE_RenderDevice(CFX_RenderDevice* pDevice, bool bOwnerDevice); + ~CFDE_RenderDevice(); + + int32_t GetWidth() const; + int32_t GetHeight() const; + void SaveState(); + void RestoreState(); + bool SetClipPath(const CFDE_Path* pClip); + CFDE_Path* GetClipPath() const; + bool SetClipRect(const CFX_RectF& rtClip); + const CFX_RectF& GetClipRect(); + + float GetDpiX() const; + float GetDpiY() const; + + bool DrawImage(const CFX_RetainPtr<CFX_DIBSource>& pDib, + const CFX_RectF* pSrcRect, + const CFX_RectF& dstRect, + const CFX_Matrix* pImgMatrix = nullptr, + const CFX_Matrix* pDevMatrix = nullptr); + bool DrawString(CFDE_Brush* pBrush, + const CFX_RetainPtr<CFGAS_GEFont>& pFont, + const FXTEXT_CHARPOS* pCharPos, + int32_t iCount, + float fFontSize, + const CFX_Matrix* pMatrix = nullptr); + bool DrawBezier(CFDE_Pen* pPen, + float fPenWidth, + const CFX_PointF& pt1, + const CFX_PointF& pt2, + const CFX_PointF& pt3, + const CFX_PointF& pt4, + const CFX_Matrix* pMatrix = nullptr); + bool DrawCurve(CFDE_Pen* pPen, + float fPenWidth, + const std::vector<CFX_PointF>& points, + bool bClosed, + float fTension = 0.5f, + const CFX_Matrix* pMatrix = nullptr); + bool DrawEllipse(CFDE_Pen* pPen, + float fPenWidth, + const CFX_RectF& rect, + const CFX_Matrix* pMatrix = nullptr); + bool DrawLines(CFDE_Pen* pPen, + float fPenWidth, + const std::vector<CFX_PointF>& points, + const CFX_Matrix* pMatrix = nullptr); + bool DrawLine(CFDE_Pen* pPen, + float fPenWidth, + const CFX_PointF& pt1, + const CFX_PointF& pt2, + const CFX_Matrix* pMatrix = nullptr); + bool DrawPath(CFDE_Pen* pPen, + float fPenWidth, + const CFDE_Path* pPath, + const CFX_Matrix* pMatrix = nullptr); + bool DrawPolygon(CFDE_Pen* pPen, + float fPenWidth, + const std::vector<CFX_PointF>& points, + const CFX_Matrix* pMatrix = nullptr); + bool DrawRectangle(CFDE_Pen* pPen, + float fPenWidth, + const CFX_RectF& rect, + const CFX_Matrix* pMatrix = nullptr); + bool FillClosedCurve(CFDE_Brush* pBrush, + const std::vector<CFX_PointF>& points, + float fTension = 0.5f, + const CFX_Matrix* pMatrix = nullptr); + bool FillEllipse(CFDE_Brush* pBrush, + const CFX_RectF& rect, + const CFX_Matrix* pMatrix = nullptr); + bool FillPath(CFDE_Brush* pBrush, + const CFDE_Path* pPath, + const CFX_Matrix* pMatrix = nullptr); + bool FillPolygon(CFDE_Brush* pBrush, + const std::vector<CFX_PointF>& points, + const CFX_Matrix* pMatrix = nullptr); + bool FillRectangle(CFDE_Brush* pBrush, + const CFX_RectF& rect, + const CFX_Matrix* pMatrix = nullptr); + + bool DrawSolidString(CFDE_Brush* pBrush, + const CFX_RetainPtr<CFGAS_GEFont>& pFont, + const FXTEXT_CHARPOS* pCharPos, + int32_t iCount, + float fFontSize, + const CFX_Matrix* pMatrix); + bool DrawStringPath(CFDE_Brush* pBrush, + const CFX_RetainPtr<CFGAS_GEFont>& pFont, + const FXTEXT_CHARPOS* pCharPos, + int32_t iCount, + float fFontSize, + const CFX_Matrix* pMatrix); + + protected: + bool CreatePen(CFDE_Pen* pPen, + float fPenWidth, + CFX_GraphStateData& graphState); + + CFX_RenderDevice* const m_pDevice; + CFX_RectF m_rtClip; + bool m_bOwnerDevice; + int32_t m_iCharCount; +}; + +#endif // XFA_FDE_CFDE_RENDERDEVICE_H_ |