Authors: Chris Morgan <cmorgan@wpi.edu>, James Abbatiello <abbeyj@wpi.edu>
[wine] / include / winspool.h
1 /* Definitions for printing
2  *
3  * Copyright 1998 Huw Davies, Andreas Mohr
4  *
5  * Portions Copyright (c) 1999 Corel Corporation 
6  *                             (Paul Quinn, Albert Den Haan)
7  */
8 #ifndef __WINE_WINSPOOL_H
9 #define __WINE_WINSPOOL_H
10
11 #include "windef.h"
12 #include "winbase.h"
13 #include "wingdi.h"
14
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18
19 /* DEFINES */
20
21 #define PRINTER_ATTRIBUTE_QUEUED         0x00000001
22 #define PRINTER_ATTRIBUTE_DIRECT         0x00000002
23 #define PRINTER_ATTRIBUTE_DEFAULT        0x00000004
24 #define PRINTER_ATTRIBUTE_SHARED         0x00000008
25 #define PRINTER_ATTRIBUTE_NETWORK        0x00000010
26 #define PRINTER_ATTRIBUTE_HIDDEN         0x00000020
27 #define PRINTER_ATTRIBUTE_LOCAL          0x00000040
28
29 #define PRINTER_ATTRIBUTE_ENABLE_DEVQ       0x00000080
30 #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   0x00000100
31 #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
32
33 #define PRINTER_ATTRIBUTE_WORK_OFFLINE   0x00000400
34 #define PRINTER_ATTRIBUTE_ENABLE_BIDI    0x00000800
35
36 #define PRINTER_ENUM_DEFAULT     0x00000001
37 #define PRINTER_ENUM_LOCAL       0x00000002
38 #define PRINTER_ENUM_CONNECTIONS 0x00000004
39 #define PRINTER_ENUM_FAVORITE    0x00000004
40 #define PRINTER_ENUM_NAME        0x00000008
41 #define PRINTER_ENUM_REMOTE      0x00000010
42 #define PRINTER_ENUM_SHARED      0x00000020
43 #define PRINTER_ENUM_NETWORK     0x00000040
44
45 #define PRINTER_ENUM_EXPAND      0x00004000
46 #define PRINTER_ENUM_CONTAINER   0x00008000
47
48 #define PRINTER_ENUM_ICONMASK    0x00ff0000
49 #define PRINTER_ENUM_ICON1       0x00010000
50 #define PRINTER_ENUM_ICON2       0x00020000
51 #define PRINTER_ENUM_ICON3       0x00040000
52 #define PRINTER_ENUM_ICON4       0x00080000
53 #define PRINTER_ENUM_ICON5       0x00100000
54 #define PRINTER_ENUM_ICON6       0x00200000
55 #define PRINTER_ENUM_ICON7       0x00400000
56 #define PRINTER_ENUM_ICON8       0x00800000
57
58 /* TYPES */
59 typedef struct _PRINTER_DEFAULTSA {
60   LPSTR        pDatatype;
61   LPDEVMODEA pDevMode;
62   ACCESS_MASK  DesiredAccess;
63 } PRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
64
65 typedef struct _PRINTER_DEFAULTSW {
66   LPWSTR       pDatatype;
67   LPDEVMODEW pDevMode;
68   ACCESS_MASK  DesiredAccess;
69 } PRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
70
71 DECL_WINELIB_TYPE_AW(PRINTER_DEFAULTS)
72 DECL_WINELIB_TYPE_AW(LPPRINTER_DEFAULTS)
73
74 typedef struct _DRIVER_INFO_1A {
75   LPSTR     pName;
76 } DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
77
78 typedef struct _DRIVER_INFO_1W {
79   LPWSTR    pName;
80 } DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
81
82 DECL_WINELIB_TYPE_AW(DRIVER_INFO_1)
83 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_1)
84 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_1)
85
86 typedef struct _DRIVER_INFO_2A {
87   DWORD   cVersion;
88   LPSTR     pName;
89   LPSTR     pEnvironment;
90   LPSTR     pDriverPath;
91   LPSTR     pDataFile; 
92   LPSTR     pConfigFile;
93 } DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
94
95 typedef struct _DRIVER_INFO_2W {
96   DWORD   cVersion;
97   LPWSTR    pName;     
98   LPWSTR    pEnvironment;
99   LPWSTR    pDriverPath;
100   LPWSTR    pDataFile; 
101   LPWSTR    pConfigFile;
102 } DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
103
104 DECL_WINELIB_TYPE_AW(DRIVER_INFO_2)
105 DECL_WINELIB_TYPE_AW(PDRIVER_INFO_2)
106 DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_2)
107
108 typedef struct _PRINTER_INFO_1A {
109   DWORD   Flags;
110   LPSTR   pDescription;
111   LPSTR   pName;
112   LPSTR   pComment;
113 } PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
114
115 typedef struct _PRINTER_INFO_1W {
116   DWORD   Flags;
117   LPWSTR  pDescription;
118   LPWSTR  pName;
119   LPWSTR  pComment;
120 } PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
121
122 DECL_WINELIB_TYPE_AW(PRINTER_INFO_1)
123 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_1)
124 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_1)
125
126 /* FIXME: winspool.h declares some structure members with the name Status.
127  * unfortunatly <X11/ICE/ICElib.h> #defines Status to the type 'int' 
128  * therfore the following hack */
129 #ifndef Status
130
131 typedef struct _PRINTER_INFO_2A {
132   LPSTR     pServerName;
133   LPSTR     pPrinterName;
134   LPSTR     pShareName;
135   LPSTR     pPortName;
136   LPSTR     pDriverName;
137   LPSTR     pComment;
138   LPSTR     pLocation;
139   LPDEVMODEA pDevMode;
140   LPSTR     pSepFile;
141   LPSTR     pPrintProcessor;
142   LPSTR     pDatatype;
143   LPSTR     pParameters;
144   PSECURITY_DESCRIPTOR pSecurityDescriptor;
145   DWORD   Attributes;
146   DWORD   Priority;
147   DWORD   DefaultPriority;
148   DWORD   StartTime;
149   DWORD   UntilTime;
150   DWORD   Status;
151   DWORD   cJobs;
152   DWORD   AveragePPM;
153 } PRINTER_INFO_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
154
155 typedef struct _PRINTER_INFO_2W {
156   LPWSTR    pServerName;
157   LPWSTR    pPrinterName;
158   LPWSTR    pShareName;
159   LPWSTR    pPortName;
160   LPWSTR    pDriverName;
161   LPWSTR    pComment;
162   LPWSTR    pLocation;
163   LPDEVMODEW pDevMode;
164   LPWSTR    pSepFile;
165   LPWSTR    pPrintProcessor;
166   LPWSTR    pDatatype;
167   LPWSTR    pParameters;
168   PSECURITY_DESCRIPTOR pSecurityDescriptor;
169   DWORD   Attributes;
170   DWORD   Priority;
171   DWORD   DefaultPriority;
172   DWORD   StartTime;
173   DWORD   UntilTime;
174   DWORD   Status;
175   DWORD   cJobs;
176   DWORD   AveragePPM;
177 } PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
178
179 DECL_WINELIB_TYPE_AW(PRINTER_INFO_2)
180 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_2)
181 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_2)
182
183 typedef struct _PRINTER_INFO_4A {
184   LPSTR     pPrinterName;
185   LPSTR     pServerName;
186   DWORD     Attributes;
187 } PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
188
189 typedef struct _PRINTER_INFO_4W {
190   LPWSTR     pPrinterName;
191   LPWSTR     pServerName;
192   DWORD     Attributes;
193 } PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
194
195 DECL_WINELIB_TYPE_AW(PRINTER_INFO_4)
196 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_4)
197 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_4)
198
199 typedef struct _PRINTER_INFO_5A {
200   LPSTR     pPrinterName;
201   LPSTR     pPortName;
202   DWORD     Attributes;
203   DWORD     DeviceNotSelectedTimeOut;
204   DWORD     TransmissionRetryTimeout;
205 } PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
206
207 typedef struct _PRINTER_INFO_5W {
208   LPWSTR    pPrinterName;
209   LPWSTR    pPortName;
210   DWORD     Attributes;
211   DWORD     DeviceNotSelectedTimeOut;
212   DWORD     TransmissionRetryTimeout;
213 } PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
214
215 DECL_WINELIB_TYPE_AW(PRINTER_INFO_5)
216 DECL_WINELIB_TYPE_AW(PPRINTER_INFO_5)
217 DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_5)
218
219 #endif /* Status */
220
221 /* DECLARATIONS */
222 DWORD WINAPI DrvGetPrinterData16(LPSTR lpPrinter, LPSTR lpProfile,
223           LPDWORD lpType, LPBYTE lpPrinterData, int cbData, LPDWORD lpNeeded);
224 DWORD WINAPI DrvSetPrinterData16(LPSTR lpPrinter, LPSTR lpProfile,
225           DWORD lpType, LPBYTE lpPrinterData, DWORD dwSize);
226 HANDLE16 WINAPI OpenJob16(LPSTR lpOutput, LPSTR lpTitle, HDC16 hDC);
227 int WINAPI CloseJob16(HANDLE16 hJob);
228 int WINAPI WriteSpool16(HANDLE16 hJob, LPSTR lpData, WORD cch);
229 int WINAPI DeleteJob16(HANDLE16 hJob, WORD wNotUsed);
230 int WINAPI StartSpoolPage16(HANDLE16 hJob);
231 int WINAPI EndSpoolPage16(HANDLE16 hJob);
232 DWORD WINAPI GetSpoolJob16(int nOption, LONG param);
233 int WINAPI WriteDialog16(HANDLE16 hJob, LPSTR lpMsg, WORD cchMsg);
234
235 INT WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,
236                                LPSTR pOutput, LPDEVMODEA pDevMode);
237 INT WINAPI DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort,
238                                WORD fwCapability, LPWSTR pOutput,
239                                const DEVMODEW *pDevMode);
240
241 #define DeviceCapabilities WINELIB_NAME_AW(DeviceCapabilities)
242
243 LONG WINAPI DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,
244                                 LPSTR pDeviceName, LPDEVMODEA pDevModeOutput,
245                                   LPDEVMODEA pDevModeInput,DWORD fMode );
246 LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
247                                   LPWSTR pDeviceName,
248                                   LPDEVMODEW pDevModeOutput,
249                                   LPDEVMODEW pDevModeInput, DWORD fMode);
250
251 #define DocumentProperties WINELIB_NAME_AW(DocumentProperties)
252
253 BOOL WINAPI OpenPrinterA(LPSTR lpPrinterName,HANDLE *phPrinter,
254                              LPPRINTER_DEFAULTSA pDefault);
255 BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter,
256                              LPPRINTER_DEFAULTSW pDefault);
257
258 #define OpenPrinter WINELIB_NAME_AW(OpenPrinter)
259
260 BOOL WINAPI ClosePrinter (HANDLE phPrinter);
261
262 BOOL  WINAPI EnumPrintersA(DWORD dwType, LPSTR lpszName,
263                                DWORD dwLevel, LPBYTE lpbPrinters,
264                                DWORD cbBuf, LPDWORD lpdwNeeded,
265                                LPDWORD lpdwReturned);
266 BOOL  WINAPI EnumPrintersW(DWORD dwType, LPWSTR lpszName,
267                                DWORD dwLevel, LPBYTE lpbPrinters,
268                                DWORD cbBuf, LPDWORD lpdwNeeded,
269                                LPDWORD lpdwReturned);
270 #define EnumPrinters WINELIB_NAME_AW(EnumPrinters)
271
272 BOOL WINAPI PrinterProperties(HWND hWnd, HANDLE hPrinter);
273
274 #ifdef __cplusplus
275 } /* extern "C" */
276 #endif
277
278 #endif  /* __WINE_WINSPOOL_H */
279