f769a0110c661cfa0125cc010b16ad1561612a6b
[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 PENHMETAHEADER emf;
54 UINT handles_size, cur_handles;
55 HGDIOBJ *handles;
56 INT horzres, vertres;
57 INT horzsize, vertsize;
58 INT logpixelsx, logpixelsy;
59 INT bitspixel;
60 INT textcaps;
61 INT rastercaps;
62 INT technology;
63 INT planes;
64 } ENHMETAFILE,*PENHMETAFILE;
65
66 /* FUNCTIONS *****************************************************************/
67
68 PVOID
69 HEAP_alloc(DWORD len);
70
71 NTSTATUS
72 HEAP_strdupA2W(
73 LPWSTR* ppszW,
74 LPCSTR lpszA
75 );
76
77 VOID
78 HEAP_free(LPVOID memory);
79
80 BOOL
81 FASTCALL
82 TextMetricW2A(
83 TEXTMETRICA *tma,
84 TEXTMETRICW *tmw
85 );
86
87 BOOL
88 FASTCALL
89 NewTextMetricW2A(
90 NEWTEXTMETRICA *tma,
91 NEWTEXTMETRICW *tmw
92 );
93
94 BOOL
95 FASTCALL
96 NewTextMetricExW2A(
97 NEWTEXTMETRICEXA *tma,
98 NEWTEXTMETRICEXW *tmw
99 );
100
101 BOOL
102 GdiIsHandleValid(HGDIOBJ hGdiObj);
103
104 BOOL
105 GdiGetHandleUserData(
106 HGDIOBJ hGdiObj,
107 PVOID *UserData
108 );
109
110 BOOL
111 WINAPI
112 CalculateColorTableSize(
113 CONST BITMAPINFOHEADER *BitmapInfoHeader,
114 UINT *ColorSpec,
115 UINT *ColorTableSize
116 );
117
118 LPBITMAPINFO
119 WINAPI
120 ConvertBitmapInfo(
121 CONST BITMAPINFO *BitmapInfo,
122 UINT ColorSpec,
123 UINT *BitmapInfoSize,
124 BOOL FollowedByData
125 );
126
127 DEVMODEW *
128 NTAPI
129 GdiConvertToDevmodeW(DEVMODEA *dm);
130
131 VOID
132 NTAPI
133 LogFontA2W(
134 LPLOGFONTW pW,
135 CONST LOGFONTA *pA
136 );
137
138 VOID
139 NTAPI
140 LogFontW2A(
141 LPLOGFONTA pA,
142 CONST LOGFONTW *pW
143 );
144
145 /* FIXME: Put in some public header */
146 UINT
147 WINAPI
148 UserRealizePalette(HDC hDC);
149
150 /* EOF */
151