Release 970804
[wine/multimedia.git] / include / win16drv.h
blob88acb12ccd56dd7828f9a75024b76d38ce2a24eb
1 /*
2 * Win16 printer driver definitions
3 */
5 #ifndef __WINE_WIN16DRV_H
6 #define __WINE_WIN16DRV_H
8 #include "windows.h"
9 #include "gdi.h"
11 #define SETHIGHBIT
12 #undef SETHIGHBIT
13 #ifdef SETHIGHBIT
14 #define GETGDIINFO 0x8001
15 #define INITPDEVICE 0x8000
16 #else
17 #define GETGDIINFO 0x0001
18 #define INITPDEVICE 0x0000
19 #endif
21 /* Internal Data */
22 #define ORD_BITBLT 1
23 #define ORD_COLORINFO 2
24 #define ORD_CONTROL 3
25 #define ORD_DISABLE 4
26 #define ORD_ENABLE 5
27 #define ORD_ENUMDFONTS 6
28 #define ORD_ENUMOBJ 7
29 #define ORD_OUTPUT 8
30 #define ORD_PIXEL 9
31 #define ORD_REALIZEOBJECT 10
32 #define ORD_STRBLT 11
33 #define ORD_SCANLR 12
34 #define ORD_DEVICEMODE 13
35 #define ORD_EXTTEXTOUT 14
36 #define ORD_GETCHARWIDTH 15
37 #define ORD_DEVICEBITMAP 16
38 #define ORD_FASTBORDER 17
39 #define ORD_SETATTRIBUTE 18
41 #define ORD_STRETCHBLT 27
42 #define ORD_STRETCHDIBITS 28
43 #define ORD_SELECTBITMAP 29
44 #define ORD_BITMAPBITS 30
46 #define ORD_EXTDEVICEMODE 90
47 #define ORD_DEVICECAPABILITIES 91
48 #define ORD_ADVANCEDSETUPDIALOG 93
50 #define ORD_DIALOGFN 100
51 #define ORD_PSEUDOEDIT 101
53 enum {
54 FUNC_BITBLT = 0,
55 FUNC_COLORINFO,
56 FUNC_CONTROL,
57 FUNC_DISABLE,
58 FUNC_ENABLE,
59 FUNC_ENUMDFONTS,
60 FUNC_ENUMOBJ,
61 FUNC_OUTPUT,
62 FUNC_PIXEL,
63 FUNC_REALIZEOBJECT,
64 FUNC_STRBLT,
65 FUNC_SCANLR,
66 FUNC_DEVICEMODE,
67 FUNC_EXTTEXTOUT,
68 FUNC_GETCHARWIDTH,
69 FUNC_DEVICEBITMAP,
70 FUNC_FASTBORDER,
71 FUNC_SETATTRIBUTE,
72 FUNC_STRETCHBLT,
73 FUNC_STRETCHDIBITS,
74 FUNC_SELECTBITMAP,
75 FUNC_BITMAPBITS,
76 FUNC_EXTDEVICEMODE,
77 FUNC_DEVICECAPABILITIES,
78 FUNC_ADVANCEDSETUPDIALOG,
79 FUNC_DIALOGFN,
80 FUNC_PSEUDOEDIT,
81 TOTAL_PRINTER_DRIVER_FUNCTIONS /* insert functions before here */
84 typedef struct PRINTER_FONTS_INFO
86 LOGFONT16 lf; /* LogFont infomation */
87 TEXTMETRIC16 tm; /* Text metrics infomation */
88 } PRINTER_FONTS_INFO;
90 typedef struct
92 char szDriver[9]; /* Driver name eg EPSON */
93 HINSTANCE16 hInst; /* Handle for driver */
94 WORD ds_reg; /* DS of driver */
95 FARPROC16 fn[TOTAL_PRINTER_DRIVER_FUNCTIONS]; /* Printer functions */
96 int nUsageCount; /* Usage count, unload == 0 */
97 int nPrinterFonts; /* Number of printer fonts */
98 PRINTER_FONTS_INFO *paPrinterFonts; /* array of printer fonts */
99 int nIndex; /* Index in global driver array */
100 HGLOBAL16 hThunk; /* Thunking buffer */
101 SEGPTR ThunkBufSegPtr;
102 SEGPTR ThunkBufLimit;
103 } LOADED_PRINTER_DRIVER;
105 typedef struct PDEVICE_HEADER
107 LOADED_PRINTER_DRIVER *pLPD; /* Associated printer driver */
108 } PDEVICE_HEADER;
110 typedef short SHORT;
112 #pragma pack(1)
113 #define PCOLOR DWORD
114 typedef struct DRAWMODE
116 SHORT Rop2;
117 SHORT bkMode;
118 PCOLOR bkColor;
119 PCOLOR TextColor;
120 SHORT TBreakExtra;
121 SHORT BreakExtra;
122 SHORT BreakErr;
123 SHORT BreakRem;
124 SHORT BreakCount;
125 SHORT CharExtra;
126 COLORREF LbkColor;
127 COLORREF LTextColor;
128 } DRAWMODE, *LPDRAWMODE;
131 #pragma pack(4)
133 typedef struct WINE_ENUM_PRINTER_FONT_CALLBACK
135 DWORD magic; /* magic number */
136 int nMode; /* Mode 0=count, 1=store */
137 int nCount; /* Callback count */
138 LOADED_PRINTER_DRIVER *pLPD; /* Printer driver info */
139 } WEPFC;
141 #define OBJ_PEN 1
142 #define OBJ_BRUSH 2
143 #define OBJ_FONT 3
144 #define OBJ_PBITMAP 5
146 /* Win16 printer driver physical DC */
147 typedef struct
149 SEGPTR segptrPDEVICE; /* PDEVICE used by 16 bit printer drivers */
150 LOGFONT16 lf; /* Current font details */
151 TEXTMETRIC16 tm; /* Current font metrics */
152 SEGPTR segptrFontInfo; /* Current font realized by printer driver */
153 } WIN16DRV_PDEVICE;
156 * Printer driver functions
158 typedef SEGPTR LPPDEVICE;
159 LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver);
161 extern INT16 PRTDRV_Control(LPPDEVICE lpDestDev, WORD wfunction, SEGPTR lpInData, SEGPTR lpOutData);
162 extern WORD PRTDRV_Enable(LPVOID lpDevInfo, WORD wStyle, LPCSTR lpDestDevType,
163 LPCSTR lpDeviceName, LPCSTR lpOutputFile, LPVOID lpData);
164 extern WORD PRTDRV_EnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName,
165 FARPROC16 lpCallbackFunc, LPVOID lpClientData);
166 extern DWORD PRTDRV_RealizeObject(LPPDEVICE lpDestDev, WORD wStyle,
167 LPVOID lpInObj, LPVOID lpOutObj,
168 SEGPTR lpTextXForm);
170 extern BOOL16 PRTDRV_EnumObj(LPPDEVICE lpDestDev, WORD iStyle, FARPROC16 lpfn, LPVOID lpb);
171 extern DWORD PRTDRV_ExtTextOut(LPPDEVICE lpDestDev, WORD wDestXOrg, WORD wDestYOrg,
172 RECT16 *lpClipRect, LPCSTR lpString, WORD wCount,
173 SEGPTR lpFontInfo,SEGPTR lpDrawMode,
174 SEGPTR lpTextXForm, SHORT *lpCharWidths,
175 RECT16 * lpOpaqueRect, WORD wOptions);
178 /* Wine driver functions */
180 extern BOOL32 WIN16DRV_GetCharWidth( struct tagDC *dc, UINT32 firstChar, UINT32 lastChar,
181 LPINT32 buffer );
183 extern BOOL32 WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT32 count,
184 LPSIZE32 size );
185 extern BOOL32 WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRIC32A *metrics );
187 extern BOOL32 WIN16DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags,
188 const RECT32 *lprect, LPCSTR str, UINT32 count,
189 const INT32 *lpDx );
190 extern HGDIOBJ32 WIN16DRV_SelectObject( DC *dc, HGDIOBJ32 handle );
191 extern BOOL32 WIN16DRV_PatBlt( struct tagDC *dc, INT32 left, INT32 top,
192 INT32 width, INT32 height, DWORD rop );
197 * Wine 16bit driver global variables
199 extern SEGPTR win16drv_SegPtr_TextXForm;
200 extern LPTEXTXFORM16 win16drv_TextXFormP;
201 extern SEGPTR win16drv_SegPtr_DrawMode;
202 extern LPDRAWMODE win16drv_DrawModeP;
204 #endif /* __WINE_WIN16DRV_H */