Merge from branch ReactX to Trunk,
[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 HANDLE hProcessHeap;
14 extern HANDLE CurrentProcessId;
15 extern DWORD GDI_BatchLimit;
16
17 typedef INT
18 (CALLBACK* EMFPLAYPROC)(
19 HDC hdc,
20 INT iFunction,
21 HANDLE hPageQuery
22 );
23
24 /* DEFINES *******************************************************************/
25
26 #define HANDLE_LIST_INC 20
27
28 #define METAFILE_MEMORY 1
29 #define METAFILE_DISK 2
30
31 #define DEFAULT_BITMAP (STOCK_LAST+1)
32 #define NB_STOCK_OBJECTS (STOCK_LAST+2)
33
34 /* TYPES *********************************************************************/
35
36 // Based on wmfapi.h and Wine.
37 typedef struct tagMETAFILEDC {
38 PVOID pvMetaBuffer;
39 HANDLE hFile;
40 DWORD Size;
41 METAHEADER mh;
42 UINT handles_size, cur_handles;
43 HGDIOBJ *handles;
44
45 // more DC object stuff.
46 HGDIOBJ Pen;
47 HGDIOBJ Brush;
48 HGDIOBJ Palette;
49 HGDIOBJ Font;
50
51 WCHAR Filename[MAX_PATH+2];
52 // Add more later.
53 } METAFILEDC,*PMETAFILEDC;
54
55 // Metafile Entry handle
56 typedef struct tagMF_ENTRY {
57 LIST_ENTRY List;
58 HGDIOBJ hmDC; // Handle return from NtGdiCreateClientObj.
59 PMETAFILEDC pmfDC;
60 } MF_ENTRY, *PMF_ENTRY;
61
62 typedef struct tagENHMETAFILE {
63 PVOID pvMetaBuffer;
64 HANDLE hFile; /* Handle for disk based MetaFile */
65 DWORD Size;
66 INT iType;
67 PENHMETAHEADER emf;
68 UINT handles_size, cur_handles;
69 HGDIOBJ *handles;
70 INT horzres, vertres;
71 INT horzsize, vertsize;
72 INT logpixelsx, logpixelsy;
73 INT bitspixel;
74 INT textcaps;
75 INT rastercaps;
76 INT technology;
77 INT planes;
78 } ENHMETAFILE,*PENHMETAFILE;
79
80 /* FUNCTIONS *****************************************************************/
81
82 PVOID
83 HEAP_alloc(DWORD len);
84
85 NTSTATUS
86 HEAP_strdupA2W(
87 LPWSTR* ppszW,
88 LPCSTR lpszA
89 );
90
91 VOID
92 HEAP_free(LPVOID memory);
93
94 BOOL
95 FASTCALL
96 TextMetricW2A(
97 TEXTMETRICA *tma,
98 TEXTMETRICW *tmw
99 );
100
101 BOOL
102 FASTCALL
103 NewTextMetricW2A(
104 NEWTEXTMETRICA *tma,
105 NEWTEXTMETRICW *tmw
106 );
107
108 BOOL
109 FASTCALL
110 NewTextMetricExW2A(
111 NEWTEXTMETRICEXA *tma,
112 NEWTEXTMETRICEXW *tmw
113 );
114
115 BOOL
116 FASTCALL
117 DeleteRegion( HRGN );
118
119 BOOL
120 GdiIsHandleValid(HGDIOBJ hGdiObj);
121
122 BOOL
123 GdiGetHandleUserData(
124 HGDIOBJ hGdiObj,
125 PVOID *UserData
126 );
127
128 PLDC
129 GdiGetLDC(HDC hDC);
130
131 HGDIOBJ
132 STDCALL
133 GdiFixUpHandle(HGDIOBJ hGO);
134
135 BOOL
136 WINAPI
137 CalculateColorTableSize(
138 CONST BITMAPINFOHEADER *BitmapInfoHeader,
139 UINT *ColorSpec,
140 UINT *ColorTableSize
141 );
142
143 LPBITMAPINFO
144 WINAPI
145 ConvertBitmapInfo(
146 CONST BITMAPINFO *BitmapInfo,
147 UINT ColorSpec,
148 UINT *BitmapInfoSize,
149 BOOL FollowedByData
150 );
151
152 DEVMODEW *
153 NTAPI
154 GdiConvertToDevmodeW(DEVMODEA *dm);
155
156 DWORD
157 STDCALL
158 GetAndSetDCDWord( HDC, INT, DWORD, DWORD, DWORD, DWORD );
159
160 DWORD
161 STDCALL
162 GetDCDWord( HDC, INT, DWORD);
163
164 HGDIOBJ
165 STDCALL
166 GetDCObject( HDC, INT);
167
168 VOID
169 NTAPI
170 LogFontA2W(
171 LPLOGFONTW pW,
172 CONST LOGFONTA *pA
173 );
174
175 VOID
176 NTAPI
177 LogFontW2A(
178 LPLOGFONTA pA,
179 CONST LOGFONTW *pW
180 );
181
182 VOID
183 STDCALL
184 EnumLogFontExW2A(
185 LPENUMLOGFONTEXA fontA,
186 CONST ENUMLOGFONTEXW *fontW );
187
188 /* FIXME: Put in some public header */
189 UINT
190 WINAPI
191 UserRealizePalette(HDC hDC);
192
193 int
194 STDCALL
195 GdiAddFontResourceW(LPCWSTR lpszFilename,FLONG fl,DESIGNVECTOR *pdv);
196
197 VOID
198 STDCALL
199 GdiSetLastError( DWORD dwErrCode );
200
201 /* EOF */
202