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)
10 /* DATA **********************************************************************/
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 extern BOOL gbLpk
; // Global bool LanguagePack
19 extern HANDLE ghSpooler
;
20 extern RTL_CRITICAL_SECTION semLocal
;
23 (CALLBACK
* EMFPLAYPROC
)(
29 /* DEFINES *******************************************************************/
31 #define HANDLE_LIST_INC 20
33 #define METAFILE_MEMORY 1
34 #define METAFILE_DISK 2
36 #define SAPCALLBACKDELAY 244
38 /* MACRO ********************************************************************/
40 #define ROP_USES_SOURCE(Rop) (((Rop) << 2 ^ Rop) & 0xCC0000)
42 /* TYPES *********************************************************************/
44 // Based on wmfapi.h and Wine.
45 typedef struct tagMETAFILEDC
{
50 UINT handles_size
, cur_handles
;
53 // more DC object stuff.
59 WCHAR Filename
[MAX_PATH
+2];
61 } METAFILEDC
,*PMETAFILEDC
;
63 // Metafile Entry handle
64 typedef struct tagMF_ENTRY
{
66 HGDIOBJ hmDC
; // Handle return from NtGdiCreateClientObj.
68 } MF_ENTRY
, *PMF_ENTRY
;
70 typedef struct tagENHMETAFILE
{
72 HANDLE hFile
; /* Handle for disk based MetaFile */
76 UINT handles_size
, cur_handles
;
79 INT horzsize
, vertsize
;
80 INT logpixelsx
, logpixelsy
;
86 } ENHMETAFILE
,*PENHMETAFILE
;
89 #define PDEV_UMPD_ID 0xFEDCBA98
91 #define UMPDEV_NO_ESCAPE 0x0002
92 #define UMPDEV_SUPPORT_ESCAPE 0x0004
93 typedef struct _UMPDEV
95 DWORD Sig
; // Init with PDEV_UMPD_ID
96 struct _UMPDEV
*pumpdNext
;
97 PDRIVER_INFO_5W pdi5Info
;
100 DWORD dwDriverAttributes
;
101 DWORD dwConfigVersion
; // Number of times the configuration
102 // file for this driver has been upgraded
103 // or downgraded since the last spooler restart.
104 DWORD dwDriverCount
; // After init should be 2
108 PVOID apfn
[INDEX_LAST
]; // Print Driver pfn
111 #define LOCALFONT_COUNT 10
112 typedef struct _LOCALFONT
114 FONT_ATTR lfa
[LOCALFONT_COUNT
];
115 } LOCALFONT
, *PLOCALFONT
;
118 typedef BOOL (WINAPI
*ABORTPRINTER
) (HANDLE
);
119 typedef BOOL (WINAPI
*CLOSEPRINTER
) (HANDLE
);
120 typedef BOOL (WINAPI
*CLOSESPOOLFILEHANDLE
) (HANDLE
, HANDLE
); // W2k8
121 typedef HANDLE (WINAPI
*COMMITSPOOLDATA
) (HANDLE
,HANDLE
,DWORD
); // W2k8
122 typedef LONG (WINAPI
*DOCUMENTPROPERTIESW
) (HWND
,HANDLE
,LPWSTR
,PDEVMODEW
,PDEVMODEW
,DWORD
);
123 typedef BOOL (WINAPI
*ENDDOCPRINTER
) (HANDLE
);
124 typedef BOOL (WINAPI
*ENDPAGEPRINTER
) (HANDLE
);
125 typedef BOOL (WINAPI
*GETPRINTERW
) (HANDLE
,DWORD
,LPBYTE
,DWORD
,LPDWORD
);
126 typedef BOOL (WINAPI
*GETPRINTERDRIVERW
) (HANDLE
,LPWSTR
,DWORD
,LPBYTE
,DWORD
,LPDWORD
);
127 typedef HANDLE (WINAPI
*GETSPOOLFILEHANDLE
) (HANDLE
); // W2k8
128 typedef BOOL (WINAPI
*ISVALIDDEVMODEW
) (PDEVMODEW
,size_t);
129 typedef BOOL (WINAPI
*OPENPRINTERW
) (LPWSTR
,PHANDLE
,LPPRINTER_DEFAULTSW
);
130 typedef BOOL (WINAPI
*READPRINTER
) (HANDLE
,PVOID
,DWORD
,PDWORD
);
131 typedef BOOL (WINAPI
*RESETPRINTERW
) (HANDLE
,LPPRINTER_DEFAULTSW
);
132 typedef LPWSTR (WINAPI
*STARTDOCDLGW
) (HANDLE
,DOCINFOW
*);
133 typedef DWORD (WINAPI
*STARTDOCPRINTERW
) (HANDLE
,DWORD
,PBYTE
);
134 typedef BOOL (WINAPI
*STARTPAGEPRINTER
) (HANDLE
);
136 typedef BOOL (WINAPI
*SEEKPRINTER
) (HANDLE
,LARGE_INTEGER
,PLARGE_INTEGER
,DWORD
,BOOL
);
137 typedef BOOL (WINAPI
*SPLREADPRINTER
) (HANDLE
,LPBYTE
*,DWORD
);
138 // Same as ddk/winsplp.h DriverUnloadComplete?
139 typedef BOOL (WINAPI
*SPLDRIVERUNLOADCOMPLETE
) (LPWSTR
);
141 // DrvDocumentEvent api/winddiui.h not W2k8 DocumentEventAW
142 typedef INT (WINAPI
*DOCUMENTEVENT
) (HANDLE
,HDC
,INT
,ULONG
,PVOID
,ULONG
,PVOID
);
143 // DrvQueryColorProfile
144 typedef BOOL (WINAPI
*QUERYCOLORPROFILE
) (HANDLE
,PDEVMODEW
,ULONG
,VOID
*,ULONG
,FLONG
);
146 typedef DWORD (WINAPI
*QUERYSPOOLMODE
) (HANDLE
,DWORD
,DWORD
);
147 typedef DWORD (WINAPI
*QUERYREMOTEFONTS
) (DWORD
,DWORD
,DWORD
);
149 extern CLOSEPRINTER fpClosePrinter
;
151 /* FUNCTIONS *****************************************************************/
154 HEAP_alloc(DWORD len
);
163 HEAP_free(LPVOID memory
);
168 const TEXTMETRICW
*ptmW
,
182 NEWTEXTMETRICEXA
*tma
,
183 NEWTEXTMETRICEXW
*tmw
188 DeleteRegion( HRGN
);
191 GdiIsHandleValid(HGDIOBJ hGdiObj
);
194 GdiGetHandleUserData(
206 GdiFixUpHandle(HGDIOBJ hGO
);
210 CalculateColorTableSize(
211 CONST BITMAPINFOHEADER
*BitmapInfoHeader
,
219 CONST BITMAPINFO
*BitmapInfo
,
221 UINT
*BitmapInfoSize
,
227 GdiConvertToDevmodeW(DEVMODEA
*dm
);
231 GetAndSetDCDWord( HDC
, INT
, DWORD
, DWORD
, DWORD
, DWORD
);
235 GetDCDWord( HDC
, INT
, DWORD
);
239 GetDCObject( HDC
, INT
);
258 LPENUMLOGFONTEXA fontA
,
259 CONST ENUMLOGFONTEXW
*fontW
);
261 /* FIXME: Put in some public header */
264 UserRealizePalette(HDC hDC
);
268 GdiAddFontResourceW(LPCWSTR lpszFilename
,FLONG fl
,DESIGNVECTOR
*pdv
);
272 GdiSetLastError( DWORD dwErrCode
);
274 DWORD WINAPI
GdiGetCodePage(HDC
);
275 UINT FASTCALL
DIB_BitmapBitsSize( PBITMAPINFO
);
279 GdiGetBitmapBitsSize(BITMAPINFO
*lpbmi
);
281 VOID
GdiSAPCallback(PLDC pldc
);
283 int FASTCALL
DocumentEventEx(PVOID
,HANDLE
,HDC
,int,ULONG
,PVOID
,ULONG
,PVOID
);
284 BOOL FASTCALL
EndPagePrinterEx(PVOID
,HANDLE
);
285 BOOL FASTCALL
LoadTheSpoolerDrv(VOID
);