Moved scrollbar tracking code to scroll.c.
[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 "windef.h"
9 #include "wingdi.h"
10 #include "gdi.h"
11
12 #define SETHIGHBIT 
13 #undef SETHIGHBIT
14 #ifdef SETHIGHBIT
15 #define GETGDIINFO  0x8001
16 #define INITPDEVICE 0x8000
17 #else
18 #define GETGDIINFO  0x0001
19 #define INITPDEVICE 0x0000
20 #endif
21
22 #define     OS_ARC              3
23 #define     OS_SCANLINES        4
24 #define     OS_RECTANGLE        6
25 #define     OS_ELLIPSE          7
26 #define     OS_MARKER           8
27 #define     OS_POLYLINE         18
28 #define     OS_ALTPOLYGON       22
29 #define     OS_WINDPOLYGON      20
30 #define     OS_PIE              23
31 #define     OS_POLYMARKER       24
32 #define     OS_CHORD            39
33 #define     OS_CIRCLE           55
34 #define     OS_ROUNDRECT        72
35
36 /* Internal Data */
37 #define ORD_BITBLT              1
38 #define ORD_COLORINFO           2               
39 #define ORD_CONTROL             3
40 #define ORD_DISABLE             4
41 #define ORD_ENABLE              5
42 #define ORD_ENUMDFONTS          6
43 #define ORD_ENUMOBJ             7
44 #define ORD_OUTPUT              8
45 #define ORD_PIXEL               9       
46 #define ORD_REALIZEOBJECT       10
47 #define ORD_STRBLT              11
48 #define ORD_SCANLR              12
49 #define ORD_DEVICEMODE          13
50 #define ORD_EXTTEXTOUT          14
51 #define ORD_GETCHARWIDTH        15
52 #define ORD_DEVICEBITMAP        16
53 #define ORD_FASTBORDER          17
54 #define ORD_SETATTRIBUTE        18
55
56 #define ORD_STRETCHBLT          27
57 #define ORD_STRETCHDIBITS       28
58 #define ORD_SELECTBITMAP        29
59 #define ORD_BITMAPBITS          30
60
61 #define ORD_EXTDEVICEMODE       90
62 #define ORD_DEVICECAPABILITIES  91
63 #define ORD_ADVANCEDSETUPDIALOG 93
64
65 #define ORD_DIALOGFN            100
66 #define ORD_PSEUDOEDIT          101
67                         
68 enum {
69     FUNC_BITBLT = 0,             
70     FUNC_COLORINFO,      
71     FUNC_CONTROL,       
72     FUNC_DISABLE,       
73     FUNC_ENABLE,                
74     FUNC_ENUMDFONTS,            
75     FUNC_ENUMOBJ,       
76     FUNC_OUTPUT,                
77     FUNC_PIXEL,                         
78     FUNC_REALIZEOBJECT,         
79     FUNC_STRBLT,                
80     FUNC_SCANLR,                
81     FUNC_DEVICEMODE,            
82     FUNC_EXTTEXTOUT,            
83     FUNC_GETCHARWIDTH,          
84     FUNC_DEVICEBITMAP,          
85     FUNC_FASTBORDER,         
86     FUNC_SETATTRIBUTE,                                  
87     FUNC_STRETCHBLT,            
88     FUNC_STRETCHDIBITS,         
89     FUNC_SELECTBITMAP,          
90     FUNC_BITMAPBITS,                                   
91     FUNC_EXTDEVICEMODE,         
92     FUNC_DEVICECAPABILITIES,    
93     FUNC_ADVANCEDSETUPDIALOG,                   
94     FUNC_DIALOGFN,              
95     FUNC_PSEUDOEDIT,
96     TOTAL_PRINTER_DRIVER_FUNCTIONS /* insert functions before here */
97 };
98
99 typedef struct
100 {
101     LPSTR       szDriver;               /* Driver name eg EPSON */
102     HINSTANCE16 hInst;                  /* Handle for driver */
103     WORD        ds_reg;                 /* DS of driver */
104     FARPROC16   fn[TOTAL_PRINTER_DRIVER_FUNCTIONS];     /* Printer functions */
105     int         nUsageCount;            /* Usage count, unload == 0 */
106     int         nIndex;                 /* Index in global driver array */
107 } LOADED_PRINTER_DRIVER;
108
109 typedef struct PDEVICE_HEADER
110 {
111     LOADED_PRINTER_DRIVER *pLPD;        /* Associated printer driver */
112 } PDEVICE_HEADER;
113
114 #include "pshpack1.h"
115 #define PCOLOR DWORD
116 typedef struct DRAWMODE 
117 {
118     SHORT    Rop2;       
119     SHORT    bkMode;     
120     PCOLOR   bkColor;    
121     PCOLOR   TextColor;  
122     SHORT    TBreakExtra;
123     SHORT    BreakExtra; 
124     SHORT    BreakErr;   
125     SHORT    BreakRem;   
126     SHORT    BreakCount; 
127     SHORT    CharExtra;  
128     COLORREF LbkColor;   
129     COLORREF LTextColor;
130     DWORD    ICMCXform;
131     SHORT    StretchBltMode;
132     DWORD    eMiterLimit;
133 } DRAWMODE, *LPDRAWMODE;
134
135
136 #include "poppack.h"
137
138 typedef struct WINE_ENUM_PRINTER_FONT_CALLBACK
139 {
140     DEVICEFONTENUMPROC proc;
141     LPARAM lp;
142 } WEPFC;
143
144 #define DRVOBJ_PEN      1       
145 #define DRVOBJ_BRUSH    2  
146 #define DRVOBJ_FONT     3   
147 #define DRVOBJ_PBITMAP  5
148
149 typedef struct tagDeviceCaps
150 {
151     WORD   version;       /*   0: driver version */
152     WORD   technology;    /*   2: device technology */
153     WORD   horzSize;      /*   4: width of display in mm */
154     WORD   vertSize;      /*   6: height of display in mm */
155     WORD   horzRes;       /*   8: width of display in pixels */
156     WORD   vertRes;       /*  10: width of display in pixels */
157     WORD   bitsPixel;     /*  12: bits per pixel */
158     WORD   planes;        /*  14: color planes */
159     WORD   numBrushes;    /*  16: device-specific brushes */
160     WORD   numPens;       /*  18: device-specific pens */
161     WORD   numMarkers;    /*  20: device-specific markers */
162     WORD   numFonts;      /*  22: device-specific fonts */
163     WORD   numColors;     /*  24: size of color table */
164     WORD   pdeviceSize;   /*  26: size of PDEVICE structure */
165     WORD   curveCaps;     /*  28: curve capabilities */
166     WORD   lineCaps;      /*  30: line capabilities */
167     WORD   polygonalCaps; /*  32: polygon capabilities */
168     WORD   textCaps;      /*  34: text capabilities */
169     WORD   clipCaps;      /*  36: clipping capabilities */
170     WORD   rasterCaps;    /*  38: raster capabilities */
171     WORD   aspectX;       /*  40: relative width of device pixel */
172     WORD   aspectY;       /*  42: relative height of device pixel */
173     WORD   aspectXY;      /*  44: relative diagonal width of device pixel */
174     WORD   pad1[21];      /*  46-86: reserved */
175     WORD   logPixelsX;    /*  88: pixels / logical X inch */
176     WORD   logPixelsY;    /*  90: pixels / logical Y inch */
177     WORD   pad2[6];       /*  92-102: reserved */
178     WORD   sizePalette;   /* 104: entries in system palette */
179     WORD   numReserved;   /* 106: reserved entries */
180     WORD   colorRes;      /* 108: color resolution */
181 } DeviceCaps;
182
183 /* Win16 printer driver physical DC */
184 typedef struct
185 {
186     SEGPTR              segptrPDEVICE;  /* PDEVICE used by 16 bit printer drivers */
187     LOGFONT16           lf;             /* Current font details */
188     TEXTMETRIC16        tm;             /* Current font metrics */
189     LPFONTINFO16        FontInfo;       /* Current font realized by printer driver */
190     LPLOGBRUSH16        BrushInfo;      /* Current brush realized by printer driver */
191     LPLOGPEN16          PenInfo;        /* Current pen realized by printer driver */
192     DeviceCaps          DevCaps;        /* Device caps */
193 } WIN16DRV_PDEVICE;
194
195 /*
196  * Printer driver functions
197  */
198 typedef SEGPTR LPPDEVICE;
199 LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver);
200
201 extern INT16 PRTDRV_Control(LPPDEVICE lpDestDev, WORD wfunction, SEGPTR lpInData, SEGPTR lpOutData);
202 extern WORD PRTDRV_Enable(LPVOID lpDevInfo, WORD wStyle, LPCSTR  lpDestDevType, 
203                           LPCSTR lpDeviceName, LPCSTR lpOutputFile, LPVOID lpData);
204 extern WORD PRTDRV_EnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName,  
205                        FARPROC16 lpCallbackFunc, LPVOID lpClientData);
206 extern DWORD PRTDRV_RealizeObject(LPPDEVICE lpDestDev, WORD wStyle, 
207                                   LPVOID lpInObj, LPVOID lpOutObj,
208                                   SEGPTR lpTextXForm);
209
210 extern BOOL16 PRTDRV_EnumObj(LPPDEVICE lpDestDev, WORD iStyle, FARPROC16 lpfn, LPVOID lpb);
211 extern DWORD PRTDRV_ExtTextOut(LPPDEVICE lpDestDev, WORD wDestXOrg, WORD wDestYOrg,
212                                RECT16 *lpClipRect, LPCSTR lpString, WORD wCount, 
213                                LPFONTINFO16 lpFontInfo, SEGPTR lpDrawMode, 
214                                SEGPTR lpTextXForm, SHORT *lpCharWidths,
215                                RECT16 *     lpOpaqueRect, WORD wOptions);
216
217 extern WORD PRTDRV_Output(LPPDEVICE      lpDestDev,
218                           WORD   wStyle, 
219                           WORD   wCount,
220                           POINT16       *points, 
221                           LPLOGPEN16     lpPen,
222                           LPLOGBRUSH16   lpBrush,
223                           SEGPTR         lpDrawMode,
224                           HRGN   hClipRgn);
225
226 DWORD PRTDRV_StretchBlt(LPPDEVICE lpDestDev,
227                         WORD wDestX, WORD wDestY,
228                         WORD wDestXext, WORD wDestYext, 
229                         LPPDEVICE lpSrcDev,
230                         WORD wSrcX, WORD wSrcY,
231                         WORD wSrcXext, WORD wSrcYext, 
232                         DWORD Rop3,
233                         LPLOGBRUSH16 lpBrush,
234                         SEGPTR lpDrawMode,
235                         RECT16 *lpClipRect);
236
237 extern WORD PRTDRV_GetCharWidth(LPPDEVICE lpDestDev, LPINT lpBuffer, 
238                       WORD wFirstChar, WORD wLastChar, LPFONTINFO16 lpFontInfo,
239                       SEGPTR lpDrawMode, SEGPTR lpTextXForm );
240
241 /* Wine driver functions */
242
243 extern const DC_FUNCTIONS *WIN16DRV_Init(void);
244 extern BOOL WIN16DRV_GetCharWidth( struct tagDC *dc, UINT firstChar, UINT lastChar,
245                                    LPINT buffer );
246
247 extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCWSTR str, INT count,
248                                            LPSIZE size );
249 extern BOOL WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRICW *metrics );
250
251 extern BOOL WIN16DRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags,
252                                   const RECT *lprect, LPCWSTR str, UINT count,
253                                   const INT *lpDx );
254 extern BOOL WIN16DRV_LineTo( DC *dc, INT x, INT y );
255 extern BOOL WIN16DRV_Polygon(DC *dc, const POINT* pt, INT count );
256 extern BOOL WIN16DRV_Polyline(DC *dc, const POINT* pt, INT count );
257 extern BOOL WIN16DRV_Rectangle(DC *dc, INT left, INT top, INT right, INT bottom);
258 extern HGDIOBJ WIN16DRV_SelectObject( DC *dc, HGDIOBJ handle );
259 extern BOOL WIN16DRV_PatBlt( struct tagDC *dc, INT left, INT top,
260                                INT width, INT height, DWORD rop );
261 extern BOOL WIN16DRV_Ellipse(DC *dc, INT left, INT top, INT right, INT bottom);
262 extern BOOL WIN16DRV_EnumDeviceFonts( HDC hdc, LPLOGFONTW plf, 
263                                       DEVICEFONTENUMPROC proc, LPARAM lp );
264
265 extern INT WIN16DRV_ExtDeviceMode(LPSTR lpszDriver, HWND hwnd,
266                                   LPDEVMODEA lpdmOutput,
267                                   LPSTR lpszDevice,
268                                   LPSTR lpszPort, LPDEVMODEA lpdmInput,
269                                   LPSTR lpszProfile, DWORD dwMode);
270 extern DWORD WIN16DRV_DeviceCapabilities(LPSTR lpszDriver, LPCSTR lpszDevice,
271                                          LPCSTR lpszPort, WORD fwCapability,
272                                          LPSTR lpszOutput, LPDEVMODEA lpdm);
273
274 extern HBRUSH WIN16DRV_BRUSH_SelectObject( DC * dc, HBRUSH hbrush );
275 extern HFONT WIN16DRV_FONT_SelectObject( DC * dc, HFONT hfont );
276 extern HPEN WIN16DRV_PEN_SelectObject( DC * dc, HPEN hpen );
277
278 /*
279  * Wine 16bit driver global variables
280  */
281 extern SEGPTR           win16drv_SegPtr_TextXForm;
282 extern LPTEXTXFORM16    win16drv_TextXFormP;
283 extern SEGPTR           win16drv_SegPtr_DrawMode;
284 extern LPDRAWMODE       win16drv_DrawModeP;
285
286 #endif  /* __WINE_WIN16DRV_H */
287