| // 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_RENDERDEVICE_H_ |
| #define XFA_FDE_FDE_RENDERDEVICE_H_ |
| |
| #include "core/fxcrt/include/fx_coordinates.h" |
| #include "core/fxge/include/fx_font.h" |
| #include "core/fxge/include/fx_ge.h" |
| #include "xfa/fde/fde_path.h" |
| #include "xfa/fgas/font/fgas_font.h" |
| |
| class CFDE_Pen; |
| class CFDE_Brush; |
| class CFX_DIBitmap; |
| class CFX_DIBSource; |
| |
| typedef struct FDE_HDEVICESTATE_ { void* pData; } * FDE_HDEVICESTATE; |
| |
| class IFDE_RenderDevice { |
| public: |
| static IFDE_RenderDevice* Create(CFX_DIBitmap* pBitmap, |
| FX_BOOL bRgbByteOrder = FALSE); |
| static IFDE_RenderDevice* Create(CFX_RenderDevice* pDevice); |
| virtual ~IFDE_RenderDevice() {} |
| virtual void Release() = 0; |
| |
| virtual int32_t GetWidth() const = 0; |
| virtual int32_t GetHeight() const = 0; |
| virtual FDE_HDEVICESTATE SaveState() = 0; |
| virtual void RestoreState(FDE_HDEVICESTATE hState) = 0; |
| virtual FX_BOOL SetClipPath(const IFDE_Path* pClip) = 0; |
| virtual IFDE_Path* GetClipPath() const = 0; |
| virtual FX_BOOL SetClipRect(const CFX_RectF& rtClip) = 0; |
| virtual const CFX_RectF& GetClipRect() = 0; |
| |
| virtual FX_FLOAT GetDpiX() const = 0; |
| virtual FX_FLOAT GetDpiY() const = 0; |
| |
| 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) = 0; |
| virtual FX_BOOL DrawString(CFDE_Brush* pBrush, |
| IFX_Font* pFont, |
| const FXTEXT_CHARPOS* pCharPos, |
| int32_t iCount, |
| FX_FLOAT fFontSize, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL DrawBezier(CFDE_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) = 0; |
| virtual FX_BOOL DrawCurve(CFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointsF& points, |
| FX_BOOL bClosed, |
| FX_FLOAT fTension = 0.5f, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL DrawEllipse(CFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL DrawLines(CFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointsF& points, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL DrawLine(CFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointF& pt1, |
| const CFX_PointF& pt2, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL DrawPath(CFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const IFDE_Path* pPath, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL DrawPolygon(CFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_PointsF& points, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL DrawRectangle(CFDE_Pen* pPen, |
| FX_FLOAT fPenWidth, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL FillClosedCurve(CFDE_Brush* pBrush, |
| const CFX_PointsF& points, |
| FX_FLOAT fTension = 0.5f, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL FillEllipse(CFDE_Brush* pBrush, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL FillPath(CFDE_Brush* pBrush, |
| const IFDE_Path* pPath, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL FillPolygon(CFDE_Brush* pBrush, |
| const CFX_PointsF& points, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| virtual FX_BOOL FillRectangle(CFDE_Brush* pBrush, |
| const CFX_RectF& rect, |
| const CFX_Matrix* pMatrix = NULL) = 0; |
| }; |
| |
| #endif // XFA_FDE_FDE_RENDERDEVICE_H_ |