|  | /* | 
|  | * Win16 printer driver definitions | 
|  | */ | 
|  |  | 
|  | #ifndef __WINE_WIN16DRV_H | 
|  | #define __WINE_WIN16DRV_H | 
|  |  | 
|  | #include "wingdi.h" | 
|  | #include "gdi.h" | 
|  |  | 
|  | #define SETHIGHBIT | 
|  | #undef SETHIGHBIT | 
|  | #ifdef SETHIGHBIT | 
|  | #define GETGDIINFO  0x8001 | 
|  | #define INITPDEVICE 0x8000 | 
|  | #else | 
|  | #define GETGDIINFO  0x0001 | 
|  | #define INITPDEVICE 0x0000 | 
|  | #endif | 
|  |  | 
|  | #define     OS_ARC		3 | 
|  | #define     OS_SCANLINES	4 | 
|  | #define     OS_RECTANGLE	6 | 
|  | #define     OS_ELLIPSE		7 | 
|  | #define     OS_MARKER		8 | 
|  | #define     OS_POLYLINE 	18 | 
|  | #define     OS_ALTPOLYGON	22 | 
|  | #define     OS_WINDPOLYGON	20 | 
|  | #define     OS_PIE		23 | 
|  | #define     OS_POLYMARKER	24 | 
|  | #define     OS_CHORD		39 | 
|  | #define     OS_CIRCLE		55 | 
|  | #define     OS_ROUNDRECT	72 | 
|  |  | 
|  | /* Internal Data */ | 
|  | #define ORD_BITBLT		1 | 
|  | #define ORD_COLORINFO		2 | 
|  | #define ORD_CONTROL		3 | 
|  | #define ORD_DISABLE		4 | 
|  | #define ORD_ENABLE		5 | 
|  | #define ORD_ENUMDFONTS		6 | 
|  | #define ORD_ENUMOBJ		7 | 
|  | #define ORD_OUTPUT		8 | 
|  | #define ORD_PIXEL		9 | 
|  | #define ORD_REALIZEOBJECT	10 | 
|  | #define ORD_STRBLT		11 | 
|  | #define ORD_SCANLR		12 | 
|  | #define ORD_DEVICEMODE		13 | 
|  | #define ORD_EXTTEXTOUT		14 | 
|  | #define ORD_GETCHARWIDTH	15 | 
|  | #define ORD_DEVICEBITMAP	16 | 
|  | #define ORD_FASTBORDER		17 | 
|  | #define ORD_SETATTRIBUTE	18 | 
|  |  | 
|  | #define ORD_STRETCHBLT		27 | 
|  | #define ORD_STRETCHDIBITS	28 | 
|  | #define ORD_SELECTBITMAP	29 | 
|  | #define ORD_BITMAPBITS		30 | 
|  |  | 
|  | #define ORD_EXTDEVICEMODE	90 | 
|  | #define ORD_DEVICECAPABILITIES	91 | 
|  | #define ORD_ADVANCEDSETUPDIALOG	93 | 
|  |  | 
|  | #define ORD_DIALOGFN		100 | 
|  | #define ORD_PSEUDOEDIT		101 | 
|  |  | 
|  | enum { | 
|  | FUNC_BITBLT = 0, | 
|  | FUNC_COLORINFO, | 
|  | FUNC_CONTROL, | 
|  | FUNC_DISABLE, | 
|  | FUNC_ENABLE, | 
|  | FUNC_ENUMDFONTS, | 
|  | FUNC_ENUMOBJ, | 
|  | FUNC_OUTPUT, | 
|  | FUNC_PIXEL, | 
|  | FUNC_REALIZEOBJECT, | 
|  | FUNC_STRBLT, | 
|  | FUNC_SCANLR, | 
|  | FUNC_DEVICEMODE, | 
|  | FUNC_EXTTEXTOUT, | 
|  | FUNC_GETCHARWIDTH, | 
|  | FUNC_DEVICEBITMAP, | 
|  | FUNC_FASTBORDER, | 
|  | FUNC_SETATTRIBUTE, | 
|  | FUNC_STRETCHBLT, | 
|  | FUNC_STRETCHDIBITS, | 
|  | FUNC_SELECTBITMAP, | 
|  | FUNC_BITMAPBITS, | 
|  | FUNC_EXTDEVICEMODE, | 
|  | FUNC_DEVICECAPABILITIES, | 
|  | FUNC_ADVANCEDSETUPDIALOG, | 
|  | FUNC_DIALOGFN, | 
|  | FUNC_PSEUDOEDIT, | 
|  | TOTAL_PRINTER_DRIVER_FUNCTIONS /* insert functions before here */ | 
|  | }; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | LPSTR 	szDriver;		/* Driver name eg EPSON */ | 
|  | HINSTANCE16	hInst;			/* Handle for driver */ | 
|  | WORD	ds_reg;			/* DS of driver */ | 
|  | FARPROC16 	fn[TOTAL_PRINTER_DRIVER_FUNCTIONS];	/* Printer functions */ | 
|  | int		nUsageCount;		/* Usage count, unload == 0 */ | 
|  | int		nIndex;			/* Index in global driver array */ | 
|  | } LOADED_PRINTER_DRIVER; | 
|  |  | 
|  | typedef struct PDEVICE_HEADER | 
|  | { | 
|  | LOADED_PRINTER_DRIVER *pLPD;	/* Associated printer driver */ | 
|  | } PDEVICE_HEADER; | 
|  |  | 
|  | #pragma pack(1) | 
|  | #define PCOLOR DWORD | 
|  | typedef struct DRAWMODE | 
|  | { | 
|  | SHORT    Rop2; | 
|  | SHORT    bkMode; | 
|  | PCOLOR   bkColor; | 
|  | PCOLOR   TextColor; | 
|  | SHORT    TBreakExtra; | 
|  | SHORT    BreakExtra; | 
|  | SHORT    BreakErr; | 
|  | SHORT    BreakRem; | 
|  | SHORT    BreakCount; | 
|  | SHORT    CharExtra; | 
|  | COLORREF LbkColor; | 
|  | COLORREF LTextColor; | 
|  | } DRAWMODE, *LPDRAWMODE; | 
|  |  | 
|  |  | 
|  | #pragma pack(4) | 
|  |  | 
|  | typedef struct WINE_ENUM_PRINTER_FONT_CALLBACK | 
|  | { | 
|  | int (*proc)(LPENUMLOGFONT16, LPNEWTEXTMETRIC16, UINT16, LPARAM); | 
|  | LPARAM lp; | 
|  | } WEPFC; | 
|  |  | 
|  | #define DRVOBJ_PEN 	1 | 
|  | #define DRVOBJ_BRUSH 	2 | 
|  | #define DRVOBJ_FONT 	3 | 
|  | #define DRVOBJ_PBITMAP 	5 | 
|  |  | 
|  | /* Win16 printer driver physical DC */ | 
|  | typedef struct | 
|  | { | 
|  | SEGPTR		segptrPDEVICE;	/* PDEVICE used by 16 bit printer drivers */ | 
|  | LOGFONT16		lf;		/* Current font details */ | 
|  | TEXTMETRIC16	tm;		/* Current font metrics */ | 
|  | LPFONTINFO16       	FontInfo;       /* Current font realized by printer driver */ | 
|  | LPLOGBRUSH16	BrushInfo;      /* Current brush realized by printer driver */ | 
|  | LPLOGPEN16		PenInfo;        /* Current pen realized by printer driver */ | 
|  | } WIN16DRV_PDEVICE; | 
|  |  | 
|  | /* | 
|  | * Printer driver functions | 
|  | */ | 
|  | typedef SEGPTR LPPDEVICE; | 
|  | LOADED_PRINTER_DRIVER *LoadPrinterDriver(const char *pszDriver); | 
|  |  | 
|  | extern INT16 PRTDRV_Control(LPPDEVICE lpDestDev, WORD wfunction, SEGPTR lpInData, SEGPTR lpOutData); | 
|  | extern WORD PRTDRV_Enable(LPVOID lpDevInfo, WORD wStyle, LPCSTR  lpDestDevType, | 
|  | LPCSTR lpDeviceName, LPCSTR lpOutputFile, LPVOID lpData); | 
|  | extern WORD PRTDRV_EnumDFonts(LPPDEVICE lpDestDev, LPSTR lpFaceName, | 
|  | FARPROC16 lpCallbackFunc, LPVOID lpClientData); | 
|  | extern DWORD PRTDRV_RealizeObject(LPPDEVICE lpDestDev, WORD wStyle, | 
|  | LPVOID lpInObj, LPVOID lpOutObj, | 
|  | SEGPTR lpTextXForm); | 
|  |  | 
|  | extern BOOL16 PRTDRV_EnumObj(LPPDEVICE lpDestDev, WORD iStyle, FARPROC16 lpfn, LPVOID lpb); | 
|  | extern DWORD PRTDRV_ExtTextOut(LPPDEVICE lpDestDev, WORD wDestXOrg, WORD wDestYOrg, | 
|  | RECT16 *lpClipRect, LPCSTR lpString, WORD wCount, | 
|  | LPFONTINFO16 lpFontInfo, SEGPTR lpDrawMode, | 
|  | SEGPTR lpTextXForm, SHORT *lpCharWidths, | 
|  | RECT16 *     lpOpaqueRect, WORD wOptions); | 
|  |  | 
|  | extern WORD PRTDRV_Output(LPPDEVICE 	 lpDestDev, | 
|  | WORD 	 wStyle, | 
|  | WORD 	 wCount, | 
|  | POINT16       *points, | 
|  | LPLOGPEN16 	 lpPen, | 
|  | LPLOGBRUSH16	 lpBrush, | 
|  | SEGPTR	 lpDrawMode, | 
|  | HRGN 	 hClipRgn); | 
|  |  | 
|  | DWORD PRTDRV_StretchBlt(LPPDEVICE lpDestDev, | 
|  | WORD wDestX, WORD wDestY, | 
|  | WORD wDestXext, WORD wDestYext, | 
|  | LPPDEVICE lpSrcDev, | 
|  | WORD wSrcX, WORD wSrcY, | 
|  | WORD wSrcXext, WORD wSrcYext, | 
|  | DWORD Rop3, | 
|  | LPLOGBRUSH16 lpBrush, | 
|  | SEGPTR lpDrawMode, | 
|  | RECT16 *lpClipRect); | 
|  |  | 
|  | extern WORD PRTDRV_GetCharWidth(LPPDEVICE lpDestDev, LPINT lpBuffer, | 
|  | WORD wFirstChar, WORD wLastChar, LPFONTINFO16 lpFontInfo, | 
|  | SEGPTR lpDrawMode, SEGPTR lpTextXForm ); | 
|  |  | 
|  | /* Wine driver functions */ | 
|  |  | 
|  | extern BOOL WIN16DRV_Init(void); | 
|  | extern BOOL WIN16DRV_GetCharWidth( struct tagDC *dc, UINT firstChar, UINT lastChar, | 
|  | LPINT buffer ); | 
|  |  | 
|  | extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count, | 
|  | LPSIZE size ); | 
|  | extern BOOL WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics ); | 
|  |  | 
|  | extern BOOL WIN16DRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags, | 
|  | const RECT *lprect, LPCSTR str, UINT count, | 
|  | const INT *lpDx ); | 
|  | extern BOOL WIN16DRV_LineTo( DC *dc, INT x, INT y ); | 
|  | extern BOOL WIN16DRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt); | 
|  | extern BOOL WIN16DRV_Polygon(DC *dc, const POINT* pt, INT count ); | 
|  | extern BOOL WIN16DRV_Polyline(DC *dc, const POINT* pt, INT count ); | 
|  | extern BOOL WIN16DRV_Rectangle(DC *dc, INT left, INT top, INT right, INT bottom); | 
|  | extern HGDIOBJ WIN16DRV_SelectObject( DC *dc, HGDIOBJ handle ); | 
|  | extern BOOL WIN16DRV_PatBlt( struct tagDC *dc, INT left, INT top, | 
|  | INT width, INT height, DWORD rop ); | 
|  | extern BOOL WIN16DRV_Ellipse(DC *dc, INT left, INT top, INT right, INT bottom); | 
|  | extern BOOL WIN16DRV_EnumDeviceFonts( DC* dc, LPLOGFONT16 plf, | 
|  | DEVICEFONTENUMPROC proc, LPARAM lp ); | 
|  |  | 
|  |  | 
|  | /* | 
|  | * Wine 16bit driver global variables | 
|  | */ | 
|  | extern SEGPTR		win16drv_SegPtr_TextXForm; | 
|  | extern LPTEXTXFORM16 	win16drv_TextXFormP; | 
|  | extern SEGPTR		win16drv_SegPtr_DrawMode; | 
|  | extern LPDRAWMODE 	win16drv_DrawModeP; | 
|  |  | 
|  | #endif  /* __WINE_WIN16DRV_H */ | 
|  |  |