Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fdp / include / fde_rdv.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FDE_RENDERDEVICE\r
8 #define _FDE_RENDERDEVICE\r
9 class IFDE_Pen;\r
10 class IFDE_Brush;\r
11 class IFDE_Image;\r
12 class CFX_DIBitmap;\r
13 class CFX_DIBSource;\r
14 class IFDE_RenderDevice;\r
15 typedef struct _FDE_HDEVICESTATE {\r
16     FX_LPVOID pData;\r
17 } * FDE_HDEVICESTATE;\r
18 class IFDE_RenderDevice\r
19 {\r
20 public:\r
21     static IFDE_RenderDevice*   Create(CFX_DIBitmap *pBitmap, FX_BOOL bRgbByteOrder = FALSE);\r
22     static IFDE_RenderDevice*   Create(CFX_RenderDevice *pDevice);\r
23     virtual void                                Release() = 0;\r
24 \r
25     virtual FX_INT32                    GetWidth() const = 0;\r
26     virtual FX_INT32                    GetHeight() const = 0;\r
27     virtual FDE_HDEVICESTATE    SaveState() = 0;\r
28     virtual void                                RestoreState(FDE_HDEVICESTATE hState) = 0;\r
29     virtual FX_BOOL                             SetClipPath(const IFDE_Path *pClip) = 0;\r
30     virtual IFDE_Path*                  GetClipPath() const = 0;\r
31     virtual FX_BOOL                             SetClipRect(const CFX_RectF &rtClip) = 0;\r
32     virtual const CFX_RectF&    GetClipRect() = 0;\r
33 \r
34     virtual FX_FLOAT                    GetDpiX() const = 0;\r
35     virtual FX_FLOAT                    GetDpiY() const = 0;\r
36 \r
37     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;\r
38     virtual FX_BOOL                             DrawString(IFDE_Brush *pBrush, IFX_Font *pFont, const FXTEXT_CHARPOS *pCharPos, FX_INT32 iCount, FX_FLOAT fFontSize, const CFX_Matrix *pMatrix = NULL) = 0;\r
39     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;\r
40     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;\r
41     virtual FX_BOOL                             DrawEllipse(IFDE_Pen *pPen, FX_FLOAT fPenWidth, const CFX_RectF &rect, const CFX_Matrix *pMatrix = NULL) = 0;\r
42     virtual FX_BOOL                             DrawLines(IFDE_Pen *pPen, FX_FLOAT fPenWidth, const CFX_PointsF &points, const CFX_Matrix *pMatrix = NULL) = 0;\r
43     virtual FX_BOOL                             DrawLine(IFDE_Pen *pPen, FX_FLOAT fPenWidth, const CFX_PointF &pt1, const CFX_PointF &pt2, const CFX_Matrix *pMatrix = NULL) = 0;\r
44     virtual FX_BOOL                             DrawPath(IFDE_Pen *pPen, FX_FLOAT fPenWidth, const IFDE_Path *pPath, const CFX_Matrix *pMatrix = NULL) = 0;\r
45     virtual FX_BOOL                             DrawPolygon(IFDE_Pen *pPen, FX_FLOAT fPenWidth, const CFX_PointsF &points, const CFX_Matrix *pMatrix = NULL) = 0;\r
46     virtual FX_BOOL                             DrawRectangle(IFDE_Pen *pPen, FX_FLOAT fPenWidth, const CFX_RectF &rect, const CFX_Matrix *pMatrix = NULL) = 0;\r
47     virtual FX_BOOL                             FillClosedCurve(IFDE_Brush *pBrush, const CFX_PointsF &points, FX_FLOAT fTension = 0.5f, const CFX_Matrix *pMatrix = NULL) = 0;\r
48     virtual FX_BOOL                             FillEllipse(IFDE_Brush* pBrush, const CFX_RectF& rect, const CFX_Matrix *pMatrix = NULL) = 0;\r
49     virtual FX_BOOL                             FillPath(IFDE_Brush *pBrush, const IFDE_Path *pPath, const CFX_Matrix *pMatrix = NULL) = 0;\r
50     virtual FX_BOOL                             FillPolygon(IFDE_Brush *pBrush, const CFX_PointsF &points, const CFX_Matrix *pMatrix = NULL) = 0;\r
51     virtual FX_BOOL                             FillRectangle(IFDE_Brush *pBrush, const CFX_RectF &rect, const CFX_Matrix *pMatrix = NULL) = 0;\r
52 };\r
53 #endif\r