| /* |
| * Win16 printer driver definitions |
| * |
| * Copyright (C) the Wine project |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #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 |
| { |
| DEVICEFONTENUMPROC proc; |
| LPARAM lp; |
| } WEPFC; |
| |
| #define DRVOBJ_PEN 1 |
| #define DRVOBJ_BRUSH 2 |
| #define DRVOBJ_FONT 3 |
| #define DRVOBJ_PBITMAP 5 |
| |
| typedef struct tagDeviceCaps |
| { |
| WORD version; /* 0: driver version */ |
| WORD technology; /* 2: device technology */ |
| WORD horzSize; /* 4: width of display in mm */ |
| WORD vertSize; /* 6: height of display in mm */ |
| WORD horzRes; /* 8: width of display in pixels */ |
| WORD vertRes; /* 10: width of display in pixels */ |
| WORD bitsPixel; /* 12: bits per pixel */ |
| WORD planes; /* 14: color planes */ |
| WORD numBrushes; /* 16: device-specific brushes */ |
| WORD numPens; /* 18: device-specific pens */ |
| WORD numMarkers; /* 20: device-specific markers */ |
| WORD numFonts; /* 22: device-specific fonts */ |
| WORD numColors; /* 24: size of color table */ |
| WORD pdeviceSize; /* 26: size of PDEVICE structure */ |
| WORD curveCaps; /* 28: curve capabilities */ |
| WORD lineCaps; /* 30: line capabilities */ |
| WORD polygonalCaps; /* 32: polygon capabilities */ |
| WORD textCaps; /* 34: text capabilities */ |
| WORD clipCaps; /* 36: clipping capabilities */ |
| WORD rasterCaps; /* 38: raster capabilities */ |
| WORD aspectX; /* 40: relative width of device pixel */ |
| WORD aspectY; /* 42: relative height of device pixel */ |
| WORD aspectXY; /* 44: relative diagonal width of device pixel */ |
| WORD pad1[21]; /* 46-86: reserved */ |
| WORD logPixelsX; /* 88: pixels / logical X inch */ |
| WORD logPixelsY; /* 90: pixels / logical Y inch */ |
| WORD pad2[6]; /* 92-102: reserved */ |
| WORD sizePalette; /* 104: entries in system palette */ |
| WORD numReserved; /* 106: reserved entries */ |
| WORD colorRes; /* 108: color resolution */ |
| } DeviceCaps; |
| |
| /* 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 */ |
| HDC hdc; |
| DC *dc; |
| DeviceCaps DevCaps; /* Device caps */ |
| } 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 const DC_FUNCTIONS *WIN16DRV_Init(void); |
| extern BOOL WIN16DRV_GetCharWidth( PHYSDEV dev, UINT firstChar, UINT lastChar, LPINT buffer ); |
| |
| extern BOOL WIN16DRV_GetTextExtentPoint( PHYSDEV dev, LPCWSTR str, INT count, |
| LPSIZE size ); |
| extern BOOL WIN16DRV_GetTextMetrics( PHYSDEV dev, TEXTMETRICW *metrics ); |
| |
| extern BOOL WIN16DRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, |
| const RECT *lprect, LPCWSTR str, UINT count, |
| const INT *lpDx ); |
| extern BOOL WIN16DRV_LineTo( PHYSDEV dev, INT x, INT y ); |
| extern BOOL WIN16DRV_Polygon(PHYSDEV dev, const POINT* pt, INT count ); |
| extern BOOL WIN16DRV_Polyline(PHYSDEV dev, const POINT* pt, INT count ); |
| extern BOOL WIN16DRV_Rectangle(PHYSDEV dev, INT left, INT top, INT right, INT bottom); |
| extern HBITMAP WIN16DRV_SelectBitmap( PHYSDEV dev, HBITMAP handle ); |
| extern HBRUSH WIN16DRV_SelectBrush( PHYSDEV dev, HBRUSH handle ); |
| extern HFONT WIN16DRV_SelectFont( PHYSDEV dev, HFONT handle ); |
| extern HPEN WIN16DRV_SelectPen( PHYSDEV dev, HPEN handle ); |
| extern BOOL WIN16DRV_PatBlt( PHYSDEV dev, INT left, INT top, |
| INT width, INT height, DWORD rop ); |
| extern BOOL WIN16DRV_Ellipse(PHYSDEV dev, INT left, INT top, INT right, INT bottom); |
| extern BOOL WIN16DRV_EnumDeviceFonts( PHYSDEV dev, LPLOGFONTW 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 */ |
| |