1713 lines
37 KiB
C
1713 lines
37 KiB
C
/*++
|
|
|
|
Copyright (c) 1996-1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
printoem.h
|
|
|
|
Abstract:
|
|
|
|
Declarations for Windows NT printer driver OEM plugins
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _PRINTOEM_
|
|
#define _PRINTOEM_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//
|
|
// Current OEM plugin interface version number
|
|
//
|
|
|
|
#define PRINTER_OEMINTF_VERSION 0x00010000
|
|
|
|
#define OEM_MODE_PUBLISHER 0x00000001
|
|
|
|
typedef struct _PUBLISHERINFO {
|
|
|
|
DWORD dwMode; // flags for publisher
|
|
WORD wMinoutlinePPEM; // min size to download as Type1
|
|
WORD wMaxbitmapPPEM; // max size to download as Type3
|
|
|
|
} PUBLISHERINFO, *PPUBLISHERINFO;
|
|
|
|
#define OEMGI_GETSIGNATURE 1
|
|
#define OEMGI_GETINTERFACEVERSION 2
|
|
#define OEMGI_GETVERSION 3
|
|
#define OEMGI_GETPUBLISHERINFO 4
|
|
|
|
//
|
|
// OEMGetInfo
|
|
//
|
|
BOOL APIENTRY
|
|
OEMGetInfo(
|
|
IN DWORD dwMode,
|
|
OUT PVOID pBuffer,
|
|
IN DWORD cbSize,
|
|
OUT PDWORD pcbNeeded
|
|
);
|
|
|
|
BOOL APIENTRY
|
|
OEMDriverDMS(
|
|
PVOID pDevObj,
|
|
PVOID pBuffer,
|
|
DWORD cbSize,
|
|
PDWORD pcbNeeded
|
|
);
|
|
|
|
//
|
|
// OEMDevMode
|
|
//
|
|
|
|
#define OEMDM_SIZE 1
|
|
#define OEMDM_DEFAULT 2
|
|
#define OEMDM_CONVERT 3
|
|
#define OEMDM_MERGE 4
|
|
|
|
typedef struct _OEMDMPARAM {
|
|
|
|
DWORD cbSize; // size of OEM_DEVMODEPARAM
|
|
PVOID pdriverobj; // reference to driver data structure
|
|
HANDLE hPrinter; // PRINTER handle
|
|
HANDLE hModule; // OEM module handle
|
|
PDEVMODE pPublicDMIn; // public devmode in
|
|
PDEVMODE pPublicDMOut; // public devmode out
|
|
PVOID pOEMDMIn; // OEM private devmode in
|
|
PVOID pOEMDMOut; // OEM private devmode out
|
|
DWORD cbBufSize; // output size of pOEMDMOut buffer
|
|
|
|
} OEMDMPARAM, *POEMDMPARAM;
|
|
|
|
typedef struct _OEM_DMEXTRAHEADER {
|
|
|
|
DWORD dwSize; // size of OEM extra data
|
|
DWORD dwSignature; // Unique OEM signature
|
|
DWORD dwVersion; // OEM DLL version number
|
|
|
|
} OEM_DMEXTRAHEADER, *POEM_DMEXTRAHEADER;
|
|
|
|
//
|
|
// USERDATA for OPTITEM.UserData
|
|
//
|
|
|
|
typedef struct _USERDATA {
|
|
|
|
DWORD dwSize; // Size of this structure
|
|
ULONG_PTR dwItemID; // XXX_ITEM or pointer to FEATURE
|
|
PSTR pKeyWordName; // Keyword name
|
|
DWORD dwReserved[8];
|
|
} USERDATA, *PUSERDATA;
|
|
|
|
|
|
BOOL APIENTRY
|
|
OEMDevMode(
|
|
DWORD dwMode,
|
|
POEMDMPARAM pOemDMParam
|
|
);
|
|
|
|
//
|
|
// Callback function provided by the driver to
|
|
// allow OEM plugins access/set/update to driver private settings
|
|
//
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvGetDriverSetting)(
|
|
PVOID pdriverobj,
|
|
PCSTR Feature,
|
|
PVOID pOutput,
|
|
DWORD cbSize,
|
|
PDWORD pcbNeeded,
|
|
PDWORD pdwOptionsReturned
|
|
);
|
|
|
|
//
|
|
// Callback function provided by the driver to
|
|
// allow OEM plugins upgrade private registry settings.
|
|
//
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvUpgradeRegistrySetting)(
|
|
HANDLE hPrinter,
|
|
PCSTR pFeature,
|
|
PCSTR pOption
|
|
);
|
|
|
|
//
|
|
// Callback function provided by the driver UI to
|
|
// allow OEM plugins to update the driver UI settings and
|
|
// shows constraint. This function is called only when the UI is present.
|
|
//
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvUpdateUISetting)(
|
|
PVOID pdriverobj,
|
|
PVOID pOptItem,
|
|
DWORD dwPreviousSelection,
|
|
DWORD dwMode
|
|
);
|
|
|
|
|
|
|
|
// Predefined feature indices used for accessing driver private settings
|
|
|
|
#define OEMGDS_MIN_DOCSTICKY 1
|
|
#define OEMGDS_PSDM_FLAGS 1 // DWORD - misc. flag bits
|
|
#define OEMGDS_PSDM_DIALECT 2 // INT - PS output option
|
|
#define OEMGDS_PSDM_TTDLFMT 3 // INT - TrueType font downloading option
|
|
#define OEMGDS_PSDM_NUP 4 // INT - N-up option
|
|
#define OEMGDS_PSDM_PSLEVEL 5 // INT - target language level
|
|
#define OEMGDS_PSDM_CUSTOMSIZE 6 // 5*DWORD - custom page size parameters
|
|
|
|
#define OEMGDS_UNIDM_GPDVER 0x4000 // WORD - GPD Version
|
|
#define OEMGDS_UNIDM_FLAGS 0x4001 // DWORD - misc flag bits
|
|
|
|
// Indices for private devmode fields - start at 0x4000
|
|
|
|
#define OEMGDS_MIN_PRINTERSTICKY 0x8000
|
|
#define OEMGDS_PRINTFLAGS 0x8000 // DWORD - misc. flag bits
|
|
#define OEMGDS_FREEMEM 0x8001 // DWORD - amount of VM, ps only
|
|
#define OEMGDS_JOBTIMEOUT 0x8002 // DWORD - job timeout, ps only
|
|
#define OEMGDS_WAITTIMEOUT 0x8003 // DWORD - wait timeout, ps only
|
|
#define OEMGDS_PROTOCOL 0x8004 // WORD - output protocol, ps only
|
|
#define OEMGDS_MINOUTLINE 0x8005 // WORD - min outline font size, ps only
|
|
#define OEMGDS_MAXBITMAP 0x8006 // WORD - max bitmap font size, ps only
|
|
|
|
#define OEMGDS_MAX 0x10000
|
|
|
|
|
|
// dwType flags for use with STDMETHOD (DrvGetGPDData)
|
|
#define GPD_OEMCUSTOMDATA 1
|
|
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Definitions used by kernel-mode rendering module only:
|
|
* Make sure the macro KERNEL_MODE is defined and
|
|
* the header file winddi.h is included before this file.
|
|
*/
|
|
|
|
#ifdef KERNEL_MODE
|
|
|
|
//
|
|
// OEMEnableDriver
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMEnableDriver(
|
|
DWORD dwOemIntfVersion,
|
|
DWORD cbSize,
|
|
PDRVENABLEDATA pded
|
|
);
|
|
|
|
typedef struct _DEVOBJ *PDEVOBJ;
|
|
typedef PVOID PDEVOEM;
|
|
|
|
typedef DWORD (APIENTRY *PFN_DrvWriteSpoolBuf)(
|
|
PDEVOBJ pdevobj,
|
|
PVOID pBuffer,
|
|
DWORD cbSize
|
|
);
|
|
|
|
typedef DWORD (APIENTRY *PFN_DrvWriteAbortBuf)(
|
|
PDEVOBJ pdevobj,
|
|
PVOID pBuffer,
|
|
DWORD cbSize,
|
|
DWORD dwWait
|
|
|
|
);
|
|
|
|
typedef INT (APIENTRY *PFN_DrvXMoveTo)(
|
|
PDEVOBJ pdevobj,
|
|
INT x,
|
|
DWORD dwFlags
|
|
);
|
|
|
|
typedef INT (APIENTRY *PFN_DrvYMoveTo)(
|
|
PDEVOBJ pdevobj,
|
|
INT y,
|
|
DWORD dwFlags
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvGetStandardVariable)(
|
|
PDEVOBJ pdevobj,
|
|
DWORD dwIndex,
|
|
PVOID pBuffer,
|
|
DWORD cbSize,
|
|
PDWORD pcbNeeded
|
|
);
|
|
|
|
typedef enum _STDVARIABLEINDEX{
|
|
|
|
SVI_NUMDATABYTES, // "NumOfDataBytes"
|
|
SVI_WIDTHINBYTES, // "RasterDataWidthInBytes"
|
|
SVI_HEIGHTINPIXELS, // "RasterDataHeightInPixels"
|
|
SVI_COPIES, // "NumOfCopies"
|
|
SVI_PRINTDIRECTION, // "PrintDirInCCDegrees"
|
|
SVI_DESTX, // "DestX"
|
|
SVI_DESTY, // "DestY"
|
|
SVI_DESTXREL, // "DestXRel"
|
|
SVI_DESTYREL, // "DestYRel"
|
|
SVI_LINEFEEDSPACING, // "LinefeedSpacing"
|
|
SVI_RECTXSIZE, // "RectXSize"
|
|
SVI_RECTYSIZE, // "RectYSize"
|
|
SVI_GRAYPERCENT, // "GrayPercentage"
|
|
SVI_NEXTFONTID, // "NextFontID"
|
|
SVI_NEXTGLYPH, // "NextGlyph"
|
|
SVI_PHYSPAPERLENGTH, // "PhysPaperLength"
|
|
SVI_PHYSPAPERWIDTH, // "PhysPaperWidth"
|
|
SVI_FONTHEIGHT, // "FontHeight"
|
|
SVI_FONTWIDTH, // "FontWidth"
|
|
SVI_FONTMAXWIDTH, // "FontMaxWidth"
|
|
SVI_FONTBOLD, // "FontBold"
|
|
SVI_FONTITALIC, // "FontItalic"
|
|
SVI_FONTUNDERLINE, // "FontUnderline"
|
|
SVI_FONTSTRIKETHRU, // "FontStrikeThru"
|
|
SVI_CURRENTFONTID, // "CurrentFontID"
|
|
SVI_TEXTYRES, // "TextYRes"
|
|
SVI_TEXTXRES, // "TextXRes"
|
|
// #ifdef BETA2
|
|
SVI_GRAPHICSYRES, // "GraphicsYRes"
|
|
SVI_GRAPHICSXRES, // "GraphicsXRes"
|
|
// #endif
|
|
SVI_ROP3, // "Rop3"
|
|
SVI_REDVALUE, // "RedValue"
|
|
SVI_GREENVALUE, // "GreenValue"
|
|
SVI_BLUEVALUE, // "BlueValue"
|
|
SVI_PALETTEINDEXTOPROGRAM, // "PaletteIndexToProgram"
|
|
SVI_CURRENTPALETTEINDEX, // "CurrentPaletteIndex"
|
|
SVI_PATTERNBRUSH_TYPE, // "PatternBrushType"
|
|
SVI_PATTERNBRUSH_ID, // "PatternBrushID"
|
|
SVI_PATTERNBRUSH_SIZE, // "PatternBrushSize"
|
|
SVI_CURSORORIGINX, // "CursorOriginX"
|
|
SVI_CURSORORIGINY, // "CursorOriginY"
|
|
// this is in MasterUnits and in the coordinates of the currently selected orientation.
|
|
// this value is defined as ImageableOrigin - CursorOrigin
|
|
SVI_PAGENUMBER, // "PageNumber"
|
|
// this value tracks number of times DrvStartBand has been called since
|
|
// StartDoc.
|
|
|
|
SVI_MAX // Just a placeholder do not use.
|
|
}STDVARIABLEINDEX;
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvUnidriverTextOut)(
|
|
SURFOBJ *pso,
|
|
STROBJ *pstro,
|
|
FONTOBJ *pfo,
|
|
CLIPOBJ *pco,
|
|
RECTL *prclExtra,
|
|
RECTL *prclOpaque,
|
|
BRUSHOBJ *pboFore,
|
|
BRUSHOBJ *pboOpaque,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mix
|
|
);
|
|
|
|
//
|
|
// bit fields defined for dwFlags
|
|
//
|
|
// Note: The following Bit values are reserved for an internal use!
|
|
// 0x4000
|
|
// 0x8000
|
|
//
|
|
//
|
|
#define MV_UPDATE 0x0001
|
|
#define MV_RELATIVE 0x0002
|
|
#define MV_GRAPHICS 0x0004
|
|
#define MV_PHYSICAL 0x0008
|
|
#define MV_SENDXMOVECMD 0x0010
|
|
#define MV_SENDYMOVECMD 0x0020
|
|
|
|
typedef struct _DRVPROCS {
|
|
|
|
PFN_DrvWriteSpoolBuf DrvWriteSpoolBuf; // common to both pscript and unidrv
|
|
PFN_DrvXMoveTo DrvXMoveTo; // unidrv specific
|
|
PFN_DrvYMoveTo DrvYMoveTo; // unidrv specific
|
|
PFN_DrvGetDriverSetting DrvGetDriverSetting;// common to both pscript and unidrv
|
|
PFN_DrvGetStandardVariable BGetStandardVariable; // unidrv specific
|
|
PFN_DrvUnidriverTextOut DrvUnidriverTextOut; // unidrv specific
|
|
PFN_DrvWriteAbortBuf DrvWriteAbortBuf; // unidrv specific
|
|
|
|
} DRVPROCS, *PDRVPROCS;
|
|
|
|
typedef struct _DEVOBJ {
|
|
|
|
DWORD dwSize; // size of DEVOBJ structure
|
|
PDEVOEM pdevOEM; // pointer to OEM's device data
|
|
HANDLE hEngine; // GDI handle for current printer
|
|
HANDLE hPrinter; // spooler handle for current printer
|
|
HANDLE hOEM; // handle to OEM dll
|
|
PDEVMODE pPublicDM; // public devmode
|
|
PVOID pOEMDM; // OEM private devmode
|
|
PDRVPROCS pDrvProcs; // pointer to kernel mode helper function table
|
|
|
|
} DEVOBJ;
|
|
|
|
//
|
|
// OEMDisableDriver
|
|
//
|
|
|
|
VOID APIENTRY
|
|
OEMDisableDriver(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// OEMEnablePDEV
|
|
//
|
|
|
|
PDEVOEM APIENTRY
|
|
OEMEnablePDEV(
|
|
PDEVOBJ pdevobj,
|
|
PWSTR pPrinterName,
|
|
ULONG cPatterns,
|
|
HSURF *phsurfPatterns,
|
|
ULONG cjGdiInfo,
|
|
GDIINFO *pGdiInfo,
|
|
ULONG cjDevInfo,
|
|
DEVINFO *pDevInfo,
|
|
DRVENABLEDATA *pded
|
|
);
|
|
|
|
//
|
|
// OEMDisablePDEV
|
|
//
|
|
|
|
VOID APIENTRY
|
|
OEMDisablePDEV(
|
|
PDEVOBJ pdevobj
|
|
);
|
|
|
|
//
|
|
// OEMResetPDEV
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMResetPDEV(
|
|
PDEVOBJ pdevobjOld,
|
|
PDEVOBJ pdevobjNew
|
|
);
|
|
|
|
//
|
|
// OEMCommand - PSCRIPT only
|
|
//
|
|
|
|
DWORD APIENTRY
|
|
OEMCommand(
|
|
PDEVOBJ pdevobj,
|
|
DWORD dwIndex,
|
|
PVOID pData,
|
|
DWORD cbSize
|
|
);
|
|
|
|
INT APIENTRY
|
|
OEMCommandCallback(
|
|
PDEVOBJ pdevobj,
|
|
DWORD dwCallbackID,
|
|
DWORD dwCount,
|
|
PDWORD pdwParams
|
|
);
|
|
|
|
//
|
|
// OEMImageProcessing - UNIDRV only
|
|
//
|
|
|
|
typedef struct {
|
|
DWORD dwSize;
|
|
POINT ptOffset;
|
|
PSTR pHalftoneOption;
|
|
BOOL bBanding;
|
|
BOOL bBlankBand;
|
|
} IPPARAMS, *PIPPARAMS;
|
|
|
|
PBYTE APIENTRY
|
|
OEMImageProcessing(
|
|
PDEVOBJ pdevobj,
|
|
PBYTE pSrcBitmap,
|
|
PBITMAPINFOHEADER pBitmapInfoHeader,
|
|
PBYTE pColorTable,
|
|
DWORD dwCallbackID,
|
|
PIPPARAMS pIPParams
|
|
);
|
|
|
|
//
|
|
// OEMFilterGraphics - UNIDRV only
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMFilterGraphics(
|
|
PDEVOBJ pdevobj,
|
|
PBYTE pBuf,
|
|
DWORD dwLen
|
|
);
|
|
|
|
//
|
|
// OEMCompression - UNIDRV only
|
|
//
|
|
INT APIENTRY
|
|
OEMCompression(
|
|
PDEVOBJ pdevobj,
|
|
PBYTE pInBuf,
|
|
PBYTE pOutBuf,
|
|
DWORD dwInLen,
|
|
DWORD dwOutLen
|
|
);
|
|
|
|
//
|
|
// OEMHalftone - UNIDRV only
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMHalftonePattern(
|
|
PDEVOBJ pdevobj,
|
|
PBYTE pHTPattern,
|
|
DWORD dwHTPatternX,
|
|
DWORD dwHTPatternY,
|
|
DWORD dwHTNumPatterns,
|
|
DWORD dwCallbackID,
|
|
PBYTE pResource,
|
|
DWORD dwResourceSize
|
|
);
|
|
|
|
//
|
|
// OEMMemoryUsage - UNIDRV only
|
|
//
|
|
|
|
typedef struct {
|
|
DWORD dwFixedMemoryUsage;
|
|
DWORD dwPercentMemoryUsage;
|
|
DWORD dwMaxBandSize;
|
|
} OEMMEMORYUSAGE, *POEMMEMORYUSAGE;
|
|
|
|
VOID APIENTRY
|
|
OEMMemoryUsage(
|
|
PDEVOBJ pdevobj,
|
|
POEMMEMORYUSAGE pMemoryUsage
|
|
);
|
|
|
|
//
|
|
// OEMTTYGetInfo - UNIDRV only
|
|
//
|
|
INT APIENTRY
|
|
OEMTTYGetInfo(
|
|
PDEVOBJ pdevobj,
|
|
DWORD dwInfoIndex,
|
|
PVOID pOutputBuf,
|
|
DWORD dwSize,
|
|
DWORD *pcbcNeeded
|
|
);
|
|
|
|
#define OEMTTY_INFO_MARGINS 1
|
|
#define OEMTTY_INFO_CODEPAGE 2
|
|
#define OEMTTY_INFO_NUM_UFMS 3
|
|
#define OEMTTY_INFO_UFM_IDS 4
|
|
|
|
//
|
|
// UNIDRV font callback
|
|
//
|
|
|
|
typedef BOOL (*PFNGETINFO)(struct _UNIFONTOBJ*, DWORD, PVOID, DWORD, PDWORD);
|
|
|
|
typedef struct _UNIFONTOBJ {
|
|
ULONG ulFontID;
|
|
DWORD dwFlags; // General flags
|
|
IFIMETRICS *pIFIMetrics; // Pointer to IFIMETRICS
|
|
PFNGETINFO pfnGetInfo; // Pointer to UNIFONTOBJ_GetInfo callback
|
|
} UNIFONTOBJ, *PUNIFONTOBJ;
|
|
|
|
//
|
|
// UNIFONTOBJ.dwFlags
|
|
//
|
|
|
|
#define UFOFLAG_TTFONT 0x00000001
|
|
#define UFOFLAG_TTDOWNLOAD_BITMAP 0x00000002
|
|
#define UFOFLAG_TTDOWNLOAD_TTOUTLINE 0x00000004
|
|
#define UFOFLAG_TTOUTLINE_BOLD_SIM 0x00000008
|
|
#define UFOFLAG_TTOUTLINE_ITALIC_SIM 0x00000010
|
|
#define UFOFLAG_TTOUTLINE_VERTICAL 0x00000020
|
|
#define UFOFLAG_TTSUBSTITUTED 0x00000040
|
|
|
|
//
|
|
// UNIFONTOBJ callback ID
|
|
//
|
|
|
|
#define UFO_GETINFO_FONTOBJ 1
|
|
#define UFO_GETINFO_GLYPHSTRING 2
|
|
#define UFO_GETINFO_GLYPHBITMAP 3
|
|
#define UFO_GETINFO_GLYPHWIDTH 4
|
|
#define UFO_GETINFO_MEMORY 5
|
|
#define UFO_GETINFO_STDVARIABLE 6
|
|
|
|
//
|
|
// UFO_GETINFO_FONTOBJ callback structure
|
|
//
|
|
|
|
typedef struct _GETINFO_FONTOBJ {
|
|
DWORD dwSize; // Size of this structure
|
|
FONTOBJ *pFontObj; // Pointer to the FONTOBJ
|
|
} GETINFO_FONTOBJ, *PGETINFO_FONTOBJ;
|
|
|
|
//
|
|
// UFO_GETINFO_FONTOBJ callback structure
|
|
//
|
|
|
|
typedef struct _GETINFO_GLYPHSTRING {
|
|
DWORD dwSize; // Size of this structure
|
|
DWORD dwCount; // Count of glyphs in pGlyphIn
|
|
DWORD dwTypeIn; // Glyph type of pGlyphIn, TYPE_GLYPHID/TYPE_HANDLE.
|
|
PVOID pGlyphIn; // Pointer to the input glyph string
|
|
DWORD dwTypeOut; // Glyph type of pGlyphOut, TYPE_UNICODE/TYPE_TRANSDATA.
|
|
PVOID pGlyphOut; // Pointer to the output glyph string
|
|
DWORD dwGlyphOutSize; // The size of pGlyphOut buffer
|
|
} GETINFO_GLYPHSTRING, *PGETINFO_GLYPHSTRING;
|
|
|
|
//
|
|
// UFO_GETINFO_GLYPHBITMAP
|
|
//
|
|
|
|
typedef struct _GETINFO_GLYPHBITMAP {
|
|
DWORD dwSize; // Size of this structure
|
|
HGLYPH hGlyph; // Glyph hangle passed in OEMDownloadCharGlyph
|
|
GLYPHDATA *pGlyphData; // Pointer to the GLYPHDATA data structure
|
|
} GETINFO_GLYPHBITMAP, *PGETINFO_GLYPHBITMAP;
|
|
|
|
//
|
|
// UFO_GETINFO_GLYPHWIDTH
|
|
//
|
|
|
|
typedef struct _GETINFO_GLYPHWIDTH {
|
|
DWORD dwSize; // Size of this structure
|
|
DWORD dwType; // Type of glyph stirng in pGlyph, TYPE_GLYPHHANDLE/GLYPHID.
|
|
DWORD dwCount; // Count of glyph in pGlyph
|
|
PVOID pGlyph; // Pointer to a glyph string
|
|
PLONG plWidth; // Pointer to the buffer of width table.
|
|
// Minidriver has to prepare this.
|
|
} GETINFO_GLYPHWIDTH, *PGETINFO_GLYPHWIDTH;
|
|
|
|
//
|
|
// UFO_GETINFO_MEMORY
|
|
//
|
|
|
|
typedef struct _GETINFO_MEMORY {
|
|
DWORD dwSize;
|
|
DWORD dwRemainingMemory;
|
|
} GETINFO_MEMORY, PGETINFO_MEMROY;
|
|
|
|
//
|
|
// UFO_GETINFO_STDVARIABLE
|
|
//
|
|
// OEM DLL has to prepare all StdVar buffer and set ID in dwStdVarID.
|
|
//
|
|
|
|
typedef struct _GETINFO_STDVAR {
|
|
DWORD dwSize;
|
|
DWORD dwNumOfVariable;
|
|
struct {
|
|
DWORD dwStdVarID;
|
|
LONG lStdVariable;
|
|
} StdVar[1];
|
|
} GETINFO_STDVAR, *PGETINFO_STDVAR;
|
|
|
|
|
|
#define FNT_INFO_PRINTDIRINCCDEGREES 0 // PrintDirInCCDegrees
|
|
#define FNT_INFO_GRAYPERCENTAGE 1 // GrayPercentage
|
|
#define FNT_INFO_NEXTFONTID 2 // NextfontID
|
|
#define FNT_INFO_NEXTGLYPH 3 // NextGlyph
|
|
#define FNT_INFO_FONTHEIGHT 4 // FontHeight
|
|
#define FNT_INFO_FONTWIDTH 5 // FontWidth
|
|
#define FNT_INFO_FONTBOLD 6 // FontBold
|
|
#define FNT_INFO_FONTITALIC 7 // FontItalic
|
|
#define FNT_INFO_FONTUNDERLINE 8 // FontUnderline
|
|
#define FNT_INFO_FONTSTRIKETHRU 9 // FontStrikeThru
|
|
#define FNT_INFO_CURRENTFONTID 10 // Current
|
|
#define FNT_INFO_TEXTYRES 11 // TextYRes
|
|
#define FNT_INFO_TEXTXRES 12 // TextXRes
|
|
#define FNT_INFO_FONTMAXWIDTH 13 // FontMaxWidth
|
|
#define FNT_INFO_MAX 14
|
|
|
|
//
|
|
// OEMDownloadFontheader - UNIDRV only
|
|
//
|
|
|
|
DWORD APIENTRY
|
|
OEMDownloadFontHeader(
|
|
PDEVOBJ pdevobj,
|
|
PUNIFONTOBJ pUFObj
|
|
);
|
|
|
|
//
|
|
// OEMDownloadCharGlyph - UNIDRV only
|
|
//
|
|
|
|
DWORD APIENTRY
|
|
OEMDownloadCharGlyph(
|
|
PDEVOBJ pdevobj,
|
|
PUNIFONTOBJ pUFObj,
|
|
HGLYPH hGlyph,
|
|
PDWORD pdwWidth
|
|
);
|
|
|
|
//
|
|
// OEMTTDownloadMethod - UNIDRV only
|
|
//
|
|
|
|
DWORD APIENTRY
|
|
OEMTTDownloadMethod(
|
|
PDEVOBJ pdevobj,
|
|
PUNIFONTOBJ pUFObj
|
|
);
|
|
|
|
#define TTDOWNLOAD_DONTCARE 0
|
|
#define TTDOWNLOAD_GRAPHICS 1
|
|
#define TTDOWNLOAD_BITMAP 2
|
|
#define TTDOWNLOAD_TTOUTLINE 3
|
|
|
|
//
|
|
// OEMOutputCharStr - UNIDRV only
|
|
//
|
|
|
|
VOID APIENTRY
|
|
OEMOutputCharStr(
|
|
PDEVOBJ pdevobj,
|
|
PUNIFONTOBJ pUFObj,
|
|
DWORD dwType,
|
|
DWORD dwCount,
|
|
PVOID pGlyph
|
|
);
|
|
|
|
#define TYPE_UNICODE 1
|
|
#define TYPE_TRANSDATA 2
|
|
#define TYPE_GLYPHHANDLE 3
|
|
#define TYPE_GLYPHID 4
|
|
|
|
//
|
|
// OEMSendFontCmd - UNIDRV only
|
|
//
|
|
|
|
typedef struct _FINVOCATION {
|
|
DWORD dwCount; // Size of command
|
|
PBYTE pubCommand; // Pointer to font selection command
|
|
} FINVOCATION, *PFINVOCATION;
|
|
|
|
VOID APIENTRY
|
|
OEMSendFontCmd(
|
|
PDEVOBJ pdevobj,
|
|
PUNIFONTOBJ pUFObj,
|
|
PFINVOCATION pFInv
|
|
);
|
|
|
|
//
|
|
// OEMTextOutAsBitmap - UNIDRV only
|
|
//
|
|
BOOL APIENTRY
|
|
OEMTextOutAsBitmap(
|
|
SURFOBJ *pso,
|
|
STROBJ *pstro,
|
|
FONTOBJ *pfo,
|
|
CLIPOBJ *pco,
|
|
RECTL *prclExtra,
|
|
RECTL *prclOpaque,
|
|
BRUSHOBJ *pboFore,
|
|
BRUSHOBJ *pboOpaque,
|
|
POINTL *pptlOrg,
|
|
MIX mix
|
|
);
|
|
|
|
//
|
|
// OEMBitBlt
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMBitBlt(
|
|
SURFOBJ *psoTrg,
|
|
SURFOBJ *psoSrc,
|
|
SURFOBJ *psoMask,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
RECTL *prclTrg,
|
|
POINTL *pptlSrc,
|
|
POINTL *pptlMask,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrush,
|
|
ROP4 rop4
|
|
);
|
|
|
|
//
|
|
// OEMStretchBlt
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMStretchBlt(
|
|
SURFOBJ *psoDest,
|
|
SURFOBJ *psoSrc,
|
|
SURFOBJ *psoMask,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
COLORADJUSTMENT *pca,
|
|
POINTL *pptlHTOrg,
|
|
RECTL *prclDest,
|
|
RECTL *prclSrc,
|
|
POINTL *pptlMask,
|
|
ULONG iMode
|
|
);
|
|
|
|
//
|
|
// OEMCopyBits
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMCopyBits(
|
|
SURFOBJ *psoDest,
|
|
SURFOBJ *psoSrc,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
RECTL *prclDest,
|
|
POINTL *pptlSrc
|
|
);
|
|
|
|
//
|
|
// OEMTextOut
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMTextOut(
|
|
SURFOBJ *pso,
|
|
STROBJ *pstro,
|
|
FONTOBJ *pfo,
|
|
CLIPOBJ *pco,
|
|
RECTL *prclExtra,
|
|
RECTL *prclOpaque,
|
|
BRUSHOBJ *pboFore,
|
|
BRUSHOBJ *pboOpaque,
|
|
POINTL *pptlOrg,
|
|
MIX mix
|
|
);
|
|
|
|
//
|
|
// OEMStrokePath
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMStrokePath(
|
|
SURFOBJ *pso,
|
|
PATHOBJ *ppo,
|
|
CLIPOBJ *pco,
|
|
XFORMOBJ *pxo,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrushOrg,
|
|
LINEATTRS *plineattrs,
|
|
MIX mix
|
|
);
|
|
|
|
//
|
|
// OEMFillPath
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMFillPath(
|
|
SURFOBJ *pso,
|
|
PATHOBJ *ppo,
|
|
CLIPOBJ *pco,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mix,
|
|
FLONG flOptions
|
|
);
|
|
|
|
//
|
|
// OEMStrokeAndFillPath
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMStrokeAndFillPath(
|
|
SURFOBJ *pso,
|
|
PATHOBJ *ppo,
|
|
CLIPOBJ *pco,
|
|
XFORMOBJ *pxo,
|
|
BRUSHOBJ *pboStroke,
|
|
LINEATTRS *plineattrs,
|
|
BRUSHOBJ *pboFill,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mixFill,
|
|
FLONG flOptions
|
|
);
|
|
|
|
//
|
|
// OEMRealizeBrush
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMRealizeBrush(
|
|
BRUSHOBJ *pbo,
|
|
SURFOBJ *psoTarget,
|
|
SURFOBJ *psoPattern,
|
|
SURFOBJ *psoMask,
|
|
XLATEOBJ *pxlo,
|
|
ULONG iHatch
|
|
);
|
|
|
|
//
|
|
// OEMStartPage
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMStartPage(
|
|
SURFOBJ *pso
|
|
);
|
|
|
|
//
|
|
// OEMSendPage
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMSendPage(
|
|
SURFOBJ *pso
|
|
);
|
|
|
|
//
|
|
// OEMEscape
|
|
//
|
|
|
|
ULONG APIENTRY
|
|
OEMEscape(
|
|
SURFOBJ *pso,
|
|
ULONG iEsc,
|
|
ULONG cjIn,
|
|
PVOID pvIn,
|
|
ULONG cjOut,
|
|
PVOID pvOut
|
|
);
|
|
|
|
//
|
|
// OEMStartDoc
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMStartDoc(
|
|
SURFOBJ *pso,
|
|
PWSTR pwszDocName,
|
|
DWORD dwJobId
|
|
);
|
|
|
|
//
|
|
// OEMEndDoc
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMEndDoc(
|
|
SURFOBJ *pso,
|
|
FLONG fl
|
|
);
|
|
|
|
//
|
|
// OEMQueryFont
|
|
//
|
|
|
|
PIFIMETRICS APIENTRY
|
|
OEMQueryFont(
|
|
DHPDEV dhpdev,
|
|
ULONG_PTR iFile,
|
|
ULONG iFace,
|
|
ULONG_PTR *pid
|
|
);
|
|
|
|
//
|
|
// OEMQueryFontTree
|
|
//
|
|
|
|
PVOID APIENTRY
|
|
OEMQueryFontTree(
|
|
DHPDEV dhpdev,
|
|
ULONG_PTR iFile,
|
|
ULONG iFace,
|
|
ULONG iMode,
|
|
ULONG_PTR *pid
|
|
);
|
|
|
|
//
|
|
// OEMQueryFontData
|
|
//
|
|
|
|
LONG APIENTRY
|
|
OEMQueryFontData(
|
|
DHPDEV dhpdev,
|
|
FONTOBJ *pfo,
|
|
ULONG iMode,
|
|
HGLYPH hg,
|
|
GLYPHDATA *pgd,
|
|
PVOID pv,
|
|
ULONG cjSize
|
|
);
|
|
|
|
//
|
|
// OEMQueryAdvanceWidths
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMQueryAdvanceWidths(
|
|
DHPDEV dhpdev,
|
|
FONTOBJ *pfo,
|
|
ULONG iMode,
|
|
HGLYPH *phg,
|
|
PVOID pvWidths,
|
|
ULONG cGlyphs
|
|
);
|
|
|
|
//
|
|
// OEMFontManagement
|
|
//
|
|
|
|
ULONG APIENTRY
|
|
OEMFontManagement(
|
|
SURFOBJ *pso,
|
|
FONTOBJ *pfo,
|
|
ULONG iMode,
|
|
ULONG cjIn,
|
|
PVOID pvIn,
|
|
ULONG cjOut,
|
|
PVOID pvOut
|
|
);
|
|
|
|
//
|
|
// OEMGetGlyphMode
|
|
//
|
|
|
|
ULONG APIENTRY
|
|
OEMGetGlyphMode(
|
|
DHPDEV dhpdev,
|
|
FONTOBJ *pfo
|
|
);
|
|
|
|
BOOL APIENTRY
|
|
OEMNextBand(
|
|
SURFOBJ *pso,
|
|
POINTL *pptl
|
|
);
|
|
|
|
BOOL APIENTRY
|
|
OEMStartBanding(
|
|
SURFOBJ *pso,
|
|
POINTL *pptl
|
|
);
|
|
|
|
ULONG APIENTRY
|
|
OEMDitherColor(
|
|
DHPDEV dhpdev,
|
|
ULONG iMode,
|
|
ULONG rgbColor,
|
|
ULONG *pulDither
|
|
);
|
|
|
|
BOOL APIENTRY
|
|
OEMPaint(
|
|
SURFOBJ *pso,
|
|
CLIPOBJ *pco,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mix
|
|
);
|
|
|
|
BOOL APIENTRY
|
|
OEMLineTo(
|
|
SURFOBJ *pso,
|
|
CLIPOBJ *pco,
|
|
BRUSHOBJ *pbo,
|
|
LONG x1,
|
|
LONG y1,
|
|
LONG x2,
|
|
LONG y2,
|
|
RECTL *prclBounds,
|
|
MIX mix
|
|
);
|
|
|
|
#ifndef WINNT_40
|
|
|
|
//
|
|
// OEMStretchBltROP
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMStretchBltROP(
|
|
SURFOBJ *psoDest,
|
|
SURFOBJ *psoSrc,
|
|
SURFOBJ *psoMask,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
COLORADJUSTMENT *pca,
|
|
POINTL *pptlHTOrg,
|
|
RECTL *prclDest,
|
|
RECTL *prclSrc,
|
|
POINTL *pptlMask,
|
|
ULONG iMode,
|
|
BRUSHOBJ *pbo,
|
|
ROP4 rop4
|
|
);
|
|
|
|
//
|
|
// OEMPlgBlt
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMPlgBlt(
|
|
SURFOBJ *psoDst,
|
|
SURFOBJ *psoSrc,
|
|
SURFOBJ *psoMask,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
COLORADJUSTMENT *pca,
|
|
POINTL *pptlBrushOrg,
|
|
POINTFIX *pptfixDest,
|
|
RECTL *prclSrc,
|
|
POINTL *pptlMask,
|
|
ULONG iMode
|
|
);
|
|
|
|
//
|
|
// OEMAlphaBlend
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMAlphaBlend(
|
|
SURFOBJ *psoDest,
|
|
SURFOBJ *psoSrc,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
RECTL *prclDest,
|
|
RECTL *prclSrc,
|
|
BLENDOBJ *pBlendObj
|
|
);
|
|
|
|
//
|
|
// OEMGradientFill
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMGradientFill(
|
|
SURFOBJ *psoDest,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
TRIVERTEX *pVertex,
|
|
ULONG nVertex,
|
|
PVOID pMesh,
|
|
ULONG nMesh,
|
|
RECTL *prclExtents,
|
|
POINTL *pptlDitherOrg,
|
|
ULONG ulMode
|
|
);
|
|
|
|
//
|
|
// OEMIcmCreateTransform
|
|
//
|
|
|
|
HANDLE APIENTRY
|
|
OEMIcmCreateColorTransform(
|
|
DHPDEV dhpdev,
|
|
LPLOGCOLORSPACEW pLogColorSpace,
|
|
PVOID pvSourceProfile,
|
|
ULONG cjSourceProfile,
|
|
PVOID pvDestProfile,
|
|
ULONG cjDestProfile,
|
|
PVOID pvTargetProfile,
|
|
ULONG cjTargetProfile,
|
|
DWORD dwReserved
|
|
);
|
|
|
|
//
|
|
// OEMIcmDeleteTransform
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMIcmDeleteColorTransform(
|
|
DHPDEV dhpdev,
|
|
HANDLE hcmXform
|
|
);
|
|
|
|
//
|
|
// OEMQueryDeviceSupport
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMQueryDeviceSupport(
|
|
SURFOBJ *pso,
|
|
XLATEOBJ *pxlo,
|
|
XFORMOBJ *pxo,
|
|
ULONG iType,
|
|
ULONG cjIn,
|
|
PVOID pvIn,
|
|
ULONG cjOut,
|
|
PVOID pvOut
|
|
);
|
|
|
|
//
|
|
// OEMTransparentBlt
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMTransparentBlt(
|
|
SURFOBJ *psoDst,
|
|
SURFOBJ *psoSrc,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
RECTL *prclDst,
|
|
RECTL *prclSrc,
|
|
ULONG iTransColor,
|
|
ULONG ulReserved
|
|
);
|
|
|
|
#endif // !WINNT_40
|
|
|
|
//
|
|
// Function prototype define's for the driver hooks.
|
|
//
|
|
// NOTE: These are only needed for NT4. For NT5, they are defined in winddi.h.
|
|
//
|
|
|
|
#ifdef WINNT_40
|
|
|
|
typedef BOOL (APIENTRY *LPFNDLLINITIALIZE)(
|
|
ULONG ulReason
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvBitBlt)(
|
|
SURFOBJ *psoTrg,
|
|
SURFOBJ *psoSrc,
|
|
SURFOBJ *psoMask,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
RECTL *prclTrg,
|
|
POINTL *pptlSrc,
|
|
POINTL *pptlMask,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrush,
|
|
ROP4 rop4
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvStretchBlt)(
|
|
SURFOBJ *psoDest,
|
|
SURFOBJ *psoSrc,
|
|
SURFOBJ *psoMask,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
COLORADJUSTMENT *pca,
|
|
POINTL *pptlHTOrg,
|
|
RECTL *prclDest,
|
|
RECTL *prclSrc,
|
|
POINTL *pptlMask,
|
|
ULONG iMode
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvCopyBits)(
|
|
SURFOBJ *psoDest,
|
|
SURFOBJ *psoSrc,
|
|
CLIPOBJ *pco,
|
|
XLATEOBJ *pxlo,
|
|
RECTL *prclDest,
|
|
POINTL *pptlSrc
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvTextOut)(
|
|
SURFOBJ *pso,
|
|
STROBJ *pstro,
|
|
FONTOBJ *pfo,
|
|
CLIPOBJ *pco,
|
|
RECTL *prclExtra,
|
|
RECTL *prclOpaque,
|
|
BRUSHOBJ *pboFore,
|
|
BRUSHOBJ *pboOpaque,
|
|
POINTL *pptlOrg,
|
|
MIX mix
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvStrokePath)(
|
|
SURFOBJ *pso,
|
|
PATHOBJ *ppo,
|
|
CLIPOBJ *pco,
|
|
XFORMOBJ *pxo,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrushOrg,
|
|
LINEATTRS *plineattrs,
|
|
MIX mix
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvFillPath)(
|
|
SURFOBJ *pso,
|
|
PATHOBJ *ppo,
|
|
CLIPOBJ *pco,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mix,
|
|
FLONG flOptions
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvStrokeAndFillPath)(
|
|
SURFOBJ *pso,
|
|
PATHOBJ *ppo,
|
|
CLIPOBJ *pco,
|
|
XFORMOBJ *pxo,
|
|
BRUSHOBJ *pboStroke,
|
|
LINEATTRS *plineattrs,
|
|
BRUSHOBJ *pboFill,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mixFill,
|
|
FLONG flOptions
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvRealizeBrush)(
|
|
BRUSHOBJ *pbo,
|
|
SURFOBJ *psoTarget,
|
|
SURFOBJ *psoPattern,
|
|
SURFOBJ *psoMask,
|
|
XLATEOBJ *pxlo,
|
|
ULONG iHatch
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvStartPage)(
|
|
SURFOBJ *pso
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvSendPage)(
|
|
SURFOBJ *pso
|
|
);
|
|
|
|
typedef ULONG (APIENTRY *PFN_DrvEscape)(
|
|
SURFOBJ *pso,
|
|
ULONG iEsc,
|
|
ULONG cjIn,
|
|
PVOID pvIn,
|
|
ULONG cjOut,
|
|
PVOID pvOut
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvStartDoc)(
|
|
SURFOBJ *pso,
|
|
PWSTR pwszDocName,
|
|
DWORD dwJobId
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvEndDoc)(
|
|
SURFOBJ *pso,
|
|
FLONG fl
|
|
);
|
|
|
|
typedef PIFIMETRICS (APIENTRY *PFN_DrvQueryFont)(
|
|
DHPDEV dhpdev,
|
|
ULONG_PTR iFile,
|
|
ULONG iFace,
|
|
ULONG_PTR *pid
|
|
);
|
|
|
|
typedef PVOID (APIENTRY *PFN_DrvQueryFontTree)(
|
|
DHPDEV dhpdev,
|
|
ULONG_PTR iFile,
|
|
ULONG iFace,
|
|
ULONG iMode,
|
|
ULONG_PTR *pid
|
|
);
|
|
|
|
typedef LONG (APIENTRY *PFN_DrvQueryFontData)(
|
|
DHPDEV dhpdev,
|
|
FONTOBJ *pfo,
|
|
ULONG iMode,
|
|
HGLYPH hg,
|
|
GLYPHDATA *pgd,
|
|
PVOID pv,
|
|
ULONG cjSize
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvQueryAdvanceWidths)(
|
|
DHPDEV dhpdev,
|
|
FONTOBJ *pfo,
|
|
ULONG iMode,
|
|
HGLYPH *phg,
|
|
PVOID pvWidths,
|
|
ULONG cGlyphs
|
|
);
|
|
|
|
typedef ULONG (APIENTRY *PFN_DrvFontManagement)(
|
|
SURFOBJ *pso,
|
|
FONTOBJ *pfo,
|
|
ULONG iMode,
|
|
ULONG cjIn,
|
|
PVOID pvIn,
|
|
ULONG cjOut,
|
|
PVOID pvOut
|
|
);
|
|
|
|
typedef ULONG (APIENTRY *PFN_DrvGetGlyphMode)(
|
|
DHPDEV dhpdev,
|
|
FONTOBJ *pfo
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvNextBand)(
|
|
SURFOBJ *pso,
|
|
POINTL *pptl
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvStartBanding)(
|
|
SURFOBJ *pso,
|
|
POINTL *pptl
|
|
);
|
|
|
|
typedef ULONG (APIENTRY *PFN_DrvDitherColor)(
|
|
DHPDEV dhpdev,
|
|
ULONG iMode,
|
|
ULONG rgbColor,
|
|
ULONG *pulDither
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvPaint)(
|
|
SURFOBJ *pso,
|
|
CLIPOBJ *pco,
|
|
BRUSHOBJ *pbo,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mix
|
|
);
|
|
|
|
typedef BOOL (APIENTRY *PFN_DrvLineTo)(
|
|
SURFOBJ *pso,
|
|
CLIPOBJ *pco,
|
|
BRUSHOBJ *pbo,
|
|
LONG x1,
|
|
LONG y1,
|
|
LONG x2,
|
|
LONG y2,
|
|
RECTL *prclBounds,
|
|
MIX mix
|
|
);
|
|
|
|
#endif // WINNT_40
|
|
|
|
//
|
|
// for the IPrintOemPS2::GetPDEVAdjustment call
|
|
//
|
|
#define PDEV_ADJUST_PAPER_MARGIN_TYPE 1
|
|
|
|
typedef struct _PDEV_ADJUST_PAPER_MARGIN {
|
|
|
|
RECTL rcImageableArea; // contains the imageable area in 0.001 mm units
|
|
|
|
} PDEV_ADJUST_PAPER_MARGIN;
|
|
|
|
#define PDEV_HOSTFONT_ENABLED_TYPE 2
|
|
|
|
typedef struct _PDEV_HOSTFONT_ENABLED {
|
|
|
|
BOOL bHostfontEnabled;
|
|
|
|
} PDEV_HOSTFONT_ENABLED;
|
|
|
|
#define PDEV_USE_TRUE_COLOR_TYPE 3
|
|
|
|
typedef struct _PDEV_USE_TRUE_COLOR {
|
|
|
|
BOOL bUseTrueColor;
|
|
|
|
} PDEV_USE_TRUE_COLOR;
|
|
|
|
#endif // KERNEL_MODE
|
|
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Definitions used by user-mode UI module only:
|
|
* Make sure the macro KERNEL_MODE is NOT defined and
|
|
* the header file winddiui.h is included before this file.
|
|
*
|
|
*/
|
|
|
|
#ifndef KERNEL_MODE
|
|
|
|
//
|
|
// Reports capability of simulated features
|
|
//
|
|
typedef struct _SIMULATE_CAPS_1 {
|
|
DWORD dwLevel;
|
|
DWORD dwPageOrderFlags; // Reverse page order
|
|
DWORD dwNumberOfCopies; // Max number of copies
|
|
DWORD dwCollate; // Collate support
|
|
DWORD dwNupOptions; // The (1-base) bit set represents the N-up option available.
|
|
// 0x0001 means 1-up
|
|
// 0x0002 means 2-up
|
|
// 0x0008 means 4-up
|
|
// 0x812B means (1,2,4,6,9,16)
|
|
} SIMULATE_CAPS_1, *PSIMULATE_CAPS_1;
|
|
|
|
//
|
|
// Reference to driver data structure. This is passed to
|
|
// most of the OEM UI DLL entrypoints.
|
|
//
|
|
|
|
typedef struct _OEMUIPROCS {
|
|
|
|
PFN_DrvGetDriverSetting DrvGetDriverSetting;
|
|
PFN_DrvUpdateUISetting DrvUpdateUISetting;
|
|
|
|
} OEMUIPROCS, *POEMUIPROCS;
|
|
|
|
typedef struct _OEMUIOBJ {
|
|
|
|
DWORD cbSize; // size of this structure
|
|
POEMUIPROCS pOemUIProcs; // pointer to user mode helper function table
|
|
|
|
} OEMUIOBJ, *POEMUIOBJ;
|
|
|
|
|
|
//
|
|
// OEMCommonUIProp
|
|
//
|
|
|
|
typedef struct _OEMCUIPPARAM *POEMCUIPPARAM;
|
|
typedef LONG (APIENTRY *OEMCUIPCALLBACK)(PCPSUICBPARAM, POEMCUIPPARAM);
|
|
|
|
typedef struct _OEMCUIPPARAM {
|
|
|
|
DWORD cbSize; // size of this structure
|
|
POEMUIOBJ poemuiobj; // reference to driver data structure
|
|
HANDLE hPrinter; // handle to the current printer
|
|
PWSTR pPrinterName; // name of current printer
|
|
HANDLE hModule; // instance handle to OEM DLL
|
|
HANDLE hOEMHeap; // handle to the OEM memory heap
|
|
PDEVMODE pPublicDM; // public devmode
|
|
PVOID pOEMDM; // OEM private devmode
|
|
DWORD dwFlags; // misc. flag bits
|
|
POPTITEM pDrvOptItems; // pointer to driver items
|
|
DWORD cDrvOptItems; // number of driver items
|
|
POPTITEM pOEMOptItems; // pointer to OEM items
|
|
DWORD cOEMOptItems; // number of OEM items
|
|
PVOID pOEMUserData; // pointer to OEM private data
|
|
OEMCUIPCALLBACK OEMCUIPCallback; // address of callback function
|
|
|
|
} OEMCUIPPARAM;
|
|
|
|
BOOL APIENTRY
|
|
OEMCommonUIProp(
|
|
DWORD dwMode,
|
|
POEMCUIPPARAM pOemCUIPParam
|
|
);
|
|
|
|
//
|
|
// OEMCommonUIProp dwMode parameter value
|
|
//
|
|
#define OEMCUIP_DOCPROP 1
|
|
#define OEMCUIP_PRNPROP 2
|
|
|
|
//
|
|
// OEMDocumentPropertySheets
|
|
//
|
|
|
|
LRESULT APIENTRY
|
|
OEMDocumentPropertySheets(
|
|
PPROPSHEETUI_INFO pPSUIInfo,
|
|
LPARAM lParam
|
|
);
|
|
|
|
//
|
|
// OEMDevicePropertySheets
|
|
//
|
|
|
|
LRESULT APIENTRY
|
|
OEMDevicePropertySheets(
|
|
PPROPSHEETUI_INFO pPSUIInfo,
|
|
LPARAM lParam
|
|
);
|
|
|
|
//
|
|
// pPSUIInfo->lParamInit is a pointer to _OEMUIPSPARAM structure defined below.
|
|
//
|
|
typedef struct _OEMUIPSPARAM {
|
|
|
|
DWORD cbSize; // size of this structure
|
|
POEMUIOBJ poemuiobj; // reference to driver data structure
|
|
HANDLE hPrinter; // handle to the current printer
|
|
PWSTR pPrinterName; // name of current printer
|
|
HANDLE hModule; // instance handle to OEM DLL
|
|
HANDLE hOEMHeap; // handle to the OEM memory heap
|
|
PDEVMODE pPublicDM; // public devmode
|
|
PVOID pOEMDM; // OEM private devmode
|
|
PVOID pOEMUserData; // pointer to OEM private data
|
|
DWORD dwFlags; // misc. flag bits
|
|
PVOID pOemEntry;
|
|
|
|
} OEMUIPSPARAM, *POEMUIPSPARAM;
|
|
|
|
//
|
|
// OEMDevQueryPrintEx
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMDevQueryPrintEx(
|
|
POEMUIOBJ poemuiobj,
|
|
PDEVQUERYPRINT_INFO pDQPInfo,
|
|
PDEVMODE pPublicDM,
|
|
PVOID pOEMDM
|
|
);
|
|
|
|
//
|
|
// OEMDeviceCapabilities
|
|
//
|
|
|
|
DWORD APIENTRY
|
|
OEMDeviceCapabilities(
|
|
POEMUIOBJ poemuiobj,
|
|
HANDLE hPrinter,
|
|
PWSTR pDeviceName,
|
|
WORD wCapability,
|
|
PVOID pOutput,
|
|
PDEVMODE pPublicDM,
|
|
PVOID pOEMDM,
|
|
DWORD dwLastResult
|
|
);
|
|
|
|
//
|
|
// OEMUpgradePrinter
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMUpgradePrinter(
|
|
DWORD dwLevel,
|
|
PBYTE pDriverUpgradeInfo
|
|
);
|
|
|
|
//
|
|
// OEMUpgradeRegistry
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMUpgradeRegistry(
|
|
DWORD dwLevel,
|
|
PBYTE pDriverUpgradeInfo,
|
|
PFN_DrvUpgradeRegistrySetting pfnUpgrade
|
|
);
|
|
|
|
|
|
//
|
|
// OEMPrinterEvent
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMPrinterEvent(
|
|
PWSTR pPrinterName,
|
|
INT iDriverEvent,
|
|
DWORD dwFlags,
|
|
LPARAM lParam
|
|
);
|
|
|
|
//
|
|
// OEMDriverEvent
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMPDriverEvent(
|
|
DWORD dwDriverEvent,
|
|
DWORD dwLevel,
|
|
LPBYTE pDriverInfo,
|
|
LPARAM lParam
|
|
);
|
|
|
|
|
|
//
|
|
// OEMQueryColorProfile
|
|
//
|
|
|
|
BOOL APIENTRY
|
|
OEMQueryColorProfile(
|
|
HANDLE hPrinter,
|
|
POEMUIOBJ poemuiobj,
|
|
PDEVMODE pPublicDM,
|
|
PVOID pOEMDM,
|
|
ULONG ulQueryMode,
|
|
VOID *pvProfileData,
|
|
ULONG *pcbProfileData,
|
|
FLONG *pflProfileData
|
|
);
|
|
|
|
//
|
|
// Font Installer dialog proc
|
|
//
|
|
|
|
INT_PTR CALLBACK
|
|
OEMFontInstallerDlgProc(
|
|
HWND hWnd,
|
|
UINT usMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
|
|
BOOL CALLBACK
|
|
OEMUpdateExternalFonts(
|
|
HANDLE hPrinter,
|
|
HANDLE hHeap,
|
|
PWSTR pwstrCartridges
|
|
);
|
|
|
|
|
|
#endif // !KERNEL_MODE
|
|
|
|
//
|
|
// Datatypes for attributes plugin can get by calling core driver's
|
|
// following helper functions:
|
|
//
|
|
// GetGlobalAttribute, GetFeatureAttribute, GetOptionAttribute
|
|
//
|
|
|
|
typedef enum _EATTRIBUTE_DATATYPE {
|
|
|
|
kADT_UNKNOWN,
|
|
kADT_BOOL,
|
|
kADT_INT,
|
|
kADT_LONG,
|
|
kADT_DWORD,
|
|
kADT_ASCII, // NULL terminated ASCII string
|
|
kADT_UNICODE, // NULL terminated Unicode string
|
|
kADT_BINARY, // binary blob
|
|
kADT_SIZE,
|
|
kADT_RECT,
|
|
kADT_CUSTOMSIZEPARAMS, // array of CUSTOMSIZEPARAM structures
|
|
|
|
} EATTRIBUTE_DATATYPE;
|
|
|
|
//
|
|
// Data structure for storing information about PPD's *ParamCustomPageSize entries
|
|
//
|
|
|
|
#define CUSTOMPARAM_WIDTH 0
|
|
#define CUSTOMPARAM_HEIGHT 1
|
|
#define CUSTOMPARAM_WIDTHOFFSET 2
|
|
#define CUSTOMPARAM_HEIGHTOFFSET 3
|
|
#define CUSTOMPARAM_ORIENTATION 4
|
|
#define CUSTOMPARAM_MAX 5
|
|
|
|
typedef struct _CUSTOMSIZEPARAM {
|
|
|
|
LONG dwOrder; // order value
|
|
LONG lMinVal; // min value (in microns)
|
|
LONG lMaxVal; // max value (in microns)
|
|
|
|
} CUSTOMSIZEPARAM, *PCUSTOMSIZEPARAM;
|
|
|
|
//
|
|
// constants for SetOptions helper function
|
|
//
|
|
// SetOptions flag
|
|
//
|
|
|
|
#define SETOPTIONS_FLAG_RESOLVE_CONFLICT 0x00000001
|
|
#define SETOPTIONS_FLAG_KEEP_CONFLICT 0x00000002
|
|
|
|
//
|
|
// SetOptions result code
|
|
//
|
|
|
|
#define SETOPTIONS_RESULT_NO_CONFLICT 0
|
|
#define SETOPTIONS_RESULT_CONFLICT_RESOLVED 1
|
|
#define SETOPTIONS_RESULT_CONFLICT_REMAINED 2
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // !_PRINTOEM_
|
|
|