Don't define MZ_SUPPORTED on non-i386 platforms.
[wine] / include / win16drv.h
1 /*
2  * Win16 printer driver definitions
3  */
4
5 #ifndef __WINE_WIN16DRV_H
6 #define __WINE_WIN16DRV_H
7
8 #include "windows.h"
9 #include "gdi.h"
10
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
20
21 #define     OS_ARC              3
22 #define     OS_SCANLINES        4
23 #define     OS_RECTANGLE        6
24 #define     OS_ELLIPSE          7
25 #define     OS_MARKER           8
26 #define     OS_POLYLINE         18
27 #define     OS_ALTPOLYGON       22
28 #define     OS_WINDPOLYGON      20
29 #define     OS_PIE              23
30 #define     OS_POLYMARKER       24
31 #define     OS_CHORD            39
32 #define     OS_CIRCLE           55
33 #define     OS_ROUNDRECT        72
34
35 /* Internal Data */
36 #define ORD_BITBLT              1
37 #define ORD_COLORINFO           2               
38 #define ORD_CONTROL             3
39 #define ORD_DISABLE             4
40 #define ORD_ENABLE              5
41 #define ORD_ENUMDFONTS          6
42 #define ORD_ENUMOBJ             7
43 #define ORD_OUTPUT              8
44 #define ORD_PIXEL               9       
45 #define ORD_REALIZEOBJECT       10
46 #define ORD_STRBLT              11
47 #define ORD_SCANLR              12
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
54
55 #define ORD_STRETCHBLT          27
56 #define ORD_STRETCHDIBITS       28
57 #define ORD_SELECTBITMAP        29
58 #define ORD_BITMAPBITS          30
59
60 #define ORD_EXTDEVICEMODE       90
61 #define ORD_DEVICECAPABILITIES  91
62 #define ORD_ADVANCEDSETUPDIALOG 93
63
64 #define ORD_DIALOGFN            100
65 #define ORD_PSEUDOEDIT          101
66                         
67 enum {
68     FUNC_BITBLT = 0,             
69     FUNC_COLORINFO,      
70     FUNC_CONTROL,       
71     FUNC_DISABLE,       
72     FUNC_ENABLE,                
73     FUNC_ENUMDFONTS,            
74     FUNC_ENUMOBJ,       
75     FUNC_OUTPUT,                
76     FUNC_PIXEL,                         
77     FUNC_REALIZEOBJECT,         
78     FUNC_STRBLT,                
79     FUNC_SCANLR,                
80     FUNC_DEVICEMODE,            
81     FUNC_EXTTEXTOUT,            
82     FUNC_GETCHARWIDTH,          
83     FUNC_DEVICEBITMAP,          
84     FUNC_FASTBORDER,         
85     FUNC_SETATTRIBUTE,                                  
86     FUNC_STRETCHBLT,            
87     FUNC_STRETCHDIBITS,         
88     FUNC_SELECTBITMAP,          
89     FUNC_BITMAPBITS,                                   
90     FUNC_EXTDEVICEMODE,         
91     FUNC_DEVICECAPABILITIES,    
92     FUNC_ADVANCEDSETUPDIALOG,                   
93     FUNC_DIALOGFN,              
94     FUNC_PSEUDOEDIT,
95     TOTAL_PRINTER_DRIVER_FUNCTIONS /* insert functions before here */
96 };
97
98 typedef struct
99 {
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;
107
108 typedef struct PDEVICE_HEADER
109 {
110     LOADED_PRINTER_DRIVER *pLPD;        /* Associated printer driver */
111 } PDEVICE_HEADER;
112
113 typedef short SHORT; 
114
115 #pragma pack(1)
116 #define PCOLOR DWORD
117 typedef struct DRAWMODE 
118 {
119     SHORT    Rop2;       
120     SHORT    bkMode;     
121     PCOLOR   bkColor;    
122     PCOLOR   TextColor;  
123     SHORT    TBreakExtra;
124     SHORT    BreakExtra; 
125     SHORT    BreakErr;   
126     SHORT    BreakRem;   
127     SHORT    BreakCount; 
128     SHORT    CharExtra;  
129     COLORREF LbkColor;   
130     COLORREF LTextColor; 
131 } DRAWMODE, *LPDRAWMODE;
132
133
134 #pragma pack(4)
135
136 typedef struct WINE_ENUM_PRINTER_FONT_CALLBACK
137 {
138     int (*proc)(LPENUMLOGFONT16, LPNEWTEXTMETRIC16, UINT16, LPARAM);
139     LPARAM lp;
140 } WEPFC;
141
142 #define DRVOBJ_PEN      1       
143 #define DRVOBJ_BRUSH    2  
144 #define DRVOBJ_FONT     3   
145 #define DRVOBJ_PBITMAP  5
146
147 /* Win16 printer driver physical DC */
148 typedef struct
149 {
150     SEGPTR              segptrPDEVICE;  /* PDEVICE used by 16 bit printer drivers */
151     LOGFONT16           lf;             /* Current font details */
152     TEXTMETRIC16        tm;             /* Current font metrics */
153     LPFONTINFO16        FontInfo;       /* Current font realized by printer driver */
154     LPLOGBRUSH16        BrushInfo;      /* Current brush realized by printer driver */
155     LPLOGPEN16          PenInfo;        /* Current pen realized by printer driver */
156 } WIN16DRV_PDEVICE;
157
158 /*
159  * Printer driver functions
160  */
161 typedef SEGPTR LPPDEVICE;
162 LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver);
163
164 extern INT16 PRTDRV_Control(LPPDEVICE lpDestDev, WORD wfunction, SEGPTR lpInData, SEGPTR lpOutData);
165 extern WORD PRTDRV_Enable(LPVOID lpDevInfo, WORD wStyle, LPCSTR  lpDestDevType, 
166                           LPCSTR lpDeviceName, LPCSTR lpOutputFile, LPVOID lpData);
167 extern WORD PRTDRV_EnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName,  
168                        FARPROC16 lpCallbackFunc, LPVOID lpClientData);
169 extern DWORD PRTDRV_RealizeObject(LPPDEVICE lpDestDev, WORD wStyle, 
170                                   LPVOID lpInObj, LPVOID lpOutObj,
171                                   SEGPTR lpTextXForm);
172
173 extern BOOL16 PRTDRV_EnumObj(LPPDEVICE lpDestDev, WORD iStyle, FARPROC16 lpfn, LPVOID lpb);
174 extern DWORD PRTDRV_ExtTextOut(LPPDEVICE lpDestDev, WORD wDestXOrg, WORD wDestYOrg,
175                                RECT16 *lpClipRect, LPCSTR lpString, WORD wCount, 
176                                LPFONTINFO16 lpFontInfo, SEGPTR lpDrawMode, 
177                                SEGPTR lpTextXForm, SHORT *lpCharWidths,
178                                RECT16 *     lpOpaqueRect, WORD wOptions);
179
180 extern WORD PRTDRV_Output(LPPDEVICE      lpDestDev,
181                           WORD   wStyle, 
182                           WORD   wCount,
183                           POINT16       *points, 
184                           LPLOGPEN16     lpPen,
185                           LPLOGBRUSH16   lpBrush,
186                           SEGPTR         lpDrawMode,
187                           HRGN32         hClipRgn);
188
189 DWORD PRTDRV_StretchBlt(LPPDEVICE lpDestDev,
190                         WORD wDestX, WORD wDestY,
191                         WORD wDestXext, WORD wDestYext, 
192                         LPPDEVICE lpSrcDev,
193                         WORD wSrcX, WORD wSrcY,
194                         WORD wSrcXext, WORD wSrcYext, 
195                         DWORD Rop3,
196                         LPLOGBRUSH16 lpBrush,
197                         SEGPTR lpDrawMode,
198                         RECT16 *lpClipRect);
199
200 extern WORD PRTDRV_GetCharWidth(LPPDEVICE lpDestDev, LPINT32 lpBuffer, 
201                       WORD wFirstChar, WORD wLastChar, LPFONTINFO16 lpFontInfo,
202                       SEGPTR lpDrawMode, SEGPTR lpTextXForm );
203
204 /* Wine driver functions */
205
206 extern BOOL32 WIN16DRV_Init(void);
207 extern BOOL32 WIN16DRV_GetCharWidth( struct tagDC *dc, UINT32 firstChar, UINT32 lastChar,
208                                    LPINT32 buffer );
209
210 extern BOOL32 WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT32 count,
211                                            LPSIZE32 size );
212 extern BOOL32 WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRIC32A *metrics );
213
214 extern BOOL32 WIN16DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags,
215                                   const RECT32 *lprect, LPCSTR str, UINT32 count,
216                                   const INT32 *lpDx );
217 extern BOOL32 WIN16DRV_LineTo( DC *dc, INT32 x, INT32 y );
218 extern BOOL32 WIN16DRV_MoveToEx(DC *dc,INT32 x,INT32 y,LPPOINT32 pt);
219 extern BOOL32 WIN16DRV_Polygon(DC *dc, const POINT32* pt, INT32 count );
220 extern BOOL32 WIN16DRV_Polyline(DC *dc, const POINT32* pt, INT32 count );
221 extern BOOL32 WIN16DRV_Rectangle(DC *dc, INT32 left, INT32 top, INT32 right, INT32 bottom);
222 extern HGDIOBJ32 WIN16DRV_SelectObject( DC *dc, HGDIOBJ32 handle );
223 extern BOOL32 WIN16DRV_PatBlt( struct tagDC *dc, INT32 left, INT32 top,
224                                INT32 width, INT32 height, DWORD rop );
225 extern BOOL32 WIN16DRV_Ellipse(DC *dc, INT32 left, INT32 top, INT32 right, INT32 bottom);
226 extern BOOL32 WIN16DRV_EnumDeviceFonts( DC* dc, LPLOGFONT16 plf, 
227                                         DEVICEFONTENUMPROC proc, LPARAM lp );
228
229
230 /*
231  * Wine 16bit driver global variables
232  */
233 extern SEGPTR           win16drv_SegPtr_TextXForm;
234 extern LPTEXTXFORM16    win16drv_TextXFormP;
235 extern SEGPTR           win16drv_SegPtr_DrawMode;
236 extern LPDRAWMODE       win16drv_DrawModeP;
237
238 #endif  /* __WINE_WIN16DRV_H */
239