📄 printoem.h
字号:
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_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -