Add a help function for gdi32.
[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 #define GDI_BATCH_LIMIT 20
10
11 /* DATA **********************************************************************/
12
13 extern PGDI_TABLE_ENTRY GdiHandleTable;
14 extern HANDLE hProcessHeap;
15 extern HANDLE CurrentProcessId;
16 extern DWORD GDI_BatchLimit;
17
18 typedef INT
19 (CALLBACK* EMFPLAYPROC)(
20 HDC hdc,
21 INT iFunction,
22 HANDLE hPageQuery
23 );
24
25 /* DEFINES *******************************************************************/
26
27 #define HANDLE_LIST_INC 20
28
29 /* TYPES *********************************************************************/
30
31 // Based on wmfapi.h and Wine. This is the DC_ATTR for a MetaDC file.
32 typedef struct tagMETAFILEDC {
33 PVOID pvMetaBuffer;
34 HANDLE hFile;
35 DWORD Size;
36 PMETAHEADER mf;
37 UINT handles_size, cur_handles;
38 HGDIOBJ *handles;
39
40 // more DC object stuff.
41 HGDIOBJ Pen;
42 HGDIOBJ Brush;
43 HGDIOBJ Palette;
44 HGDIOBJ Font;
45 // Add more later.
46 } METAFILEDC,*PMETAFILEDC;
47
48
49 typedef struct tagENHMETAFILE {
50 PVOID pvMetaBuffer;
51 HANDLE hFile; /* Handle for disk based MetaFile */
52 DWORD Size;
53 INT iType;
54 PENHMETAHEADER emf;
55 UINT handles_size, cur_handles;
56 HGDIOBJ *handles;
57 INT horzres, vertres;
58 INT horzsize, vertsize;
59 INT logpixelsx, logpixelsy;
60 INT bitspixel;
61 INT textcaps;
62 INT rastercaps;
63 INT technology;
64 INT planes;
65 } ENHMETAFILE,*PENHMETAFILE;
66
67 /* FUNCTIONS *****************************************************************/
68
69 PVOID
70 HEAP_alloc(DWORD len);
71
72 NTSTATUS
73 HEAP_strdupA2W(
74 LPWSTR* ppszW,
75 LPCSTR lpszA
76 );
77
78 VOID
79 HEAP_free(LPVOID memory);
80
81 BOOL
82 FASTCALL
83 TextMetricW2A(
84 TEXTMETRICA *tma,
85 TEXTMETRICW *tmw
86 );
87
88 BOOL
89 FASTCALL
90 NewTextMetricW2A(
91 NEWTEXTMETRICA *tma,
92 NEWTEXTMETRICW *tmw
93 );
94
95 BOOL
96 FASTCALL
97 NewTextMetricExW2A(
98 NEWTEXTMETRICEXA *tma,
99 NEWTEXTMETRICEXW *tmw
100 );
101
102 BOOL
103 GdiIsHandleValid(HGDIOBJ hGdiObj);
104
105 BOOL
106 GdiGetHandleUserData(
107 HGDIOBJ hGdiObj,
108 PVOID *UserData
109 );
110
111 PLDC
112 GdiGetLDC(HDC hDC);
113
114 BOOL
115 WINAPI
116 CalculateColorTableSize(
117 CONST BITMAPINFOHEADER *BitmapInfoHeader,
118 UINT *ColorSpec,
119 UINT *ColorTableSize
120 );
121
122 LPBITMAPINFO
123 WINAPI
124 ConvertBitmapInfo(
125 CONST BITMAPINFO *BitmapInfo,
126 UINT ColorSpec,
127 UINT *BitmapInfoSize,
128 BOOL FollowedByData
129 );
130
131 DEVMODEW *
132 NTAPI
133 GdiConvertToDevmodeW(DEVMODEA *dm);
134
135 VOID
136 NTAPI
137 LogFontA2W(
138 LPLOGFONTW pW,
139 CONST LOGFONTA *pA
140 );
141
142 VOID
143 NTAPI
144 LogFontW2A(
145 LPLOGFONTA pA,
146 CONST LOGFONTW *pW
147 );
148
149 /* FIXME: Put in some public header */
150 UINT
151 WINAPI
152 UserRealizePalette(HDC hDC);
153
154 /* EOF */
155