Fix windows-specific usage of CFX_WideStr::operator LPCWSTR().
[pdfium.git] / core / include / fxge / fx_ge_win32.h
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
39     static CFX_DIBitmap* LoadFromFile(FX_LPCSTR filename)
40     {
41         return LoadFromFile(CFX_WideString::FromLocal(filename).c_str());
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
50     HDC                                 GetDC() const
51     {
52         return m_hMemDC;
53     }
54
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
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