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