Reorder drv function and added missing items. One update to winddi.h.

svn path=/trunk/; revision=30923
This commit is contained in:
James Tabor 2007-11-30 23:52:25 +00:00
parent 6eb82849c7
commit 7c34f36a33
2 changed files with 473 additions and 437 deletions

View file

@ -3779,6 +3779,12 @@ typedef BOOL
IN POINTL *pptlBrushOrg, IN POINTL *pptlBrushOrg,
IN MIX mix); IN MIX mix);
typedef VOID
(APIENTRY *PFN_DrvMovePanning)(
IN LONG x,
IN LONG y,
IN FLONG fl);
typedef BOOL typedef BOOL
(APIENTRY *PFN_DrvPlgBlt)( (APIENTRY *PFN_DrvPlgBlt)(
IN SURFOBJ *psoTrg, IN SURFOBJ *psoTrg,

View file

@ -1,437 +1,467 @@
/* /*
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Win32 Graphical Subsystem (WIN32K) * PROJECT: ReactOS Win32 Graphical Subsystem (WIN32K)
* FILE: include/win32k/ntgdityp.h * FILE: include/win32k/ntgdityp.h
* PURPOSE: Win32 Shared GDI Types for NtGdi* * PURPOSE: Win32 Shared GDI Types for NtGdi*
* PROGRAMMER: Alex Ionescu (alex@relsoft.net) * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
*/ */
/* INCLUDES ******************************************************************/ /* INCLUDES ******************************************************************/
#ifndef _NTGDITYP_ #ifndef _NTGDITYP_
#define _NTGDITYP_ #define _NTGDITYP_
/* ENUMERATIONS **************************************************************/ /* ENUMERATIONS **************************************************************/
typedef enum _ARCTYPE typedef enum _ARCTYPE
{ {
GdiTypeArc, GdiTypeArc,
GdiTypeArcTo, GdiTypeArcTo,
GdiTypeChord, GdiTypeChord,
GdiTypePie, GdiTypePie,
} ARCTYPE, *PARCTYPE; } ARCTYPE, *PARCTYPE;
typedef enum _PALFUNCTYPE typedef enum _PALFUNCTYPE
{ {
GdiPalAnimate, GdiPalAnimate,
GdiPalSetEntries, GdiPalSetEntries,
GdiPalGetEntries, GdiPalGetEntries,
GdiPalGetSystemEntries, GdiPalGetSystemEntries,
GdiPalSetColorTable, GdiPalSetColorTable,
GdiPalGetColorTable, GdiPalGetColorTable,
} PALFUNCTYPE, *PPALFUNCTYPE; } PALFUNCTYPE, *PPALFUNCTYPE;
typedef enum _POLYFUNCTYPE typedef enum _POLYFUNCTYPE
{ {
GdiPolyPolygon = 1, GdiPolyPolygon = 1,
GdiPolyPolyLine, GdiPolyPolyLine,
GdiPolyBezier, GdiPolyBezier,
GdiPolyLineTo, GdiPolyLineTo,
GdiPolyBezierTo, GdiPolyBezierTo,
GdiPolyPolyRgn, GdiPolyPolyRgn,
} POLYFUNCTYPE, *PPOLYFUNCTYPE; } POLYFUNCTYPE, *PPOLYFUNCTYPE;
typedef enum _GETDCDWORD typedef enum _GETDCDWORD
{ {
GdiGetJournal, GdiGetJournal,
GdiGetRelAbs, GdiGetRelAbs,
GdiGetBreakExtra, GdiGetBreakExtra,
GdiGerCharBreak, GdiGerCharBreak,
GdiGetArcDirection, GdiGetArcDirection,
GdiGetEMFRestorDc, GdiGetEMFRestorDc,
GdiGetFontLanguageInfo, GdiGetFontLanguageInfo,
GdiGetIsMemDc, GdiGetIsMemDc,
GdiGetMapMode, GdiGetMapMode,
GdiGetTextCharExtra, GdiGetTextCharExtra,
} GETDCDWORD, *PGETDCDWORD; } GETDCDWORD, *PGETDCDWORD;
typedef enum _GETSETDCDWORD typedef enum _GETSETDCDWORD
{ {
GdtGetSetCopyCount = 2, GdtGetSetCopyCount = 2,
GdiGetSetTextAlign, GdiGetSetTextAlign,
GdiGetSetRelAbs, GdiGetSetRelAbs,
GdiGetSetTextCharExtra, GdiGetSetTextCharExtra,
GdiGetSetSelectFont, GdiGetSetSelectFont,
GdiGetSetMapperFlagsInternal, GdiGetSetMapperFlagsInternal,
GdiGetSetMapMode, GdiGetSetMapMode,
GdiGetSetArcDirection, GdiGetSetArcDirection,
} GETSETDCDWORD, *PGETSETDCDWORD; } GETSETDCDWORD, *PGETSETDCDWORD;
typedef enum _GETDCPOINT typedef enum _GETDCPOINT
{ {
GdiGetViewPortExt = 1, GdiGetViewPortExt = 1,
GdiGetWindowExt, GdiGetWindowExt,
GdiGetViewPortOrg, GdiGetViewPortOrg,
GdiGetWindowOrg, GdiGetWindowOrg,
GdiGetAspectRatioFilter, GdiGetAspectRatioFilter,
GdiGetDCOrg = 6, GdiGetDCOrg = 6,
} GETDCPOINT, *PGETDCPOINT; } GETDCPOINT, *PGETDCPOINT;
typedef enum _GDIBATCHCMD typedef enum _GDIBATCHCMD
{ {
GdiBCPatBlt, GdiBCPatBlt,
GdiBCPolyPatBlt, GdiBCPolyPatBlt,
GdiBCTextOut, GdiBCTextOut,
GdiBCExtTextOut, GdiBCExtTextOut,
GdiBCSetBrushOrg, GdiBCSetBrushOrg,
GdiBCExtSelClipRgn, GdiBCExtSelClipRgn,
GdiBCSelObj, GdiBCSelObj,
GdiBCDelObj, GdiBCDelObj,
GdiBCDelRgn, GdiBCDelRgn,
} GDIBATCHCMD, *PGDIBATCHCMD; } GDIBATCHCMD, *PGDIBATCHCMD;
typedef enum _TRANSFORMTYPE typedef enum _TRANSFORMTYPE
{ {
GdiDpToLp, GdiDpToLp,
GdiLpToDp, GdiLpToDp,
} TRANSFORMTYPE, *PTRANSFORMTYPE; } TRANSFORMTYPE, *PTRANSFORMTYPE;
#define GdiWorldSpaceToPageSpace 0x203 #define GdiWorldSpaceToPageSpace 0x203
/* FIXME: Unknown */ /* FIXME: Unknown */
typedef DWORD FULLSCREENCONTROL; typedef DWORD FULLSCREENCONTROL;
typedef DWORD LFTYPE; typedef DWORD LFTYPE;
/* DEFINES *******************************************************************/ /* DEFINES *******************************************************************/
#define GDIBATCHBUFSIZE 0x136*4 #define GDIBATCHBUFSIZE 0x136*4
#define GDI_BATCH_LIMIT 20 #define GDI_BATCH_LIMIT 20
// NtGdiGetCharWidthW Flags // NtGdiGetCharWidthW Flags
#define GCW_WIN32 0x0001 #define GCW_WIN32 0x0001
#define GCW_NOFLOAT 0x0002 #define GCW_NOFLOAT 0x0002
#define GCW_INDICES 0x0008 #define GCW_INDICES 0x0008
// NtGdiGetCharABCWidthW Flags // NtGdiGetCharABCWidthW Flags
#define GCABCW_NOFLOAT 0x0001 #define GCABCW_NOFLOAT 0x0001
#define GCABCW_INDICES 0x0002 #define GCABCW_INDICES 0x0002
/* TYPES *********************************************************************/ /* TYPES *********************************************************************/
typedef PVOID KERNEL_PVOID; typedef PVOID KERNEL_PVOID;
typedef DWORD UNIVERSAL_FONT_ID; typedef DWORD UNIVERSAL_FONT_ID;
typedef UNIVERSAL_FONT_ID *PUNIVERSAL_FONT_ID; typedef UNIVERSAL_FONT_ID *PUNIVERSAL_FONT_ID;
typedef DWORD CHWIDTHINFO; typedef DWORD CHWIDTHINFO;
typedef CHWIDTHINFO *PCHWIDTHINFO; typedef CHWIDTHINFO *PCHWIDTHINFO;
typedef D3DNTHAL_CONTEXTCREATEDATA D3DNTHAL_CONTEXTCREATEI; typedef D3DNTHAL_CONTEXTCREATEDATA D3DNTHAL_CONTEXTCREATEI;
typedef LONG FIX; typedef LONG FIX;
/* FIXME: Unknown; easy to guess, usually based on public types and converted */ /* FIXME: Unknown; easy to guess, usually based on public types and converted */
typedef struct _WIDTHDATA WIDTHDATA, *PWIDTHDATA; typedef struct _WIDTHDATA WIDTHDATA, *PWIDTHDATA;
typedef struct _DEVCAPS DEVCAPS, *PDEVCAPS; typedef struct _DEVCAPS DEVCAPS, *PDEVCAPS;
typedef struct _REALIZATION_INFO REALIZATION_INFO, *PREALIZATION_INFO; typedef struct _REALIZATION_INFO REALIZATION_INFO, *PREALIZATION_INFO;
/* Font Structures */ /* Font Structures */
typedef struct _TMDIFF typedef struct _TMDIFF
{ {
ULONG cjotma; ULONG cjotma;
CHAR chFirst; CHAR chFirst;
CHAR chLast; CHAR chLast;
CHAR ChDefault; CHAR ChDefault;
CHAR ChBreak; CHAR ChBreak;
} TMDIFF, *PTMDIFF; } TMDIFF, *PTMDIFF;
typedef struct _TMW_INTERNAL typedef struct _TMW_INTERNAL
{ {
TEXTMETRICW TextMetric; TEXTMETRICW TextMetric;
TMDIFF Diff; TMDIFF Diff;
} TMW_INTERNAL, *PTMW_INTERNAL; } TMW_INTERNAL, *PTMW_INTERNAL;
typedef struct _NTMW_INTERNAL typedef struct _NTMW_INTERNAL
{ {
TMDIFF tmd; TMDIFF tmd;
NEWTEXTMETRICEXW ntmw; NEWTEXTMETRICEXW ntmw;
} NTMW_INTERNAL, *PNTMW_INTERNAL; } NTMW_INTERNAL, *PNTMW_INTERNAL;
typedef struct _ENUMFONTDATAW typedef struct _ENUMFONTDATAW
{ {
ULONG cbSize; ULONG cbSize;
ULONG ulNtmwiOffset; ULONG ulNtmwiOffset;
DWORD dwFontType; DWORD dwFontType;
ENUMLOGFONTEXDVW elfexdv; /* variable size! */ ENUMLOGFONTEXDVW elfexdv; /* variable size! */
/* NTMW_INTERNAL ntmwi; use ulNtwmOffset */ /* NTMW_INTERNAL ntmwi; use ulNtwmOffset */
} ENUMFONTDATAW, *PENUMFONTDATAW; } ENUMFONTDATAW, *PENUMFONTDATAW;
/* Number Representation */ /* Number Representation */
typedef struct _EFLOAT_S typedef struct _EFLOAT_S
{ {
LONG lMant; LONG lMant;
LONG lExp; LONG lExp;
} EFLOAT_S; } EFLOAT_S;
/* XFORM Structures */ /* XFORM Structures */
typedef struct _MATRIX_S typedef struct _MATRIX_S
{ {
EFLOAT_S efM11; EFLOAT_S efM11;
EFLOAT_S efM12; EFLOAT_S efM12;
EFLOAT_S efM21; EFLOAT_S efM21;
EFLOAT_S efM22; EFLOAT_S efM22;
EFLOAT_S efDx; EFLOAT_S efDx;
EFLOAT_S efDy; EFLOAT_S efDy;
FIX fxDx; FIX fxDx;
FIX fxDy; FIX fxDy;
FLONG flAccel; FLONG flAccel;
} MATRIX_S; } MATRIX_S;
/* Gdi XForm storage union */ /* Gdi XForm storage union */
typedef union typedef union
{ {
FLOAT f; FLOAT f;
ULONG l; ULONG l;
} gxf_long; } gxf_long;
// //
// GDI Batch structures. // GDI Batch structures.
// //
typedef struct _GDIBATCHHDR typedef struct _GDIBATCHHDR
{ {
SHORT Size; SHORT Size;
SHORT Cmd; SHORT Cmd;
} GDIBATCHHDR, *PGDIBATCHHDR; } GDIBATCHHDR, *PGDIBATCHHDR;
typedef struct _GDIBSPATBLT typedef struct _GDIBSPATBLT
{ {
GDIBATCHHDR gbHdr; GDIBATCHHDR gbHdr;
int nXLeft; int nXLeft;
int nYLeft; int nYLeft;
int nWidth; int nWidth;
int nHeight; int nHeight;
HANDLE hbrush; HANDLE hbrush;
DWORD dwRop; DWORD dwRop;
COLORREF crForegroundClr; COLORREF crForegroundClr;
COLORREF crBackgroundClr; COLORREF crBackgroundClr;
COLORREF crBrushClr; COLORREF crBrushClr;
INT IcmBrushColor; INT IcmBrushColor;
POINTL ptlViewportOrg; POINTL ptlViewportOrg;
ULONG ulForegroundClr; ULONG ulForegroundClr;
ULONG ulBackgroundClr; ULONG ulBackgroundClr;
ULONG ulBrushClr; ULONG ulBrushClr;
} GDIBSPATBLT, *PGDIBSPATBLT; } GDIBSPATBLT, *PGDIBSPATBLT;
#ifndef _NTUSRTYP_ #ifndef _NTUSRTYP_
typedef struct _PATRECT typedef struct _PATRECT
{ {
RECT r; RECT r;
HBRUSH hBrush; HBRUSH hBrush;
} PATRECT, * PPATRECT; } PATRECT, * PPATRECT;
#endif #endif
typedef struct _GDIBSPPATBLT typedef struct _GDIBSPPATBLT
{ {
GDIBATCHHDR gbHdr; GDIBATCHHDR gbHdr;
DWORD rop4; DWORD rop4;
DWORD Mode; DWORD Mode;
DWORD Count; DWORD Count;
COLORREF crForegroundClr; COLORREF crForegroundClr;
COLORREF crBackgroundClr; COLORREF crBackgroundClr;
COLORREF crBrushClr; COLORREF crBrushClr;
ULONG ulForegroundClr; ULONG ulForegroundClr;
ULONG ulBackgroundClr; ULONG ulBackgroundClr;
ULONG ulBrushClr; ULONG ulBrushClr;
POINTL ptlViewportOrg; POINTL ptlViewportOrg;
PATRECT pRect[1]; // POLYPATBLT PATRECT pRect[1]; // POLYPATBLT
} GDIBSPPATBLT, *PGDIBSPPATBLT; } GDIBSPPATBLT, *PGDIBSPPATBLT;
typedef struct _GDIBSTEXTOUT typedef struct _GDIBSTEXTOUT
{ {
GDIBATCHHDR gbHdr; GDIBATCHHDR gbHdr;
COLORREF crForegroundClr; COLORREF crForegroundClr;
COLORREF crBackgroundClr; COLORREF crBackgroundClr;
LONG lmBkMode; LONG lmBkMode;
ULONG ulForegroundClr; ULONG ulForegroundClr;
ULONG ulBackgroundClr; ULONG ulBackgroundClr;
int x; int x;
int y; int y;
UINT Options; UINT Options;
RECT Rect; RECT Rect;
DWORD iCS_CP; DWORD iCS_CP;
UINT cbCount; UINT cbCount;
UINT Size; UINT Size;
HANDLE hlfntNew; HANDLE hlfntNew;
FLONG flTextAlign; FLONG flTextAlign;
POINTL ptlViewportOrg; POINTL ptlViewportOrg;
WCHAR String[2]; WCHAR String[2];
} GDIBSTEXTOUT, *PGDIBSTEXTOUT; } GDIBSTEXTOUT, *PGDIBSTEXTOUT;
typedef struct _GDIBSEXTTEXTOUT typedef struct _GDIBSEXTTEXTOUT
{ {
GDIBATCHHDR gbHdr; GDIBATCHHDR gbHdr;
UINT Count; UINT Count;
UINT Options; UINT Options;
RECT Rect; RECT Rect;
POINTL ptlViewportOrg; POINTL ptlViewportOrg;
ULONG ulBackgroundClr; ULONG ulBackgroundClr;
} GDIBSEXTTEXTOUT, *PGDIBSEXTTEXTOUT; } GDIBSEXTTEXTOUT, *PGDIBSEXTTEXTOUT;
typedef struct _GDIBSSETBRHORG typedef struct _GDIBSSETBRHORG
{ {
GDIBATCHHDR gbHdr; GDIBATCHHDR gbHdr;
POINTL ptlBrushOrigin; POINTL ptlBrushOrigin;
} GDIBSSETBRHORG, *PGDIBSSETBRHORG; } GDIBSSETBRHORG, *PGDIBSSETBRHORG;
typedef struct _GDIBSEXTSELCLPRGN typedef struct _GDIBSEXTSELCLPRGN
{ {
GDIBATCHHDR gbHdr; GDIBATCHHDR gbHdr;
int fnMode; int fnMode;
LONG right; LONG right;
LONG bottom; LONG bottom;
LONG left; LONG left;
LONG top; LONG top;
} GDIBSEXTSELCLPRGN, *PGDIBSEXTSELCLPRGN; } GDIBSEXTSELCLPRGN, *PGDIBSEXTSELCLPRGN;
// //
// Use with GdiBCSelObj, GdiBCDelObj and GdiBCDelRgn. // Use with GdiBCSelObj, GdiBCDelObj and GdiBCDelRgn.
typedef struct _GDIBSOBJECT typedef struct _GDIBSOBJECT
{ {
GDIBATCHHDR gbHdr; GDIBATCHHDR gbHdr;
HGDIOBJ hgdiobj; HGDIOBJ hgdiobj;
} GDIBSOBJECT, *PGDIBSOBJECT; } GDIBSOBJECT, *PGDIBSOBJECT;
// //
// Driver Functions // Driver Functions
// //
typedef BOOL (NTAPI *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA); typedef BOOL (NTAPI *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
typedef DHPDEV (NTAPI *PGD_ENABLEPDEV)(DEVMODEW *, LPWSTR, ULONG, HSURF *, ULONG, ULONG *, ULONG, DEVINFO *, LPWSTR, LPWSTR, HANDLE); typedef DHPDEV (NTAPI *PGD_ENABLEPDEV)(DEVMODEW *, LPWSTR, ULONG, HSURF *, ULONG, ULONG *, ULONG, DEVINFO *, LPWSTR, LPWSTR, HANDLE);
typedef VOID (NTAPI *PGD_COMPLETEPDEV)(DHPDEV, HDEV); typedef VOID (NTAPI *PGD_COMPLETEPDEV)(DHPDEV, HDEV);
typedef VOID (NTAPI *PGD_DISABLEPDEV)(DHPDEV); typedef VOID (NTAPI *PGD_DISABLEPDEV)(DHPDEV);
typedef HSURF (NTAPI *PGD_ENABLESURFACE)(DHPDEV); typedef HSURF (NTAPI *PGD_ENABLESURFACE)(DHPDEV);
typedef VOID (NTAPI *PGD_DISABLESURFACE)(DHPDEV); typedef VOID (NTAPI *PGD_DISABLESURFACE)(DHPDEV);
typedef BOOL (NTAPI *PGD_ASSERTMODE)(DHPDEV, BOOL); typedef BOOL (NTAPI *PGD_ASSERTMODE)(DHPDEV, BOOL);
typedef BOOL (NTAPI *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG); typedef BOOL (NTAPI *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);
typedef BOOL (NTAPI *PGD_RESETPDEV)(DHPDEV, DHPDEV); typedef BOOL (NTAPI *PGD_RESETPDEV)(DHPDEV, DHPDEV);
typedef VOID (NTAPI *PGD_DISABLEDRIVER)(VOID); typedef VOID (NTAPI *PGD_DISABLEDRIVER)(VOID);
typedef HBITMAP (NTAPI *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG); typedef HBITMAP (NTAPI *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
typedef VOID (NTAPI *PGD_DELETEDEVICEBITMAP)(DHSURF); typedef VOID (NTAPI *PGD_DELETEDEVICEBITMAP)(DHSURF);
typedef BOOL (NTAPI *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*); typedef BOOL (NTAPI *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);
typedef BOOL (NTAPI *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, ULONG); typedef BOOL (NTAPI *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, ULONG);
typedef ULONG (NTAPI *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG); typedef ULONG (NTAPI *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
typedef BOOL (NTAPI *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, POINTL*, PLINEATTRS, MIX); typedef BOOL (NTAPI *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, POINTL*, PLINEATTRS, MIX);
typedef BOOL (NTAPI *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX, ULONG); typedef BOOL (NTAPI *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX, ULONG);
typedef BOOL (NTAPI *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, PLINEATTRS, BRUSHOBJ*, POINTL*, MIX, ULONG); typedef BOOL (NTAPI *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, PLINEATTRS, BRUSHOBJ*, POINTL*, MIX, ULONG);
typedef BOOL (NTAPI *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX); typedef BOOL (NTAPI *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX);
typedef BOOL (NTAPI *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*, POINTL*, ROP4); typedef BOOL (NTAPI *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*, POINTL*, ROP4);
typedef BOOL (NTAPI *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, ULONG, ULONG); typedef BOOL (NTAPI *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, ULONG, ULONG);
typedef BOOL (NTAPI *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*); typedef BOOL (NTAPI *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*);
typedef BOOL (NTAPI *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG); typedef BOOL (NTAPI *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG);
typedef BOOL (NTAPI *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG, BRUSHOBJ*, DWORD); typedef BOOL (NTAPI *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG, BRUSHOBJ*, DWORD);
typedef BOOL (NTAPI *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG); typedef BOOL (NTAPI *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
typedef BOOL (NTAPI *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*, RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX); typedef BOOL (NTAPI *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*, RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX);
typedef ULONG (NTAPI *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *); typedef ULONG (NTAPI *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *);
typedef ULONG (NTAPI *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG, PVOID *); typedef ULONG (NTAPI *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG, PVOID *);
typedef PIFIMETRICS (NTAPI *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG); typedef PIFIMETRICS (NTAPI *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
typedef PVOID (NTAPI *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG); typedef PVOID (NTAPI *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
typedef LONG (NTAPI *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*, PVOID, ULONG); typedef LONG (NTAPI *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*, PVOID, ULONG);
typedef ULONG (NTAPI *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, LONG, LONG, LONG, LONG, RECTL*, ULONG); typedef ULONG (NTAPI *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, LONG, LONG, LONG, LONG, RECTL*, ULONG);
typedef VOID (NTAPI *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*); typedef VOID (NTAPI *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*);
typedef BOOL (NTAPI *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG, LONG, RECTL*, MIX); typedef BOOL (NTAPI *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG, LONG, RECTL*, MIX);
typedef BOOL (NTAPI *PGD_SENDPAGE)(SURFOBJ*); typedef BOOL (NTAPI *PGD_SENDPAGE)(SURFOBJ*);
typedef BOOL (NTAPI *PGD_STARTPAGE)(SURFOBJ*); typedef BOOL (NTAPI *PGD_STARTPAGE)(SURFOBJ*);
typedef BOOL (NTAPI *PGD_ENDDOC)(SURFOBJ*, ULONG); typedef BOOL (NTAPI *PGD_ENDDOC)(SURFOBJ*, ULONG);
typedef BOOL (NTAPI *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD); typedef BOOL (NTAPI *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);
typedef ULONG (NTAPI *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*); typedef ULONG (NTAPI *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);
typedef VOID (NTAPI *PGD_SYNCHRONIZE)(DHPDEV, RECTL*); typedef VOID (NTAPI *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);
typedef ULONG (NTAPI *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*); typedef ULONG (NTAPI *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);
typedef ULONG (NTAPI *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW); typedef ULONG (NTAPI *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
typedef VOID (NTAPI *PGD_FREE)(PVOID, ULONG); typedef VOID (NTAPI *PGD_FREE)(PVOID, ULONG);
typedef VOID (NTAPI *PGD_DESTROYFONT)(FONTOBJ*); typedef VOID (NTAPI *PGD_DESTROYFONT)(FONTOBJ*);
typedef LONG (NTAPI *PGD_QUERYFONTCAPS)(ULONG, PULONG); typedef LONG (NTAPI *PGD_QUERYFONTCAPS)(ULONG, PULONG);
typedef ULONG (NTAPI *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG); typedef ULONG (NTAPI *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
typedef BOOL (NTAPI *PGD_UNLOADFONTFILE)(ULONG); typedef BOOL (NTAPI *PGD_UNLOADFONTFILE)(ULONG);
typedef ULONG (NTAPI *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID, ULONG, PVOID); typedef ULONG (NTAPI *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID, ULONG, PVOID);
typedef LONG (NTAPI *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG, PBYTE); typedef LONG (NTAPI *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG, PBYTE);
typedef LONG (NTAPI *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL, GLYPHDATA*, ULONG, TTPOLYGONHEADER*); typedef LONG (NTAPI *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL, GLYPHDATA*, ULONG, TTPOLYGONHEADER*);
typedef PVOID (NTAPI *PGD_GETTRUETYPEFILE)(ULONG, PULONG); typedef PVOID (NTAPI *PGD_GETTRUETYPEFILE)(ULONG, PULONG);
typedef LONG (NTAPI *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG); typedef LONG (NTAPI *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
typedef BOOL (NTAPI *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *, PVOID *, ULONG); typedef BOOL (NTAPI *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *, PVOID *, ULONG);
typedef BOOL (NTAPI *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG); typedef BOOL (NTAPI *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);
typedef LONG (NTAPI *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG, PPIXELFORMATDESCRIPTOR); typedef LONG (NTAPI *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG, PPIXELFORMATDESCRIPTOR);
typedef BOOL (NTAPI *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ); typedef BOOL (NTAPI *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);
typedef BOOL (NTAPI *PGD_STARTBANDING)(SURFOBJ*, POINTL*); typedef BOOL (NTAPI *PGD_STARTBANDING)(SURFOBJ*, POINTL*);
typedef BOOL (NTAPI *PGD_NEXTBAND)(SURFOBJ*, POINTL*); typedef BOOL (NTAPI *PGD_NEXTBAND)(SURFOBJ*, POINTL*);
typedef BOOL (NTAPI *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD); typedef BOOL (NTAPI *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);
typedef BOOL (NTAPI *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS); typedef BOOL (NTAPI *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);
typedef VOID (NTAPI *PGD_DISABLEDIRECTDRAW)(DHPDEV); typedef VOID (NTAPI *PGD_DISABLEDIRECTDRAW)(DHPDEV);
typedef LONG (NTAPI *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR); typedef LONG (NTAPI *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
typedef BOOL (NTAPI *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG); typedef BOOL (NTAPI *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
typedef VOID (NTAPI *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG); typedef VOID (NTAPI *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);
typedef struct _DRIVER_FUNCTIONS //
{ // Most of these are definded in ddk/winddi.h
PGD_ENABLEDRIVER EnableDriver; //
PGD_ENABLEPDEV EnablePDEV; typedef struct _DRIVER_FUNCTIONS
PGD_COMPLETEPDEV CompletePDEV; {
PGD_DISABLEPDEV DisablePDEV; PGD_ENABLEDRIVER EnableDriver; //ReactOS Extra
PGD_ENABLESURFACE EnableSurface; PGD_ENABLEPDEV EnablePDEV;
PGD_DISABLESURFACE DisableSurface; PGD_COMPLETEPDEV CompletePDEV;
PGD_ASSERTMODE AssertMode; PGD_DISABLEPDEV DisablePDEV;
PGD_OFFSET Offset; PGD_ENABLESURFACE EnableSurface;
PGD_RESETPDEV ResetPDEV; PGD_DISABLESURFACE DisableSurface;
PGD_DISABLEDRIVER DisableDriver; PGD_ASSERTMODE AssertMode;
PGD_CREATEDEVICEBITMAP CreateDeviceBitmap; PGD_OFFSET Offset;
PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap; PGD_RESETPDEV ResetPDEV;
PGD_REALIZEBRUSH RealizeBrush; PGD_DISABLEDRIVER DisableDriver;
PGD_DITHERCOLOR DitherColor; PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
PGD_STROKEPATH StrokePath; PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
PGD_FILLPATH FillPath; PGD_REALIZEBRUSH RealizeBrush;
PGD_STROKEANDFILLPATH StrokeAndFillPath; PGD_DITHERCOLOR DitherColor;
PGD_PAINT Paint; PGD_STROKEPATH StrokePath;
PGD_BITBLT BitBlt; PGD_FILLPATH FillPath;
PGD_TRANSPARENTBLT TransparentBlt; PGD_STROKEANDFILLPATH StrokeAndFillPath;
PGD_COPYBITS CopyBits; PGD_PAINT Paint;
PGD_STRETCHBLT StretchBlt; PGD_BITBLT BitBlt;
PGD_STRETCHBLTROP StretchBltROP; PGD_COPYBITS CopyBits;
PGD_SETPALETTE SetPalette; PGD_STRETCHBLT StretchBlt;
PGD_TEXTOUT TextOut; PGD_SETPALETTE SetPalette;
PGD_ESCAPE Escape; PGD_TEXTOUT TextOut;
PGD_DRAWESCAPE DrawEscape; PGD_ESCAPE Escape;
PGD_QUERYFONT QueryFont; PGD_DRAWESCAPE DrawEscape;
PGD_QUERYFONTTREE QueryFontTree; PGD_QUERYFONT QueryFont;
PGD_QUERYFONTDATA QueryFontData; PGD_QUERYFONTTREE QueryFontTree;
PGD_SETPOINTERSHAPE SetPointerShape; PGD_QUERYFONTDATA QueryFontData;
PGD_MOVEPOINTER MovePointer; PGD_SETPOINTERSHAPE SetPointerShape;
PGD_LINETO LineTo; PGD_MOVEPOINTER MovePointer;
PGD_SENDPAGE SendPage; PGD_LINETO LineTo;
PGD_STARTPAGE StartPage; PGD_SENDPAGE SendPage;
PGD_ENDDOC EndDoc; PGD_STARTPAGE StartPage;
PGD_STARTDOC StartDoc; PGD_ENDDOC EndDoc;
PGD_GETGLYPHMODE GetGlyphMode; PGD_STARTDOC StartDoc;
PGD_SYNCHRONIZE Synchronize; PGD_GETGLYPHMODE GetGlyphMode;
PGD_SAVESCREENBITS SaveScreenBits; PGD_SYNCHRONIZE Synchronize;
PGD_GETMODES GetModes; PGD_SAVESCREENBITS SaveScreenBits;
PGD_FREE Free; PGD_GETMODES GetModes;
PGD_DESTROYFONT DestroyFont; PGD_FREE Free;
PGD_QUERYFONTCAPS QueryFontCaps; PGD_DESTROYFONT DestroyFont;
PGD_LOADFONTFILE LoadFontFile; PGD_QUERYFONTCAPS QueryFontCaps;
PGD_UNLOADFONTFILE UnloadFontFile; PGD_LOADFONTFILE LoadFontFile;
PGD_FONTMANAGEMENT FontManagement; PGD_UNLOADFONTFILE UnloadFontFile;
PGD_QUERYTRUETYPETABLE QueryTrueTypeTable; PGD_FONTMANAGEMENT FontManagement;
PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline; PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;
PGD_GETTRUETYPEFILE GetTrueTypeFile; PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;
PGD_QUERYFONTFILE QueryFontFile; PGD_GETTRUETYPEFILE GetTrueTypeFile;
PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths; PGD_QUERYFONTFILE QueryFontFile;
PGD_SETPIXELFORMAT SetPixelFormat; PFN_DrvMovePanning MovePanning;
PGD_DESCRIBEPIXELFORMAT DescribePixelFormat; PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;
PGD_SWAPBUFFERS SwapBuffers; PGD_SETPIXELFORMAT SetPixelFormat;
PGD_STARTBANDING StartBanding; PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;
PGD_NEXTBAND NextBand; PGD_SWAPBUFFERS SwapBuffers;
PGD_GETDIRECTDRAWINFO GetDirectDrawInfo; PGD_STARTBANDING StartBanding;
PGD_ENABLEDIRECTDRAW EnableDirectDraw; PGD_NEXTBAND NextBand;
PGD_DISABLEDIRECTDRAW DisableDirectDraw; PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;
PGD_QUERYSPOOLTYPE QuerySpoolType; PGD_ENABLEDIRECTDRAW EnableDirectDraw;
PGD_GRADIENTFILL GradientFill; PGD_DISABLEDIRECTDRAW DisableDirectDraw;
PGD_SYNCHRONIZESURFACE SynchronizeSurface; PGD_QUERYSPOOLTYPE QuerySpoolType;
PGD_ALPHABLEND AlphaBlend; PFN_DrvIcmCreateColorTransform IcmCreateColorTransform;
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS; PFN_DrvIcmDeleteColorTransform IcmDeleteColorTransform;
PFN_DrvIcmCheckBitmapBits IcmCheckBitmapBits;
#endif PFN_DrvIcmSetDeviceGammaRamp IcmSetDeviceGammaRamp;
PGD_GRADIENTFILL GradientFill;
PGD_STRETCHBLTROP StretchBltROP;
PFN_DrvPlgBlt PlgBlt;
PGD_ALPHABLEND AlphaBlend;
// PFN_DrvSynthesizeFont SynthesizeFont;
PVOID Unknown1;
// PFN_DrvGetSynthesizedFontFiles GetSynthesizedFontFiles;
PVOID Unknown2;
PGD_TRANSPARENTBLT TransparentBlt;
PFN_DrvQueryPerBandInfo QueryPerBandInfo;
PFN_DrvQueryDeviceSupport QueryDeviceSupport;
PVOID Reserved1;
PVOID Reserved2;
PVOID Reserved3;
PVOID Reserved4;
PVOID Reserved5;
PVOID Reserved6;
PVOID Reserved7;
PVOID Reserved8;
PFN_DrvDeriveSurface DeriveSurface;
PFN_DrvQueryGlyphAttrs QueryGlyphAttrs;
PFN_DrvNotify Notify;
PGD_SYNCHRONIZESURFACE SynchronizeSurface;
PFN_DrvResetDevice ResetDevice;
PVOID Reserved9;
PVOID Reserved10;
PVOID Reserved11;
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
#endif