1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _FDE_RENDERDEVICE 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define _FDE_RENDERDEVICE 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFDE_Pen; 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFDE_Brush; 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFDE_Image; 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFX_DIBitmap; 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFX_DIBSource; 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmanntypedef struct _FDE_HDEVICESTATE { void* pData; } * FDE_HDEVICESTATE; 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFDE_RenderDevice { 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static IFDE_RenderDevice* Create(CFX_DIBitmap* pBitmap, 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRgbByteOrder = FALSE); 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static IFDE_RenderDevice* Create(CFX_RenderDevice* pDevice); 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~IFDE_RenderDevice() {} 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void Release() = 0; 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t GetWidth() const = 0; 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t GetHeight() const = 0; 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FDE_HDEVICESTATE SaveState() = 0; 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void RestoreState(FDE_HDEVICESTATE hState) = 0; 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL SetClipPath(const IFDE_Path* pClip) = 0; 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual IFDE_Path* GetClipPath() const = 0; 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL SetClipRect(const CFX_RectF& rtClip) = 0; 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual const CFX_RectF& GetClipRect() = 0; 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_FLOAT GetDpiX() const = 0; 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_FLOAT GetDpiY() const = 0; 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawImage(CFX_DIBSource* pDib, 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_RectF* pSrcRect, 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_RectF& dstRect, 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pImgMatrix = NULL, 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pDevMatrix = NULL) = 0; 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawString(IFDE_Brush* pBrush, 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFX_Font* pFont, 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const FXTEXT_CHARPOS* pCharPos, 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount, 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fFontSize, 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawBezier(IFDE_Pen* pPen, 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointF& pt1, 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointF& pt2, 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointF& pt3, 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointF& pt4, 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawCurve(IFDE_Pen* pPen, 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointsF& points, 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bClosed, 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fTension = 0.5f, 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawEllipse(IFDE_Pen* pPen, 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_RectF& rect, 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawLines(IFDE_Pen* pPen, 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointsF& points, 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawLine(IFDE_Pen* pPen, 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointF& pt1, 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointF& pt2, 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawPath(IFDE_Pen* pPen, 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const IFDE_Path* pPath, 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawPolygon(IFDE_Pen* pPen, 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointsF& points, 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawRectangle(IFDE_Pen* pPen, 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fPenWidth, 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_RectF& rect, 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL FillClosedCurve(IFDE_Brush* pBrush, 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointsF& points, 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fTension = 0.5f, 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL FillEllipse(IFDE_Brush* pBrush, 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_RectF& rect, 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL FillPath(IFDE_Brush* pBrush, 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const IFDE_Path* pPath, 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL FillPolygon(IFDE_Brush* pBrush, 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_PointsF& points, 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL FillRectangle(IFDE_Brush* pBrush, 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_RectF& rect, 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix = NULL) = 0; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 104