| /* | |
| * Win16 printer driver definitions | |
| */ | |
| #ifndef __WINE_WIN16DRV_H | |
| #define __WINE_WIN16DRV_H | |
| #include "windef.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; | |
| #include "pshpack1.h" | |
| #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; | |
| DWORD ICMCXform; | |
| SHORT StretchBltMode; | |
| DWORD eMiterLimit; | |
| } DRAWMODE, *LPDRAWMODE; | |
| #include "poppack.h" | |
| 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, LPCWSTR 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, LPCWSTR 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 ); | |
| extern INT WIN16DRV_ExtDeviceMode(LPSTR lpszDriver, HWND hwnd, | |
| LPDEVMODEA lpdmOutput, | |
| LPSTR lpszDevice, | |
| LPSTR lpszPort, LPDEVMODEA lpdmInput, | |
| LPSTR lpszProfile, DWORD dwMode); | |
| extern DWORD WIN16DRV_DeviceCapabilities(LPSTR lpszDriver, LPCSTR lpszDevice, | |
| LPCSTR lpszPort, WORD fwCapability, | |
| LPSTR lpszOutput, LPDEVMODEA lpdm); | |
| /* | |
| * 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 */ | |