📄 winddi.h
字号:
*/
PVOID APIENTRY BRUSHOBJ_pvAllocRbrush(
BRUSHOBJ *pbo,
ULONG cj
);
PVOID APIENTRY BRUSHOBJ_pvGetRbrush(
BRUSHOBJ *pbo
);
ULONG APIENTRY BRUSHOBJ_ulGetBrushColor(
BRUSHOBJ *pbo
);
HANDLE APIENTRY BRUSHOBJ_hGetColorTransform(
BRUSHOBJ *pbo
);
/*
* CLIPOBJ callbacks
*/
#define DC_TRIVIAL 0
#define DC_RECT 1
#define DC_COMPLEX 3
#define FC_RECT 1
#define FC_RECT4 2
#define FC_COMPLEX 3
#define TC_RECTANGLES 0
#define TC_PATHOBJ 2
#define OC_BANK_CLIP 1 // Obsolete
#define CT_RECTANGLES 0L
#define CD_RIGHTDOWN 0L
#define CD_LEFTDOWN 1L
#define CD_RIGHTUP 2L
#define CD_LEFTUP 3L
#define CD_ANY 4L
#define CD_LEFTWARDS 1L
#define CD_UPWARDS 2L
typedef struct _ENUMRECTS
{
ULONG c;
RECTL arcl[1];
} ENUMRECTS;
ULONG APIENTRY CLIPOBJ_cEnumStart(
CLIPOBJ *pco,
BOOL bAll,
ULONG iType,
ULONG iDirection,
ULONG cLimit
);
BOOL APIENTRY CLIPOBJ_bEnum(
CLIPOBJ *pco,
ULONG cj,
ULONG *pul
);
PATHOBJ* APIENTRY CLIPOBJ_ppoGetPath(
CLIPOBJ* pco
);
/*
* FONTOBJ callbacks
*/
typedef struct _GLYPHBITS
{
POINTL ptlOrigin;
SIZEL sizlBitmap;
BYTE aj[1];
} GLYPHBITS;
#define FO_HGLYPHS 0L
#define FO_GLYPHBITS 1L
#define FO_PATHOBJ 2L
#define FD_NEGATIVE_FONT 1L
#define FO_DEVICE_FONT 1L
#define FO_OUTLINE_CAPABLE 2L
typedef union _GLYPHDEF
{
GLYPHBITS *pgb;
PATHOBJ *ppo;
} GLYPHDEF;
typedef struct _GLYPHPOS /* gp */
{
HGLYPH hg;
GLYPHDEF *pgdf;
POINTL ptl;
} GLYPHPOS,*PGLYPHPOS;
// individual glyph data
// r is a unit vector along the baseline in device coordinates.
// s is a unit vector in the ascent direction in device coordinates.
// A, B, and C, are simple tranforms of the notional space versions into
// (28.4) device coordinates. The dot products of those vectors with r
// are recorded here. Note that the high words of ptqD are also 28.4
// device coordinates. The low words provide extra accuracy.
// THE STRUCTURE DIFFERS IN ORDERING FROM NT 3.51 VERSION OF THE STRUCTURE.
// ptqD has been moved to the bottom.
// This requires only recompile of all the drivers.
typedef struct _GLYPHDATA {
GLYPHDEF gdf; // pointer to GLYPHBITS or to PATHOBJ
HGLYPH hg; // glyhp handle
FIX fxD; // Character increment amount: D*r.
FIX fxA; // Prebearing amount: A*r.
FIX fxAB; // Advancing edge of character: (A+B)*r.
FIX fxInkTop; // Baseline to inkbox top along s.
FIX fxInkBottom; // Baseline to inkbox bottom along s.
RECTL rclInk; // Ink box with sides parallel to x,y axes
POINTQF ptqD; // Character increment vector: D=A+B+C.
} GLYPHDATA;
// flAccel flags for STROBJ
// SO_FLAG_DEFAULT_PLACEMENT // defult inc vectors used to position chars
// SO_HORIZONTAL // "left to right" or "right to left"
// SO_VERTICAL // "top to bottom" or "bottom to top"
// SO_REVERSED // set if horiz & "right to left" or if vert & "bottom to top"
// SO_ZERO_BEARINGS // all glyphs have zero a and c spaces
// SO_CHAR_INC_EQUAL_BM_BASE // base == cx for horiz, == cy for vert.
// SO_MAXEXT_EQUAL_BM_SIDE // side == cy for horiz, == cx for vert.
// do not substitute device font for tt font even if device font sub table
// tells the driver this should be done
// SO_DO_NOT_SUBSTITUTE_DEVICE_FONT
#define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
#define SO_HORIZONTAL 0x00000002
#define SO_VERTICAL 0x00000004
#define SO_REVERSED 0x00000008
#define SO_ZERO_BEARINGS 0x00000010
#define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
#define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
#define SO_GLYPHINDEX_TEXTOUT 0x00000100
#define SO_ESC_NOT_ORIENT 0x00000200
#define SO_DXDY 0x00000400
#define SO_CHARACTER_EXTRA 0x00000800
#define SO_BREAK_EXTRA 0x00001000
typedef struct _STROBJ
{
ULONG cGlyphs; // # of glyphs to render
FLONG flAccel; // accel flags
ULONG ulCharInc; // non-zero only if fixed pitch font, equal to advanced width.
RECTL rclBkGround; // bk ground rect of the string in device coords
GLYPHPOS *pgp; // If non-NULL then has all glyphs.
LPWSTR pwszOrg; // pointer to original unicode string.
} STROBJ;
typedef struct _FONTINFO /* fi */
{
ULONG cjThis;
FLONG flCaps;
ULONG cGlyphsSupported;
ULONG cjMaxGlyph1;
ULONG cjMaxGlyph4;
ULONG cjMaxGlyph8;
ULONG cjMaxGlyph32;
} FONTINFO, *PFONTINFO;
ULONG APIENTRY FONTOBJ_cGetAllGlyphHandles(
FONTOBJ *pfo,
HGLYPH *phg
);
VOID APIENTRY FONTOBJ_vGetInfo(
FONTOBJ *pfo,
ULONG cjSize,
FONTINFO *pfi
);
ULONG APIENTRY FONTOBJ_cGetGlyphs(
FONTOBJ *pfo,
ULONG iMode,
ULONG cGlyph,
HGLYPH *phg,
PVOID *ppvGlyph
);
GAMMA_TABLES* APIENTRY FONTOBJ_pGetGammaTables(
FONTOBJ *pfo
);
XFORMOBJ * APIENTRY FONTOBJ_pxoGetXform(
FONTOBJ *pfo
);
IFIMETRICS * APIENTRY FONTOBJ_pifi(
FONTOBJ *pfo
);
FD_GLYPHSET * APIENTRY FONTOBJ_pfdg(
FONTOBJ *pfo
);
PVOID APIENTRY FONTOBJ_pvTrueTypeFontFile(
FONTOBJ *pfo,
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
#
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -