You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.6 KiB
127 lines
4.6 KiB
// 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 <vector> |
|
|
|
#include "core/fxge/cfx_renderdevice.h" |
|
#include "xfa/fgas/font/cfgas_gefont.h" |
|
|
|
class CFDE_Brush; |
|
class CFDE_Path; |
|
class CFDE_Pen; |
|
class CFX_GraphStateData; |
|
|
|
class CFDE_RenderDevice { |
|
public: |
|
CFDE_RenderDevice(CFX_RenderDevice* pDevice, bool bOwnerDevice); |
|
~CFDE_RenderDevice(); |
|
|
|
int32_t GetWidth() const; |
|
int32_t GetHeight() const; |
|
void SaveState(); |
|
void RestoreState(); |
|
bool SetClipPath(const CFDE_Path* pClip); |
|
CFDE_Path* GetClipPath() const; |
|
bool SetClipRect(const CFX_RectF& rtClip); |
|
const CFX_RectF& GetClipRect(); |
|
|
|
FX_FLOAT GetDpiX() const; |
|
FX_FLOAT GetDpiY() const; |
|
|
|
bool DrawImage(CFX_DIBSource* pDib, |
|
const CFX_RectF* pSrcRect, |
|
const CFX_RectF& dstRect, |
|
const CFX_Matrix* pImgMatrix = nullptr, |
|
const CFX_Matrix* pDevMatrix = nullptr); |
|
bool DrawString(CFDE_Brush* pBrush, |
|
const CFX_RetainPtr<CFGAS_GEFont>& pFont, |
|
const FXTEXT_CHARPOS* pCharPos, |
|
int32_t iCount, |
|
FX_FLOAT fFontSize, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
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 = nullptr); |
|
bool DrawCurve(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
const std::vector<CFX_PointF>& points, |
|
bool bClosed, |
|
FX_FLOAT fTension = 0.5f, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool DrawEllipse(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
const CFX_RectF& rect, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool DrawLines(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
const std::vector<CFX_PointF>& points, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool DrawLine(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
const CFX_PointF& pt1, |
|
const CFX_PointF& pt2, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool DrawPath(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
const CFDE_Path* pPath, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool DrawPolygon(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
const std::vector<CFX_PointF>& points, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool DrawRectangle(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
const CFX_RectF& rect, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool FillClosedCurve(CFDE_Brush* pBrush, |
|
const std::vector<CFX_PointF>& points, |
|
FX_FLOAT fTension = 0.5f, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool FillEllipse(CFDE_Brush* pBrush, |
|
const CFX_RectF& rect, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool FillPath(CFDE_Brush* pBrush, |
|
const CFDE_Path* pPath, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool FillPolygon(CFDE_Brush* pBrush, |
|
const std::vector<CFX_PointF>& points, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
bool FillRectangle(CFDE_Brush* pBrush, |
|
const CFX_RectF& rect, |
|
const CFX_Matrix* pMatrix = nullptr); |
|
|
|
bool DrawSolidString(CFDE_Brush* pBrush, |
|
const CFX_RetainPtr<CFGAS_GEFont>& pFont, |
|
const FXTEXT_CHARPOS* pCharPos, |
|
int32_t iCount, |
|
FX_FLOAT fFontSize, |
|
const CFX_Matrix* pMatrix); |
|
bool DrawStringPath(CFDE_Brush* pBrush, |
|
const CFX_RetainPtr<CFGAS_GEFont>& pFont, |
|
const FXTEXT_CHARPOS* pCharPos, |
|
int32_t iCount, |
|
FX_FLOAT fFontSize, |
|
const CFX_Matrix* pMatrix); |
|
|
|
protected: |
|
bool CreatePen(CFDE_Pen* pPen, |
|
FX_FLOAT fPenWidth, |
|
CFX_GraphStateData& graphState); |
|
|
|
CFX_RenderDevice* const m_pDevice; |
|
CFX_RectF m_rtClip; |
|
bool m_bOwnerDevice; |
|
int32_t m_iCharCount; |
|
}; |
|
|
|
#endif // XFA_FDE_FDE_GEDEVICE_H_
|
|
|