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