diff options
Diffstat (limited to 'core/fxge/renderdevicedriver_iface.h')
-rw-r--r-- | core/fxge/renderdevicedriver_iface.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/core/fxge/renderdevicedriver_iface.h b/core/fxge/renderdevicedriver_iface.h new file mode 100644 index 0000000000..7dd7a104f3 --- /dev/null +++ b/core/fxge/renderdevicedriver_iface.h @@ -0,0 +1,115 @@ +// Copyright 2016 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 CORE_FXGE_RENDERDEVICEDRIVER_IFACE_H_ +#define CORE_FXGE_RENDERDEVICEDRIVER_IFACE_H_ + +#include <memory> + +#include "core/fxcrt/fx_coordinates.h" +#include "core/fxcrt/fx_system.h" +#include "core/fxcrt/retain_ptr.h" + +class CFX_DIBitmap; +class CFX_DIBSource; +class CFX_Font; +class CFX_GraphStateData; +class CFX_ImageRenderer; +class CFX_Matrix; +class CFX_PathData; +class CPDF_ShadingPattern; +class FXTEXT_CHARPOS; +class PauseIndicatorIface; +struct FX_RECT; + +class RenderDeviceDriverIface { + public: + virtual ~RenderDeviceDriverIface(); + + virtual int GetDeviceCaps(int caps_id) const = 0; + virtual CFX_Matrix GetCTM() const; + + virtual bool StartRendering(); + virtual void EndRendering(); + virtual void SaveState() = 0; + virtual void RestoreState(bool bKeepSaved) = 0; + + virtual bool SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) = 0; + virtual bool SetClip_PathStroke(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState); + virtual bool DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + uint32_t fill_color, + uint32_t stroke_color, + int fill_mode, + int blend_type) = 0; + virtual bool SetPixel(int x, int y, uint32_t color); + virtual bool FillRectWithBlend(const FX_RECT* pRect, + uint32_t fill_color, + int blend_type); + virtual bool DrawCosmeticLine(const CFX_PointF& ptMoveTo, + const CFX_PointF& ptLineTo, + uint32_t color, + int blend_type); + + virtual bool GetClipBox(FX_RECT* pRect) = 0; + virtual bool GetDIBits(const RetainPtr<CFX_DIBitmap>& pBitmap, + int left, + int top); + virtual RetainPtr<CFX_DIBitmap> GetBackDrop(); + virtual bool SetDIBits(const RetainPtr<CFX_DIBSource>& pBitmap, + uint32_t color, + const FX_RECT* pSrcRect, + int dest_left, + int dest_top, + int blend_type) = 0; + virtual bool StretchDIBits(const RetainPtr<CFX_DIBSource>& pBitmap, + uint32_t color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + uint32_t flags, + int blend_type) = 0; + virtual bool StartDIBits(const RetainPtr<CFX_DIBSource>& pBitmap, + int bitmap_alpha, + uint32_t color, + const CFX_Matrix* pMatrix, + uint32_t flags, + std::unique_ptr<CFX_ImageRenderer>* handle, + int blend_type) = 0; + virtual bool ContinueDIBits(CFX_ImageRenderer* handle, + PauseIndicatorIface* pPause); + virtual bool DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + const CFX_Matrix* pObject2Device, + float font_size, + uint32_t color); + virtual int GetDriverType() const; + virtual void ClearDriver(); + virtual bool DrawShading(const CPDF_ShadingPattern* pPattern, + const CFX_Matrix* pMatrix, + const FX_RECT& clip_rect, + int alpha, + bool bAlphaMode); + virtual bool SetBitsWithMask(const RetainPtr<CFX_DIBSource>& pBitmap, + const RetainPtr<CFX_DIBSource>& pMask, + int left, + int top, + int bitmap_alpha, + int blend_type); +#if defined _SKIA_SUPPORT_ || defined _SKIA_SUPPORT_PATHS_ + virtual void Flush(); +#endif +}; + +#endif // CORE_FXGE_RENDERDEVICEDRIVER_IFACE_H_ |