2 * Win16 printer driver definitions
5 #ifndef __WINE_WIN16DRV_H
6 #define __WINE_WIN16DRV_H
14 #define GETGDIINFO 0x8001
15 #define INITPDEVICE 0x8000
17 #define GETGDIINFO 0x0001
18 #define INITPDEVICE 0x0000
22 #define OS_SCANLINES 4
23 #define OS_RECTANGLE 6
26 #define OS_POLYLINE 18
27 #define OS_ALTPOLYGON 22
28 #define OS_WINDPOLYGON 20
30 #define OS_POLYMARKER 24
33 #define OS_ROUNDRECT 72
37 #define ORD_COLORINFO 2
41 #define ORD_ENUMDFONTS 6
45 #define ORD_REALIZEOBJECT 10
48 #define ORD_DEVICEMODE 13
49 #define ORD_EXTTEXTOUT 14
50 #define ORD_GETCHARWIDTH 15
51 #define ORD_DEVICEBITMAP 16
52 #define ORD_FASTBORDER 17
53 #define ORD_SETATTRIBUTE 18
55 #define ORD_STRETCHBLT 27
56 #define ORD_STRETCHDIBITS 28
57 #define ORD_SELECTBITMAP 29
58 #define ORD_BITMAPBITS 30
60 #define ORD_EXTDEVICEMODE 90
61 #define ORD_DEVICECAPABILITIES 91
62 #define ORD_ADVANCEDSETUPDIALOG 93
64 #define ORD_DIALOGFN 100
65 #define ORD_PSEUDOEDIT 101
91 FUNC_DEVICECAPABILITIES,
92 FUNC_ADVANCEDSETUPDIALOG,
95 TOTAL_PRINTER_DRIVER_FUNCTIONS /* insert functions before here */
100 LPSTR szDriver; /* Driver name eg EPSON */
101 HINSTANCE16 hInst; /* Handle for driver */
102 WORD ds_reg; /* DS of driver */
103 FARPROC16 fn[TOTAL_PRINTER_DRIVER_FUNCTIONS]; /* Printer functions */
104 int nUsageCount; /* Usage count, unload == 0 */
105 int nIndex; /* Index in global driver array */
106 } LOADED_PRINTER_DRIVER;
108 typedef struct PDEVICE_HEADER
110 LOADED_PRINTER_DRIVER *pLPD; /* Associated printer driver */
113 #include "pshpack1.h"
115 typedef struct DRAWMODE
130 SHORT StretchBltMode;
132 } DRAWMODE, *LPDRAWMODE;
137 typedef struct WINE_ENUM_PRINTER_FONT_CALLBACK
139 int (*proc)(LPENUMLOGFONT16, LPNEWTEXTMETRIC16, UINT16, LPARAM);
144 #define DRVOBJ_BRUSH 2
145 #define DRVOBJ_FONT 3
146 #define DRVOBJ_PBITMAP 5
148 /* Win16 printer driver physical DC */
151 SEGPTR segptrPDEVICE; /* PDEVICE used by 16 bit printer drivers */
152 LOGFONT16 lf; /* Current font details */
153 TEXTMETRIC16 tm; /* Current font metrics */
154 LPFONTINFO16 FontInfo; /* Current font realized by printer driver */
155 LPLOGBRUSH16 BrushInfo; /* Current brush realized by printer driver */
156 LPLOGPEN16 PenInfo; /* Current pen realized by printer driver */
160 * Printer driver functions
162 typedef SEGPTR LPPDEVICE;
163 LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver);
165 extern INT16 PRTDRV_Control(LPPDEVICE lpDestDev, WORD wfunction, SEGPTR lpInData, SEGPTR lpOutData);
166 extern WORD PRTDRV_Enable(LPVOID lpDevInfo, WORD wStyle, LPCSTR lpDestDevType,
167 LPCSTR lpDeviceName, LPCSTR lpOutputFile, LPVOID lpData);
168 extern WORD PRTDRV_EnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName,
169 FARPROC16 lpCallbackFunc, LPVOID lpClientData);
170 extern DWORD PRTDRV_RealizeObject(LPPDEVICE lpDestDev, WORD wStyle,
171 LPVOID lpInObj, LPVOID lpOutObj,
174 extern BOOL16 PRTDRV_EnumObj(LPPDEVICE lpDestDev, WORD iStyle, FARPROC16 lpfn, LPVOID lpb);
175 extern DWORD PRTDRV_ExtTextOut(LPPDEVICE lpDestDev, WORD wDestXOrg, WORD wDestYOrg,
176 RECT16 *lpClipRect, LPCSTR lpString, WORD wCount,
177 LPFONTINFO16 lpFontInfo, SEGPTR lpDrawMode,
178 SEGPTR lpTextXForm, SHORT *lpCharWidths,
179 RECT16 * lpOpaqueRect, WORD wOptions);
181 extern WORD PRTDRV_Output(LPPDEVICE lpDestDev,
186 LPLOGBRUSH16 lpBrush,
190 DWORD PRTDRV_StretchBlt(LPPDEVICE lpDestDev,
191 WORD wDestX, WORD wDestY,
192 WORD wDestXext, WORD wDestYext,
194 WORD wSrcX, WORD wSrcY,
195 WORD wSrcXext, WORD wSrcYext,
197 LPLOGBRUSH16 lpBrush,
201 extern WORD PRTDRV_GetCharWidth(LPPDEVICE lpDestDev, LPINT lpBuffer,
202 WORD wFirstChar, WORD wLastChar, LPFONTINFO16 lpFontInfo,
203 SEGPTR lpDrawMode, SEGPTR lpTextXForm );
205 /* Wine driver functions */
207 extern BOOL WIN16DRV_Init(void);
208 extern BOOL WIN16DRV_GetCharWidth( struct tagDC *dc, UINT firstChar, UINT lastChar,
211 extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count,
213 extern BOOL WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics );
215 extern BOOL WIN16DRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags,
216 const RECT *lprect, LPCSTR str, UINT count,
218 extern BOOL WIN16DRV_LineTo( DC *dc, INT x, INT y );
219 extern BOOL WIN16DRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt);
220 extern BOOL WIN16DRV_Polygon(DC *dc, const POINT* pt, INT count );
221 extern BOOL WIN16DRV_Polyline(DC *dc, const POINT* pt, INT count );
222 extern BOOL WIN16DRV_Rectangle(DC *dc, INT left, INT top, INT right, INT bottom);
223 extern HGDIOBJ WIN16DRV_SelectObject( DC *dc, HGDIOBJ handle );
224 extern BOOL WIN16DRV_PatBlt( struct tagDC *dc, INT left, INT top,
225 INT width, INT height, DWORD rop );
226 extern BOOL WIN16DRV_Ellipse(DC *dc, INT left, INT top, INT right, INT bottom);
227 extern BOOL WIN16DRV_EnumDeviceFonts( DC* dc, LPLOGFONT16 plf,
228 DEVICEFONTENUMPROC proc, LPARAM lp );
230 extern INT WIN16DRV_ExtDeviceMode(LPSTR lpszDriver, HWND hwnd,
231 LPDEVMODEA lpdmOutput,
233 LPSTR lpszPort, LPDEVMODEA lpdmInput,
234 LPSTR lpszProfile, DWORD dwMode);
235 extern DWORD WIN16DRV_DeviceCapabilities(LPSTR lpszDriver, LPCSTR lpszDevice,
236 LPCSTR lpszPort, WORD fwCapability,
237 LPSTR lpszOutput, LPDEVMODEA lpdm);
240 * Wine 16bit driver global variables
242 extern SEGPTR win16drv_SegPtr_TextXForm;
243 extern LPTEXTXFORM16 win16drv_TextXFormP;
244 extern SEGPTR win16drv_SegPtr_DrawMode;
245 extern LPDRAWMODE win16drv_DrawModeP;
247 #endif /* __WINE_WIN16DRV_H */