Author: ion Date: Wed Oct 18 10:00:31 2006 New Revision: 24561
URL: http://svn.reactos.org/svn/reactos?rev=24561&view=rev Log: - Some stuff I promised James. This is DC_ATTR from Win2K, IIRC (you called it GDI_USER_DATA). It changed a bit in XP, but now you have a working model. Also added some more flags/enums that I knew about and some font structures.
Modified: trunk/reactos/include/reactos/win32k/ntgdihdl.h trunk/reactos/include/reactos/win32k/ntgdityp.h
Modified: trunk/reactos/include/reactos/win32k/ntgdihdl.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntgd... ============================================================================== --- trunk/reactos/include/reactos/win32k/ntgdihdl.h (original) +++ trunk/reactos/include/reactos/win32k/ntgdihdl.h Wed Oct 18 10:00:31 2006 @@ -74,6 +74,25 @@ #define GDI_HANDLE_SET_STOCKOBJ(h) \ ((h) = (HANDLE)(((ULONG_PTR)(h)) | GDI_HANDLE_STOCK_MASK))
+/* DC_ATTR Dirty Flags */ +#define DIRTY_FILL 0x00000001 +#define DIRTY_LINE 0x00000002 +#define DIRTY_TEXT 0x00000004 +#define DIRTY_BACKGROUND 0x00000008 +#define DIRTY_CHARSET 0x00000010 +#define SLOW_WIDTHS 0x00000020 +#define DC_CACHED_TM_VALID 0x00000040 +#define DISPLAY_DC 0x00000080 +#define DIRTY_PTLCURRENT 0x00000100 +#define DIRTY_PTFXCURRENT 0x00000200 +#define DIRTY_STYLESTATE 0x00000400 +#define DC_PLAYMETAFILE 0x00000800 +#define DC_BRUSH_DIRTY 0x00001000 +#define DC_PEN_DIRTY 0x00002000 +#define DC_DIBSECTION 0x00004000 +#define DC_LAST_CLIPRGN_VALID 0x00008000 +#define DC_PRIMARY_DISPLAY 0x00010000 + /* TYPES *********************************************************************/
typedef struct _GDI_TABLE_ENTRY @@ -84,28 +103,62 @@ PVOID UserData; /* Points to the user mode structure, usually NULL though */ } GDI_TABLE_ENTRY, *PGDI_TABLE_ENTRY;
+typedef struct _RGNATTR +{ + ULONG AttrFlags; + ULONG Flags; + RECTL Rect; +} RGNATTR,*PRGNATTR;
-typedef struct _GDI_USER_DATA +typedef struct _DC_ATTR { - COLORREF PenColor; - COLORREF BrushColor; - INT ROPmode; - INT PolyFillMode; - INT StretchBltMode; - INT BackgroundMode; - COLORREF BackgroundColor; - COLORREF TextColor; - DWORD CodePage; - HCOLORSPACE ColorSpace; - INT TextAlign; /* Text alignment from SetTextAlign() */ - INT CharExtra; /* Spacing from SetTextCharacterExtra() */ - INT BreakExtral; /* SetTextJustification */ - INT BreakCount; /* " */ - INT GraphicsMode; /* Graphics mode */ - INT MapMode; - HFONT hFont; - DWORD Layout; -} GDI_USER_DATA, *PGDI_USER_DATA; - + PVOID pvLDC; + ULONG ulDirty_; + HANDLE hbrush; + HANDLE hpen; + COLORREF crBackgroundClr; + ULONG ulBackgroundClr; + COLORREF crForegroundClr; + ULONG ulForegroundClr; + DWORD iCS_CP; + INT iGraphicsMode; + BYTE jROP2; + BYTE jBkMode; + BYTE jFillMode; + BYTE jStretchBltMode; + POINTL ptlCurrent; + POINTL ptfxCurrent; + LONG lBkMode; + LONG lFillMode; + LONG lStretchBltMode; + FLONG flFontMapper; + LONG lIcmMode; + HANDLE hcmXform; + HCOLORSPACE hColorSpace; + INT IcmBrushColor; + INT IcmPenColor; + FLONG flTextAlign; + LONG lTextAlign; + LONG lTextExtra; + LONG lRelAbs; + LONG lBreakExtra; + LONG cBreak; + HANDLE hlfntNew; + MATRIX_S mxWorldToDevice; + MATRIX_S mxDevicetoWorld; + MATRIX_S mxWorldToPage; + INT iMapMode; + DWORD dwLayout; + LONG lWindowOrgx; + POINTL ptlWindowOrg; + SIZEL szlWindowExt; + POINTL ptlViewportOrg; + SIZEL szlViewportExt; + FLONG flXform; + SIZEL szlVirtualDevicePixel; + SIZEL szlVirtualDeviceMm; + POINTL ptlBrushOrigin; + RGNATTR VisRectRegion; +} DC_ATTR, *PDC_ATTR;
#endif
Modified: trunk/reactos/include/reactos/win32k/ntgdityp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntgd... ============================================================================== --- trunk/reactos/include/reactos/win32k/ntgdityp.h (original) +++ trunk/reactos/include/reactos/win32k/ntgdityp.h Wed Oct 18 10:00:31 2006 @@ -43,27 +43,38 @@
typedef enum _GETDCDWORD { - GdiGetRelAbs = 1, + GdiGetJournal, + GdiGetRelAbs, GdiGetBreakExtra, GdiGerCharBreak, GdiGetArcDirection, GdiGetEMFRestorDc, GdiGetFontLanguageInfo, GdiGetIsMemDc, + GdiGetMapMode, + GdiGetTextCharExtra, } GETDCDWORD, *PGETDCDWORD;
typedef enum _GETSETDCDWORD { - GdiGetSetRelAbs = 4, - GdiGetSetMapperFlagsInternal = 7, - GdiGetSetMapMode = 8, - GdiGetSetArcDirection = 9, + GdtGetSetCopyCount = 2, + GdiGetSetTextAlign, + GdiGetSetRelAbs, + GdiGetSetTextCharExtra, + GdiGetSetSelectFont, + GdiGetSetMapperFlagsInternal, + GdiGetSetMapMode, + GdiGetSetArcDirection, } GETSETDCDWORD, *PGETSETDCDWORD;
typedef enum _GETDCPOINT { GdiGetViewPortExt = 1, - GdiGetDCOrg = 7, + GdiGetWindowExt, + GdiGetViewPortOrg, + GdiGetWindowOrg, + GdiGetAspectRatioFilter, + GdiGetDCOrg = 6, } GETDCPOINT, *PGETDCPOINT;
typedef enum _TRANSFORMTYPE @@ -86,13 +97,50 @@ typedef DWORD CHWIDTHINFO; typedef CHWIDTHINFO *PCHWIDTHINFO; typedef D3DNTHAL_CONTEXTCREATEDATA D3DNTHAL_CONTEXTCREATEI; +typedef LONG FIX;
/* FIXME: Unknown; easy to guess, usually based on public types and converted */ typedef struct _WIDTHDATA WIDTHDATA, *PWIDTHDATA; -typedef struct _TMDIFF TMDIFF, *PTMDIFF; -typedef struct _TMW_INTERNAL TMW_INTERNAL, *PTMW_INTERNAL; -typedef struct _ENUMFONTDATAW ENUMFONTDATAW, *PENUMFONTDATAW; typedef struct _DEVCAPS DEVCAPS, *PDEVCAPS; typedef struct _REALIZATION_INFO REALIZATION_INFO, *PREALIZATION_INFO;
+/* Font Structures */ +typedef struct _TMDIFF +{ + ULONG cjotma; + CHAR chFirst; + CHAR chLast; + CHAR ChDefault; + CHAR ChBreak; +} TMDIFF, *PTMDIFF; + +typedef struct _TMW_INTERNAL +{ + TEXTMETRICW TextMetric; + TMDIFF Diff; +} TMW_INTERNAL, *PTMW_INTERNAL; + +typedef struct _ENUMFONTDATAW ENUMFONTDATAW, *PENUMFONTDATAW; + +/* Number Representation */ +typedef struct _EFLOAT_S +{ + LONG lMant; + LONG lExp; +} EFLOAT_S; + +/* XFORM Structures */ +typedef struct _MATRIX_S +{ + EFLOAT_S efM11; + EFLOAT_S efM12; + EFLOAT_S efM21; + EFLOAT_S efM22; + EFLOAT_S efDx; + EFLOAT_S efDy; + FIX fxDx; + FIX fxDy; + FLONG flAccel; +} MATRIX_S; + #endif