/* * Win16 printer driver definitions */ #ifndef __WINE_WIN16DRV_H #define __WINE_WIN16DRV_H #include "windows.h" #include "gdi.h" #define SETHIGHBIT #undef SETHIGHBIT #ifdef SETHIGHBIT #define GETGDIINFO 0x8001 #define INITPDEVICE 0x8000 #else #define GETGDIINFO 0x0001 #define INITPDEVICE 0x0000 #endif /* 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 PRINTER_FONTS_INFO { LOGFONT16 lf; /* LogFont infomation */ TEXTMETRIC16 tm; /* Text metrics infomation */ } PRINTER_FONTS_INFO; typedef struct { char szDriver[9]; /* 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 nPrinterFonts; /* Number of printer fonts */ PRINTER_FONTS_INFO *paPrinterFonts; /* array of printer fonts */ int nIndex; /* Index in global driver array */ HGLOBAL16 hThunk; /* Thunking buffer */ SEGPTR ThunkBufSegPtr; SEGPTR ThunkBufLimit; } LOADED_PRINTER_DRIVER; typedef struct PDEVICE_HEADER { LOADED_PRINTER_DRIVER *pLPD; /* Associated printer driver */ } PDEVICE_HEADER; typedef short SHORT; #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 { DWORD magic; /* magic number */ int nMode; /* Mode 0=count, 1=store */ int nCount; /* Callback count */ LOADED_PRINTER_DRIVER *pLPD; /* Printer driver info */ } WEPFC; #define OBJ_PEN 1 #define OBJ_BRUSH 2 #define OBJ_FONT 3 #define OBJ_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 */ SEGPTR segptrFontInfo; /* Current font 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, SEGPTR lpFontInfo,SEGPTR lpDrawMode, SEGPTR lpTextXForm, SHORT *lpCharWidths, RECT16 * lpOpaqueRect, WORD wOptions); /* Wine driver functions */ extern BOOL32 WIN16DRV_GetCharWidth( struct tagDC *dc, UINT32 firstChar, UINT32 lastChar, LPINT32 buffer ); extern BOOL32 WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT32 count, LPSIZE32 size ); extern BOOL32 WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRIC32A *metrics ); extern BOOL32 WIN16DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags, const RECT32 *lprect, LPCSTR str, UINT32 count, const INT32 *lpDx ); extern HGDIOBJ32 WIN16DRV_SelectObject( DC *dc, HGDIOBJ32 handle ); extern BOOL32 WIN16DRV_PatBlt( struct tagDC *dc, INT32 left, INT32 top, INT32 width, INT32 height, DWORD rop ); /* * 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 */