• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef _FX_GE_WIN32_H_
8 #define _FX_GE_WIN32_H_
9 #ifdef _WIN32
10 #ifndef _WINDOWS_
11 #include <windows.h>
12 #endif
13 #define WINDIB_OPEN_MEMORY    0x1
14 #define WINDIB_OPEN_PATHNAME  0x2
15 typedef struct  WINDIB_Open_Args_ {
16 
17     int         flags;
18 
19     const FX_BYTE*  memory_base;
20 
21     size_t    memory_size;
22 
23     FX_LPCWSTR  path_name;
24 } WINDIB_Open_Args_;
25 class CFX_WindowsDIB : public CFX_DIBitmap
26 {
27 public:
28 
29     static CFX_ByteString	GetBitmapInfo(const CFX_DIBitmap* pBitmap);
30 
31     static CFX_DIBitmap* LoadFromBuf(BITMAPINFO* pbmi, void* pData);
32 
33     static HBITMAP		GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC);
34 
35     static CFX_DIBitmap* LoadFromDDB(HDC hDC, HBITMAP hBitmap, FX_DWORD* pPalette = NULL, FX_DWORD size = 256);
36 
37     static CFX_DIBitmap* LoadFromFile(FX_LPCWSTR filename);
38 
LoadFromFile(FX_LPCSTR filename)39     static CFX_DIBitmap* LoadFromFile(FX_LPCSTR filename)
40     {
41         return LoadFromFile(CFX_WideString::FromLocal(filename));
42     }
43 
44     static CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args);
45 
46     CFX_WindowsDIB(HDC hDC, int width, int height);
47 
48     ~CFX_WindowsDIB();
49 
GetDC()50     HDC					GetDC() const
51     {
52         return m_hMemDC;
53     }
54 
GetWindowsBitmap()55     HBITMAP				GetWindowsBitmap() const
56     {
57         return m_hBitmap;
58     }
59 
60     void				LoadFromDevice(HDC hDC, int left, int top);
61 
62     void				SetToDevice(HDC hDC, int left, int top);
63 protected:
64 
65     HDC					m_hMemDC;
66 
67     HBITMAP				m_hBitmap;
68 
69     HBITMAP				m_hOldBitmap;
70 };
71 class CFX_WindowsDevice : public CFX_RenderDevice
72 {
73 public:
74     static IFX_RenderDeviceDriver*	CreateDriver(HDC hDC, FX_BOOL bCmykOutput = FALSE);
75 
76     CFX_WindowsDevice(HDC hDC, FX_BOOL bCmykOutput = FALSE, FX_BOOL bForcePSOutput = FALSE, int psLevel = 2);
77 
78     HDC		GetDC() const;
79 
80     FX_BOOL m_bForcePSOutput;
81 
82     static int m_psLevel;
83 };
84 class CFX_WinBitmapDevice : public CFX_RenderDevice
85 {
86 public:
87 
88     CFX_WinBitmapDevice(int width, int height, FXDIB_Format format);
89 
90     ~CFX_WinBitmapDevice();
91 
GetDC()92     HDC		GetDC()
93     {
94         return m_hDC;
95     }
96 protected:
97 
98     HBITMAP	m_hBitmap;
99 
100     HBITMAP m_hOldBitmap;
101 
102     HDC		m_hDC;
103 };
104 #endif
105 #endif
106