Replaced direct access to the WND structure by corresponding calls to
[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 "wingdi.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 #pragma pack(1)
114 #define PCOLOR DWORD
115 typedef struct DRAWMODE 
116 {
117     SHORT    Rop2;       
118     SHORT    bkMode;     
119     PCOLOR   bkColor;    
120     PCOLOR   TextColor;  
121     SHORT    TBreakExtra;
122     SHORT    BreakExtra; 
123     SHORT    BreakErr;   
124     SHORT    BreakRem;   
125     SHORT    BreakCount; 
126     SHORT    CharExtra;  
127     COLORREF LbkColor;   
128     COLORREF LTextColor; 
129 } DRAWMODE, *LPDRAWMODE;
130
131
132 #pragma pack(4)
133
134 typedef struct WINE_ENUM_PRINTER_FONT_CALLBACK
135 {
136     int (*proc)(LPENUMLOGFONT16, LPNEWTEXTMETRIC16, UINT16, LPARAM);
137     LPARAM lp;
138 } WEPFC;
139
140 #define DRVOBJ_PEN      1       
141 #define DRVOBJ_BRUSH    2  
142 #define DRVOBJ_FONT     3   
143 #define DRVOBJ_PBITMAP  5
144
145 /* Win16 printer driver physical DC */
146 typedef struct
147 {
148     SEGPTR              segptrPDEVICE;  /* PDEVICE used by 16 bit printer drivers */
149     LOGFONT16           lf;             /* Current font details */
150     TEXTMETRIC16        tm;             /* Current font metrics */
151     LPFONTINFO16        FontInfo;       /* Current font realized by printer driver */
152     LPLOGBRUSH16        BrushInfo;      /* Current brush realized by printer driver */
153     LPLOGPEN16          PenInfo;        /* Current pen realized by printer driver */
154 } WIN16DRV_PDEVICE;
155
156 /*
157  * Printer driver functions
158  */
159 typedef SEGPTR LPPDEVICE;
160 LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver);
161
162 extern INT16 PRTDRV_Control(LPPDEVICE lpDestDev, WORD wfunction, SEGPTR lpInData, SEGPTR lpOutData);
163 extern WORD PRTDRV_Enable(LPVOID lpDevInfo, WORD wStyle, LPCSTR  lpDestDevType, 
164                           LPCSTR lpDeviceName, LPCSTR lpOutputFile, LPVOID lpData);
165 extern WORD PRTDRV_EnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName,  
166                        FARPROC16 lpCallbackFunc, LPVOID lpClientData);
167 extern DWORD PRTDRV_RealizeObject(LPPDEVICE lpDestDev, WORD wStyle, 
168                                   LPVOID lpInObj, LPVOID lpOutObj,
169                                   SEGPTR lpTextXForm);
170
171 extern BOOL16 PRTDRV_EnumObj(LPPDEVICE lpDestDev, WORD iStyle, FARPROC16 lpfn, LPVOID lpb);
172 extern DWORD PRTDRV_ExtTextOut(LPPDEVICE lpDestDev, WORD wDestXOrg, WORD wDestYOrg,
173                                RECT16 *lpClipRect, LPCSTR lpString, WORD wCount, 
174                                LPFONTINFO16 lpFontInfo, SEGPTR lpDrawMode, 
175                                SEGPTR lpTextXForm, SHORT *lpCharWidths,
176                                RECT16 *     lpOpaqueRect, WORD wOptions);
177
178 extern WORD PRTDRV_Output(LPPDEVICE      lpDestDev,
179                           WORD   wStyle, 
180                           WORD   wCount,
181                           POINT16       *points, 
182                           LPLOGPEN16     lpPen,
183                           LPLOGBRUSH16   lpBrush,
184                           SEGPTR         lpDrawMode,
185                           HRGN   hClipRgn);
186
187 DWORD PRTDRV_StretchBlt(LPPDEVICE lpDestDev,
188                         WORD wDestX, WORD wDestY,
189                         WORD wDestXext, WORD wDestYext, 
190                         LPPDEVICE lpSrcDev,
191                         WORD wSrcX, WORD wSrcY,
192                         WORD wSrcXext, WORD wSrcYext, 
193                         DWORD Rop3,
194                         LPLOGBRUSH16 lpBrush,
195                         SEGPTR lpDrawMode,
196                         RECT16 *lpClipRect);
197
198 extern WORD PRTDRV_GetCharWidth(LPPDEVICE lpDestDev, LPINT lpBuffer, 
199                       WORD wFirstChar, WORD wLastChar, LPFONTINFO16 lpFontInfo,
200                       SEGPTR lpDrawMode, SEGPTR lpTextXForm );
201
202 /* Wine driver functions */
203
204 extern BOOL WIN16DRV_Init(void);
205 extern BOOL WIN16DRV_GetCharWidth( struct tagDC *dc, UINT firstChar, UINT lastChar,
206                                    LPINT buffer );
207
208 extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count,
209                                            LPSIZE size );
210 extern BOOL WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics );
211
212 extern BOOL WIN16DRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags,
213                                   const RECT *lprect, LPCSTR str, UINT count,
214                                   const INT *lpDx );
215 extern BOOL WIN16DRV_LineTo( DC *dc, INT x, INT y );
216 extern BOOL WIN16DRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt);
217 extern BOOL WIN16DRV_Polygon(DC *dc, const POINT* pt, INT count );
218 extern BOOL WIN16DRV_Polyline(DC *dc, const POINT* pt, INT count );
219 extern BOOL WIN16DRV_Rectangle(DC *dc, INT left, INT top, INT right, INT bottom);
220 extern HGDIOBJ WIN16DRV_SelectObject( DC *dc, HGDIOBJ handle );
221 extern BOOL WIN16DRV_PatBlt( struct tagDC *dc, INT left, INT top,
222                                INT width, INT height, DWORD rop );
223 extern BOOL WIN16DRV_Ellipse(DC *dc, INT left, INT top, INT right, INT bottom);
224 extern BOOL WIN16DRV_EnumDeviceFonts( DC* dc, LPLOGFONT16 plf, 
225                                         DEVICEFONTENUMPROC proc, LPARAM lp );
226
227
228 /*
229  * Wine 16bit driver global variables
230  */
231 extern SEGPTR           win16drv_SegPtr_TextXForm;
232 extern LPTEXTXFORM16    win16drv_TextXFormP;
233 extern SEGPTR           win16drv_SegPtr_DrawMode;
234 extern LPDRAWMODE       win16drv_DrawModeP;
235
236 #endif  /* __WINE_WIN16DRV_H */
237