📄 winddi.h
字号:
ULONG *pcjFile
);
PBYTE APIENTRY FONTOBJ_pjOpenTypeTablePointer (
FONTOBJ *pfo,
ULONG ulTag,
ULONG *pcjTable
);
LPWSTR APIENTRY FONTOBJ_pwszFontFilePaths (
FONTOBJ *pfo,
ULONG *pcwc
);
// for now only one mode is defined for glyph attributes
#define FO_ATTR_MODE_ROTATE 1
PFD_GLYPHATTR APIENTRY FONTOBJ_pQueryGlyphAttrs(
FONTOBJ *pfo,
ULONG iMode
);
/*
* PALOBJ callbacks
*/
#define PAL_INDEXED 0x00000001
#define PAL_BITFIELDS 0x00000002
#define PAL_RGB 0x00000004
#define PAL_BGR 0x00000008
#define PAL_CMYK 0x00000010
ULONG APIENTRY PALOBJ_cGetColors(
PALOBJ *ppalo,
ULONG iStart,
ULONG cColors,
ULONG *pulColors
);
/*
* PATHOBJ callbacks
*/
#define PO_BEZIERS 0x00000001
#define PO_ELLIPSE 0x00000002
#define PO_ALL_INTEGERS 0x00000004
#define PO_ENUM_AS_INTEGERS 0x00000008
#define PD_BEGINSUBPATH 0x00000001
#define PD_ENDSUBPATH 0x00000002
#define PD_RESETSTYLE 0x00000004
#define PD_CLOSEFIGURE 0x00000008
#define PD_BEZIERS 0x00000010
#define PD_ALL (PD_BEGINSUBPATH | \
PD_ENDSUBPATH | \
PD_RESETSTYLE | \
PD_CLOSEFIGURE | \
PD_BEZIERS)
typedef struct _PATHDATA
{
FLONG flags;
ULONG count;
POINTFIX *pptfx;
} PATHDATA, *PPATHDATA;
typedef struct _RUN
{
LONG iStart;
LONG iStop;
} RUN, *PRUN;
typedef struct _CLIPLINE
{
POINTFIX ptfxA;
POINTFIX ptfxB;
LONG lStyleState;
ULONG c;
RUN arun[1];
} CLIPLINE, *PCLIPLINE;
VOID APIENTRY PATHOBJ_vEnumStart(
PATHOBJ *ppo
);
BOOL APIENTRY PATHOBJ_bEnum(
PATHOBJ *ppo,
PATHDATA *ppd
);
VOID APIENTRY PATHOBJ_vEnumStartClipLines(
PATHOBJ *ppo,
CLIPOBJ *pco,
SURFOBJ *pso,
LINEATTRS *pla
);
BOOL APIENTRY PATHOBJ_bEnumClipLines(
PATHOBJ *ppo,
ULONG cb,
CLIPLINE *pcl
);
BOOL APIENTRY PATHOBJ_bMoveTo(
PATHOBJ *ppo,
POINTFIX ptfx
);
BOOL APIENTRY PATHOBJ_bPolyLineTo(
PATHOBJ *ppo,
POINTFIX *pptfx,
ULONG cptfx
);
BOOL APIENTRY PATHOBJ_bPolyBezierTo(
PATHOBJ *ppo,
POINTFIX *pptfx,
ULONG cptfx
);
BOOL APIENTRY PATHOBJ_bCloseFigure(
PATHOBJ *ppo
);
VOID APIENTRY PATHOBJ_vGetBounds(
PATHOBJ *ppo,
PRECTFX prectfx
);
/*
* STROBJ callbacks
*/
VOID APIENTRY STROBJ_vEnumStart(
STROBJ *pstro
);
BOOL APIENTRY STROBJ_bEnum(
STROBJ *pstro,
ULONG *pc,
PGLYPHPOS *ppgpos
);
BOOL APIENTRY STROBJ_bEnumPositionsOnly(
STROBJ *pstro,
ULONG *pc,
PGLYPHPOS *ppgpos
);
DWORD APIENTRY STROBJ_dwGetCodePage(
STROBJ *pstro
);
FIX APIENTRY STROBJ_fxCharacterExtra(
STROBJ *pstro
);
FIX APIENTRY STROBJ_fxBreakExtra(
STROBJ *pstro
);
BOOL APIENTRY STROBJ_bGetAdvanceWidths(
STROBJ *pso,
ULONG iFirst,
ULONG c,
POINTQF *pptqD
);
#define SGI_EXTRASPACE 0
/*
* SURFOBJ callbacks
*/
#define STYPE_BITMAP 0L
#define STYPE_DEVICE 1L
#define STYPE_DEVBITMAP 3L
#define BMF_1BPP 1L
#define BMF_4BPP 2L
#define BMF_8BPP 3L
#define BMF_16BPP 4L
#define BMF_24BPP 5L
#define BMF_32BPP 6L
#define BMF_4RLE 7L
#define BMF_8RLE 8L
#define BMF_JPEG 9L
#define BMF_PNG 10L
#define BMF_TOPDOWN 0x0001
#define BMF_NOZEROINIT 0x0002
#define BMF_DONTCACHE 0x0004
#define BMF_USERMEM 0x0008
#define BMF_KMSECTION 0x0010
#define BMF_NOTSYSMEM 0x0020
#define BMF_WINDOW_BLT 0x0040
/*
* XFORMOBJ callbacks
*/
#define GX_IDENTITY 0L
#define GX_OFFSET 1L
#define GX_SCALE 2L
#define GX_GENERAL 3L
#define XF_LTOL 0L
#define XF_INV_LTOL 1L
#define XF_LTOFX 2L
#define XF_INV_FXTOL 3L
ULONG APIENTRY XFORMOBJ_iGetXform(
XFORMOBJ *pxo,
XFORML *pxform
);
BOOL APIENTRY XFORMOBJ_bApplyXform(
XFORMOBJ *pxo,
ULONG iMode,
ULONG cPoints,
PVOID pvIn,
PVOID pvOut
);
HANDLE APIENTRY XFORMOBJ_cmGetTransform(
XFORMOBJ *pxo
);
/*
* XLATEOBJ callbacks
*/
#define XO_TRIVIAL 0x00000001
#define XO_TABLE 0x00000002
#define XO_TO_MONO 0x00000004
#define XO_FROM_CMYK 0x00000008
#define XO_DEVICE_ICM 0x00000010 // ICM on Device
#define XO_HOST_ICM 0x00000020 // ICM on Engine/Apps
#define XO_SRCPALETTE 1
#define XO_DESTPALETTE 2
#define XO_DESTDCPALETTE 3
#define XO_SRCBITFIELDS 4
#define XO_DESTBITFIELDS 5
ULONG APIENTRY XLATEOBJ_iXlate(
XLATEOBJ *pxlo,
ULONG iColor
);
ULONG * APIENTRY XLATEOBJ_piVector(
XLATEOBJ *pxlo
);
ULONG APIENTRY XLATEOBJ_cGetPalette(
XLATEOBJ *pxlo,
ULONG iPal,
ULONG cPal,
ULONG *pPal
);
HANDLE APIENTRY XLATEOBJ_hGetColorTransform(
XLATEOBJ *pxlo
);
/*
* Engine callbacks - error logging
*/
#ifdef USERMODE_DRIVER
#define EngGetLastError GetLastError
#define EngSetLastError SetLastError
#else // !USERMODE_DRIVER
VOID APIENTRY EngSetLastError(ULONG);
ULONG APIENTRY EngGetLastError();
#endif // !USERMODE_DRIVER
/*
* Engine callbacks - Surfaces
*/
#define HOOK_BITBLT 0x00000001
#define HOOK_STRETCHBLT 0x00000002
#define HOOK_PLGBLT 0x00000004
#define HOOK_TEXTOUT 0x00000008
#define HOOK_PAINT 0x00000010 // Obsolete
#define HOOK_STROKEPATH 0x00000020
#define HOOK_FILLPATH 0x00000040
#define HOOK_STROKEANDFILLPATH 0x00000080
#define HOOK_LINETO 0x00000100
#define HOOK_COPYBITS 0x00000400
#define HOOK_MOVEPANNING 0x00000800 // Obsolete
#define HOOK_SYNCHRONIZE 0x00001000
#define HOOK_STRETCHBLTROP 0x00002000
#define HOOK_SYNCHRONIZEACCESS 0x00004000 // Obsolete
#define HOOK_TRANSPARENTBLT 0x00008000
#define HOOK_ALPHABLEND 0x00010000
#define HOOK_GRADIENTFILL 0x00020000
#define HOOK_FLAGS 0x0003b5ff
HBITMAP APIENTRY EngCreateBitmap(
SIZEL sizl,
LONG lWidth,
ULONG iFormat,
FLONG fl,
PVOID pvBits
);
HSURF APIENTRY EngCreateDeviceSurface(
DHSURF dhsurf,
SIZEL sizl,
ULONG iFormatCompat
);
HBITMAP APIENTRY EngCreateDeviceBitmap(
DHSURF dhsurf,
SIZEL sizl,
ULONG iFormatCompat
);
BOOL APIENTRY EngDeleteSurface(
HSURF hsurf
);
SURFOBJ * APIENTRY EngLockSurface(
HSURF hsurf
);
VOID APIENTRY EngUnlockSurface(
SURFOBJ *pso
);
BOOL APIENTRY EngEraseSurface(
SURFOBJ *pso,
RECTL *prcl,
ULONG iColor
);
BOOL APIENTRY EngAssociateSurface(
HSURF hsurf,
HDEV hdev,
FLONG flHooks
);
#define MS_NOTSYSTEMMEMORY 0x0001
#define MS_SHAREDACCESS 0x0002
BOOL APIENTRY EngModifySurface(
HSURF hsurf,
HDEV hdev,
FLONG flHooks,
FLONG flSurface,
DHSURF dhsurf,
VOID* pvScan0,
LONG lDelta,
VOID* pvReserved
);
BOOL APIENTRY EngMarkBandingSurface(
HSURF hsurf
);
BOOL APIENTRY EngCheckAbort(
SURFOBJ *pso
);
/*
* Engine callbacks - Paths
*/
PATHOBJ * APIENTRY EngCreatePath();
VOID APIENTRY EngDeletePath(
PATHOBJ *ppo
);
/*
* Engine callbacks - Palettes
*/
HPALETTE APIENTRY EngCreatePalette(
ULONG iMode,
ULONG cColors,
ULONG *pulColors,
FLONG flRed,
FLONG flGreen,
FLONG flBlue
);
ULONG APIENTRY EngQueryPalette(
HPALETTE hpal,
ULONG *piMode,
ULONG cColors,
ULONG *pulColors);
BOOL APIENTRY EngDeletePalette(
HPALETTE hpal
);
/*
* Engine callbacks - Clipping
*/
CLIPOBJ * APIENTRY EngCreateClip();
VOID APIENTRY EngDeleteClip(
CLIPOBJ *pco
);
/*
* Function prototypes
*/
//
// User-mode printer driver information-query entrypoint
//
BOOL APIENTRY
APIENTRY
DrvQueryDriverInfo(
DWORD dwMode,
PVOID pBuffer,
DWORD cbBuf,
PDWORD pcbNeeded
);
#define DRVQUERY_USERMODE 1
// These are the only EXPORTED functions for ANY driver
BOOL APIENTRY DrvEnableDriver(
ULONG iEngineVersion,
ULONG cj,
DRVENABLEDATA *pded
);
/*
* Driver functions
*/
VOID APIENTRY DrvDisableDriver();
DHPDEV APIENTRY DrvEnablePDEV(
DEVMODEW *pdm,
LPWSTR pwszLogAddress,
ULONG cPat,
HSURF *phsurfPatterns,
ULONG cjCaps,
ULONG *pdevcaps,
ULONG cjDevInfo,
DEVINFO *pdi,
HDEV hdev,
LPWSTR pwszDeviceName,
HANDLE hDriver
);
#define HS_DDI_MAX 6
BOOL APIENTRY DrvResetPDEV(
DHPDEV dhpdevOld,
DHPDEV dhpdevNew
);
VOID APIENTRY DrvCompletePDEV(
DHPDEV dhpdev,
HDEV hdev
);
BOOL APIENTRY DrvOffset( // Obsolete
SURFOBJ* pso,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -