| // 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 _FDE_RENDERDEVICE | |
| #define _FDE_RENDERDEVICE | |
| class IFDE_Pen; | |
| class IFDE_Brush; | |
| class IFDE_Image; | |
| 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(IFDE_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(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) = 0; | |
| 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) = 0; | |
| virtual FX_BOOL DrawEllipse(IFDE_Pen* pPen, | |
| FX_FLOAT fPenWidth, | |
| const CFX_RectF& rect, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL DrawLines(IFDE_Pen* pPen, | |
| FX_FLOAT fPenWidth, | |
| const CFX_PointsF& points, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL DrawLine(IFDE_Pen* pPen, | |
| FX_FLOAT fPenWidth, | |
| const CFX_PointF& pt1, | |
| const CFX_PointF& pt2, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL DrawPath(IFDE_Pen* pPen, | |
| FX_FLOAT fPenWidth, | |
| const IFDE_Path* pPath, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL DrawPolygon(IFDE_Pen* pPen, | |
| FX_FLOAT fPenWidth, | |
| const CFX_PointsF& points, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL DrawRectangle(IFDE_Pen* pPen, | |
| FX_FLOAT fPenWidth, | |
| const CFX_RectF& rect, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL FillClosedCurve(IFDE_Brush* pBrush, | |
| const CFX_PointsF& points, | |
| FX_FLOAT fTension = 0.5f, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL FillEllipse(IFDE_Brush* pBrush, | |
| const CFX_RectF& rect, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL FillPath(IFDE_Brush* pBrush, | |
| const IFDE_Path* pPath, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL FillPolygon(IFDE_Brush* pBrush, | |
| const CFX_PointsF& points, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| virtual FX_BOOL FillRectangle(IFDE_Brush* pBrush, | |
| const CFX_RectF& rect, | |
| const CFX_Matrix* pMatrix = NULL) = 0; | |
| }; | |
| #endif |