- Sync in rev 37720: Magnus Olsen, add GdiGetBitmapBitsSize is a new api from windows...
[reactos.git] / reactos / dll / win32 / gdi32 / include / gdi32p.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: lib/gdi32/include/gdi32p.h
5 * PURPOSE: User-Mode Win32 GDI Library Private Header
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
7 */
8
9
10 /* DATA **********************************************************************/
11
12 extern PGDI_TABLE_ENTRY GdiHandleTable;
13 extern PGDI_SHARED_HANDLE_TABLE GdiSharedHandleTable;
14 extern HANDLE hProcessHeap;
15 extern HANDLE CurrentProcessId;
16 extern DWORD GDI_BatchLimit;
17 extern PDEVCAPS GdiDevCaps;
18
19 typedef INT
20 (CALLBACK* EMFPLAYPROC)(
21 HDC hdc,
22 INT iFunction,
23 HANDLE hPageQuery
24 );
25
26 /* DEFINES *******************************************************************/
27
28 #define HANDLE_LIST_INC 20
29
30 #define METAFILE_MEMORY 1
31 #define METAFILE_DISK 2
32
33 /* MACRO ********************************************************************/
34
35 #define ROP_USES_SOURCE(Rop) (((Rop) << 2 ^ Rop) & 0xCC0000)
36
37 /* TYPES *********************************************************************/
38
39 // Based on wmfapi.h and Wine.
40 typedef struct tagMETAFILEDC {
41 PVOID pvMetaBuffer;
42 HANDLE hFile;
43 DWORD Size;
44 METAHEADER mh;
45 UINT handles_size, cur_handles;
46 HGDIOBJ *handles;
47
48 // more DC object stuff.
49 HGDIOBJ Pen;
50 HGDIOBJ Brush;
51 HGDIOBJ Palette;
52 HGDIOBJ Font;
53
54 WCHAR Filename[MAX_PATH+2];
55 // Add more later.
56 } METAFILEDC,*PMETAFILEDC;
57
58 // Metafile Entry handle
59 typedef struct tagMF_ENTRY {
60 LIST_ENTRY List;
61 HGDIOBJ hmDC; // Handle return from NtGdiCreateClientObj.
62 PMETAFILEDC pmfDC;
63 } MF_ENTRY, *PMF_ENTRY;
64
65 typedef struct tagENHMETAFILE {
66 PVOID pvMetaBuffer;
67 HANDLE hFile; /* Handle for disk based MetaFile */
68 DWORD Size;
69 INT iType;
70 PENHMETAHEADER emf;
71 UINT handles_size, cur_handles;
72 HGDIOBJ *handles;
73 INT horzres, vertres;
74 INT horzsize, vertsize;
75 INT logpixelsx, logpixelsy;
76 INT bitspixel;
77 INT textcaps;
78 INT rastercaps;
79 INT technology;
80 INT planes;
81 } ENHMETAFILE,*PENHMETAFILE;
82
83
84 #define PDEV_UMPD_ID 0xFEDCBA98
85 // UMPDEV flags
86 #define UMPDEV_NO_ESCAPE 0x0002
87 #define UMPDEV_SUPPORT_ESCAPE 0x0004
88 typedef struct _UMPDEV
89 {
90 DWORD Sig; // Init with PDEV_UMPD_ID
91 struct _UMPDEV *pumpdNext;
92 PDRIVER_INFO_5W pdi5Info;
93 HMODULE hModule;
94 DWORD dwFlags;
95 DWORD dwDriverAttributes;
96 DWORD dwConfigVersion; // Number of times the configuration
97 // file for this driver has been upgraded
98 // or downgraded since the last spooler restart.
99 DWORD dwDriverCount; // After init should be 2
100 DWORD WOW64_UMPDev;
101 DWORD WOW64_hMod;
102 WCHAR String[188];
103 } UMPDEV, *PUMPDEV;
104
105 #define LOCALFONT_COUNT 10
106 typedef struct _LOCALFONT
107 {
108 FONT_ATTR lfa[LOCALFONT_COUNT];
109 } LOCALFONT, *PLOCALFONT;
110
111 /* FUNCTIONS *****************************************************************/
112
113 PVOID
114 HEAP_alloc(DWORD len);
115
116 NTSTATUS
117 HEAP_strdupA2W(
118 LPWSTR* ppszW,
119 LPCSTR lpszA
120 );
121
122 VOID
123 HEAP_free(LPVOID memory);
124
125 BOOL
126 FASTCALL
127 TextMetricW2A(
128 TEXTMETRICA *tma,
129 TEXTMETRICW *tmw
130 );
131
132 BOOL
133 FASTCALL
134 NewTextMetricW2A(
135 NEWTEXTMETRICA *tma,
136 NEWTEXTMETRICW *tmw
137 );
138
139 BOOL
140 FASTCALL
141 NewTextMetricExW2A(
142 NEWTEXTMETRICEXA *tma,
143 NEWTEXTMETRICEXW *tmw
144 );
145
146 BOOL
147 FASTCALL
148 DeleteRegion( HRGN );
149
150 BOOL
151 GdiIsHandleValid(HGDIOBJ hGdiObj);
152
153 BOOL
154 GdiGetHandleUserData(
155 HGDIOBJ hGdiObj,
156 DWORD ObjectType,
157 PVOID *UserData
158 );
159
160 PLDC
161 GdiGetLDC(HDC hDC);
162
163 HGDIOBJ
164 WINAPI
165 GdiFixUpHandle(HGDIOBJ hGO);
166
167 BOOL
168 WINAPI
169 CalculateColorTableSize(
170 CONST BITMAPINFOHEADER *BitmapInfoHeader,
171 UINT *ColorSpec,
172 UINT *ColorTableSize
173 );
174
175 LPBITMAPINFO
176 WINAPI
177 ConvertBitmapInfo(
178 CONST BITMAPINFO *BitmapInfo,
179 UINT ColorSpec,
180 UINT *BitmapInfoSize,
181 BOOL FollowedByData
182 );
183
184 DEVMODEW *
185 NTAPI
186 GdiConvertToDevmodeW(DEVMODEA *dm);
187
188 DWORD
189 WINAPI
190 GetAndSetDCDWord( HDC, INT, DWORD, DWORD, DWORD, DWORD );
191
192 DWORD
193 WINAPI
194 GetDCDWord( HDC, INT, DWORD);
195
196 HGDIOBJ
197 WINAPI
198 GetDCObject( HDC, INT);
199
200 VOID
201 NTAPI
202 LogFontA2W(
203 LPLOGFONTW pW,
204 CONST LOGFONTA *pA
205 );
206
207 VOID
208 NTAPI
209 LogFontW2A(
210 LPLOGFONTA pA,
211 CONST LOGFONTW *pW
212 );
213
214 VOID
215 WINAPI
216 EnumLogFontExW2A(
217 LPENUMLOGFONTEXA fontA,
218 CONST ENUMLOGFONTEXW *fontW );
219
220 /* FIXME: Put in some public header */
221 UINT
222 WINAPI
223 UserRealizePalette(HDC hDC);
224
225 int
226 WINAPI
227 GdiAddFontResourceW(LPCWSTR lpszFilename,FLONG fl,DESIGNVECTOR *pdv);
228
229 VOID
230 WINAPI
231 GdiSetLastError( DWORD dwErrCode );
232
233 DWORD WINAPI GdiGetCodePage(HDC);
234 UINT FASTCALL DIB_BitmapBitsSize( PBITMAPINFO );
235
236 int
237 WINAPI
238 GdiGetBitmapBitsSize(BITMAPINFO *lpbmi);
239
240 /* EOF */