| // 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_FDE_GEDEVICE_H_ |
| #define XFA_FDE_FDE_GEDEVICE_H_ |
| |
| #include "xfa/fde/fde_renderdevice.h" |
| #include "xfa/fgas/crt/fgas_memory.h" |
| |
| class CFDE_FxgeDevice : public IFDE_RenderDevice, public CFX_Target { |
| public: |
| CFDE_FxgeDevice(CFX_RenderDevice* pDevice, FX_BOOL bOwnerDevice); |
| ~CFDE_FxgeDevice(); |
| virtual void Release() { delete this; } |
| |
| virtual int32_t GetWidth() const; |
| virtual int32_t GetHeight() const; |
| virtual FDE_HDEVICESTATE SaveState(); |
| virtual void RestoreState(FDE_HDEVICESTATE hState); |
| virtual FX_BOOL SetClipPath(const IFDE_Path* pClip); |
| virtual IFDE_Path* GetClipPath() const; |
| virtual FX_BOOL SetClipRect(const CFX_RectF& rtClip); |
| virtual const CFX_RectF& GetClipRect(); |
| |
| virtual FX_FLOAT GetDpiX() const; |
| virtual FX_FLOAT GetDpiY() const; |
| |
| virtual FX_BOOL DrawImage(CFX_DIBSource* pDib, |
| const CFX_RectF* pSrcRect, |
| const CFX_RectF& dstRect, |
| const CFX_Matrix* pImgMatrix = NULL, |
| const CFX_Matrix* pDevMatrix = NULL); |
| virtual FX_BOOL DrawString(IFDE_Brush* pBrush, |
| IFX_Font* pFont, |
| const FXTEXT_CHARPOS* pCharPos, |
| int32_t iCount, |
| FX_FLOAT fFontSize, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawBezier(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointF& pt1, |
| const CFX_PointF& pt2, |
| const CFX_PointF& pt3, |
| const CFX_PointF& pt4, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawCurve(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointsF& points, |
| FX_BOOL bClosed, |
| FX_FLOAT fTension = 0.5f, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawEllipse(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawLines(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointsF& points, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawLine(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointF& pt1, |
| const CFX_PointF& pt2, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawPath(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const IFDE_Path* pPath, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawPolygon(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointsF& points, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL DrawRectangle(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL FillClosedCurve(IFDE_Brush* pBrush, |
| const CFX_PointsF& points, |
| FX_FLOAT fTension = 0.5f, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL FillEllipse(IFDE_Brush* pBrush, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL FillPath(IFDE_Brush* pBrush, |
| const IFDE_Path* pPath, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL FillPolygon(IFDE_Brush* pBrush, |
| const CFX_PointsF& points, |
| const CFX_Matrix* pMatrix = NULL); |
| virtual FX_BOOL FillRectangle(IFDE_Brush* pBrush, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL); |
| FX_BOOL FillSolidPath(IFDE_Brush* pBrush, |
| const CFX_PathData* pPath, |
| const CFX_Matrix* pMatrix); |
| FX_BOOL FillHatchPath(IFDE_Brush* pBrush, |
| const CFX_PathData* pPath, |
| const CFX_Matrix* pMatrix); |
| FX_BOOL FillTexturePath(IFDE_Brush* pBrush, |
| const CFX_PathData* pPath, |
| const CFX_Matrix* pMatrix); |
| FX_BOOL FillLinearGradientPath(IFDE_Brush* pBrush, |
| const CFX_PathData* pPath, |
| const CFX_Matrix* pMatrix); |
| FX_BOOL DrawSolidString(IFDE_Brush* pBrush, |
| IFX_Font* pFont, |
| const FXTEXT_CHARPOS* pCharPos, |
| int32_t iCount, |
| FX_FLOAT fFontSize, |
| const CFX_Matrix* pMatrix); |
| FX_BOOL DrawStringPath(IFDE_Brush* pBrush, |
| IFX_Font* pFont, |
| const FXTEXT_CHARPOS* pCharPos, |
| int32_t iCount, |
| FX_FLOAT fFontSize, |
| const CFX_Matrix* pMatrix); |
| |
| protected: |
| FX_BOOL CreatePen(IFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| CFX_GraphStateData& graphState); |
| FX_BOOL WrapTexture(int32_t iWrapMode, |
| const CFX_DIBitmap* pBitmap, |
| const CFX_PathData* pPath, |
| const CFX_Matrix* pMatrix); |
| CFX_RenderDevice* m_pDevice; |
| CFX_RectF m_rtClip; |
| FX_BOOL m_bOwnerDevice; |
| FXTEXT_CHARPOS* m_pCharPos; |
| int32_t m_iCharCount; |
| }; |
| |
| #endif // XFA_FDE_FDE_GEDEVICE_H_ |