Merge to trunk HEAD(r36856)
[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 #define ROP_USES_SOURCE(Rop) ((Rop << 2) ^ Rop) & 0xCC0000
35
36 /* TYPES *********************************************************************/
37
38 // Based on wmfapi.h and Wine.
39 typedef struct tagMETAFILEDC {
40 PVOID pvMetaBuffer;
41 HANDLE hFile;
42 DWORD Size;
43 METAHEADER mh;
44 UINT handles_size, cur_handles;
45 HGDIOBJ *handles;
46
47 // more DC object stuff.
48 HGDIOBJ Pen;
49 HGDIOBJ Brush;
50 HGDIOBJ Palette;
51 HGDIOBJ Font;
52
53 WCHAR Filename[MAX_PATH+2];
54 // Add more later.
55 } METAFILEDC,*PMETAFILEDC;
56
57 // Metafile Entry handle
58 typedef struct tagMF_ENTRY {
59 LIST_ENTRY List;
60 HGDIOBJ hmDC; // Handle return from NtGdiCreateClientObj.
61 PMETAFILEDC pmfDC;
62 } MF_ENTRY, *PMF_ENTRY;
63
64 typedef struct tagENHMETAFILE {
65 PVOID pvMetaBuffer;
66 HANDLE hFile; /* Handle for disk based MetaFile */
67 DWORD Size;
68 INT iType;
69 PENHMETAHEADER emf;
70 UINT handles_size, cur_handles;
71 HGDIOBJ *handles;
72 INT horzres, vertres;
73 INT horzsize, vertsize;
74 INT logpixelsx, logpixelsy;
75 INT bitspixel;
76 INT textcaps;
77 INT rastercaps;
78 INT technology;
79 INT planes;
80 } ENHMETAFILE,*PENHMETAFILE;
81
82
83 #define PDEV_UMPD_ID 0xFEDCBA98
84 // UMPDEV flags
85 #define UMPDEV_NO_ESCAPE 0x0002
86 #define UMPDEV_SUPPORT_ESCAPE 0x0004
87 typedef struct _UMPDEV
88 {
89 DWORD Sig; // Init with PDEV_UMPD_ID
90 struct _UMPDEV *pumpdNext;
91 PDRIVER_INFO_5W pdi5Info;
92 HMODULE hModule;
93 DWORD dwFlags;
94 DWORD dwDriverAttributes;
95 DWORD dwConfigVersion; // Number of times the configuration
96 // file for this driver has been upgraded
97 // or downgraded since the last spooler restart.
98 DWORD dwDriverCount; // After init should be 2
99 DWORD WOW64_UMPDev;
100 DWORD WOW64_hMod;
101 WCHAR String[188];
102 } UMPDEV, *PUMPDEV;
103
104
105 /* FUNCTIONS *****************************************************************/
106
107 PVOID
108 HEAP_alloc(DWORD len);
109
110 NTSTATUS
111 HEAP_strdupA2W(
112 LPWSTR* ppszW,
113 LPCSTR lpszA
114 );
115
116 VOID
117 HEAP_free(LPVOID memory);
118
119 BOOL
120 FASTCALL
121 TextMetricW2A(
122 TEXTMETRICA *tma,
123 TEXTMETRICW *tmw
124 );
125
126 BOOL
127 FASTCALL
128 NewTextMetricW2A(
129 NEWTEXTMETRICA *tma,
130 NEWTEXTMETRICW *tmw
131 );
132
133 BOOL
134 FASTCALL
135 NewTextMetricExW2A(
136 NEWTEXTMETRICEXA *tma,
137 NEWTEXTMETRICEXW *tmw
138 );
139
140 BOOL
141 FASTCALL
142 DeleteRegion( HRGN );
143
144 BOOL
145 GdiIsHandleValid(HGDIOBJ hGdiObj);
146
147 BOOL
148 GdiGetHandleUserData(
149 HGDIOBJ hGdiObj,
150 DWORD ObjectType,
151 PVOID *UserData
152 );
153
154 PLDC
155 GdiGetLDC(HDC hDC);
156
157 HGDIOBJ
158 STDCALL
159 GdiFixUpHandle(HGDIOBJ hGO);
160
161 BOOL
162 WINAPI
163 CalculateColorTableSize(
164 CONST BITMAPINFOHEADER *BitmapInfoHeader,
165 UINT *ColorSpec,
166 UINT *ColorTableSize
167 );
168
169 LPBITMAPINFO
170 WINAPI
171 ConvertBitmapInfo(
172 CONST BITMAPINFO *BitmapInfo,
173 UINT ColorSpec,
174 UINT *BitmapInfoSize,
175 BOOL FollowedByData
176 );
177
178 DEVMODEW *
179 NTAPI
180 GdiConvertToDevmodeW(DEVMODEA *dm);
181
182 DWORD
183 STDCALL
184 GetAndSetDCDWord( HDC, INT, DWORD, DWORD, DWORD, DWORD );
185
186 DWORD
187 STDCALL
188 GetDCDWord( HDC, INT, DWORD);
189
190 HGDIOBJ
191 STDCALL
192 GetDCObject( HDC, INT);
193
194 VOID
195 NTAPI
196 LogFontA2W(
197 LPLOGFONTW pW,
198 CONST LOGFONTA *pA
199 );
200
201 VOID
202 NTAPI
203 LogFontW2A(
204 LPLOGFONTA pA,
205 CONST LOGFONTW *pW
206 );
207
208 VOID
209 STDCALL
210 EnumLogFontExW2A(
211 LPENUMLOGFONTEXA fontA,
212 CONST ENUMLOGFONTEXW *fontW );
213
214 /* FIXME: Put in some public header */
215 UINT
216 WINAPI
217 UserRealizePalette(HDC hDC);
218
219 int
220 STDCALL
221 GdiAddFontResourceW(LPCWSTR lpszFilename,FLONG fl,DESIGNVECTOR *pdv);
222
223 VOID
224 STDCALL
225 GdiSetLastError( DWORD dwErrCode );
226
227 /* EOF */
228