1 // Copyright 2020 The PDFium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CORE_FXGE_WIN32_CTEXT_ONLY_PRINTER_DRIVER_H_ 6 #define CORE_FXGE_WIN32_CTEXT_ONLY_PRINTER_DRIVER_H_ 7 8 #include <stdint.h> 9 #include <windows.h> 10 11 #include <memory> 12 13 #include "core/fxge/cfx_windowsrenderdevice.h" 14 15 class CTextOnlyPrinterDriver final : public RenderDeviceDriverIface { 16 public: 17 explicit CTextOnlyPrinterDriver(HDC hDC); 18 ~CTextOnlyPrinterDriver() override; 19 20 private: 21 // RenderDeviceDriverIface: 22 DeviceType GetDeviceType() const override; 23 int GetDeviceCaps(int caps_id) const override; 24 void SaveState() override; 25 void RestoreState(bool bKeepSaved) override; 26 bool SetClip_PathFill(const CFX_Path& path, 27 const CFX_Matrix* pObject2Device, 28 const CFX_FillRenderOptions& fill_options) override; 29 bool SetClip_PathStroke(const CFX_Path& path, 30 const CFX_Matrix* pObject2Device, 31 const CFX_GraphStateData* pGraphState) override; 32 bool DrawPath(const CFX_Path& path, 33 const CFX_Matrix* pObject2Device, 34 const CFX_GraphStateData* pGraphState, 35 uint32_t fill_color, 36 uint32_t stroke_color, 37 const CFX_FillRenderOptions& fill_options) override; 38 FX_RECT GetClipBox() const override; 39 bool SetDIBits(RetainPtr<const CFX_DIBBase> bitmap, 40 uint32_t color, 41 const FX_RECT& src_rect, 42 int left, 43 int top, 44 BlendMode blend_type) override; 45 bool StretchDIBits(RetainPtr<const CFX_DIBBase> bitmap, 46 uint32_t color, 47 int dest_left, 48 int dest_top, 49 int dest_width, 50 int dest_height, 51 const FX_RECT* pClipRect, 52 const FXDIB_ResampleOptions& options, 53 BlendMode blend_type) override; 54 StartResult StartDIBits(RetainPtr<const CFX_DIBBase> bitmap, 55 float alpha, 56 uint32_t color, 57 const CFX_Matrix& matrix, 58 const FXDIB_ResampleOptions& options, 59 BlendMode blend_type) override; 60 bool DrawDeviceText(pdfium::span<const TextCharPos> pCharPos, 61 CFX_Font* pFont, 62 const CFX_Matrix& mtObject2Device, 63 float font_size, 64 uint32_t color, 65 const CFX_TextRenderOptions& options) override; 66 bool MultiplyAlpha(float alpha) override; 67 bool MultiplyAlphaMask(RetainPtr<const CFX_DIBitmap> mask) override; 68 69 HDC m_hDC; 70 const int m_Width; 71 const int m_Height; 72 int m_nBitsPerPixel; 73 const int m_HorzSize; 74 const int m_VertSize; 75 float m_OriginY; 76 bool m_SetOrigin; 77 }; 78 79 #endif // CORE_FXGE_WIN32_CTEXT_ONLY_PRINTER_DRIVER_H_ 80