• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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