+++ /dev/null
-/*
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS Win32 Graphical Subsystem (WIN32K)
- * FILE: win32ss/include/ntgdihdl.h
- * PURPOSE: Win32 Shared GDI Handle/Object Types
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- */
-
-/* INCLUDES ******************************************************************/
-
-#ifndef _NTGDIHDL_
-#define _NTGDIHDL_
-
-#include <winddi.h>
-
-/* DEFINES *******************************************************************/
-
-/* GDI handle table can hold 0x10000 handles */
-#define GDI_HANDLE_COUNT 0x10000
-#define GDI_CFONT_MAX 16
-
-/* Handle Masks and shifts */
-#define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1)
-#define GDI_HANDLE_TYPE_MASK 0x007f0000
-#define GDI_HANDLE_BASETYPE_MASK 0x001f0000
-#define GDI_HANDLE_EXTYPE_MASK 0x00600000
-#define GDI_HANDLE_STOCK_MASK 0x00800000
-#define GDI_HANDLE_REUSE_MASK 0xff000000
-#define GDI_HANDLE_UPPER_MASK (GDI_HANDLE_TYPE_MASK|GDI_HANDLE_STOCK_MASK|GDI_HANDLE_REUSE_MASK)
-#define GDI_HANDLE_REUSECNT_SHIFT 24
-#define GDI_HANDLE_BASETYPE_SHIFT 16
-
-#define GDI_ENTRY_STOCK_MASK 0x00000080
-#define GDI_ENTRY_BASETYPE_MASK 0x001f0000
-#define GDI_ENTRY_UPPER_SHIFT 16
-
-/* GDI Entry Flags */
-#define GDI_ENTRY_UNDELETABLE 1 /* Mark Object as nonremovable */
-#define GDI_ENTRY_DELETING 2 /* Used when deleting Font Objects */
-#define GDI_ENTRY_VALIDATE_VIS 4 /* Validating Visible region data */
-#define GDI_ENTRY_ALLOCATE_LAL 0x80 /* Object Allocated with Look aside List */
-
-/*! \defgroup GDI object types
- *
- * GDI object types
- *
- */
-/*@{*/
-#define GDI_OBJECT_TYPE_DC 0x00010000
-#define GDI_OBJECT_TYPE_DD_SURFACE 0x00030000 /* Should be moved away from gdi objects */
-#define GDI_OBJECT_TYPE_REGION 0x00040000
-#define GDI_OBJECT_TYPE_BITMAP 0x00050000
-#define GDI_OBJECT_TYPE_CLIOBJ 0x00060000
-#define GDI_OBJECT_TYPE_PATH 0x00070000
-#define GDI_OBJECT_TYPE_PALETTE 0x00080000
-#define GDI_OBJECT_TYPE_COLORSPACE 0x00090000
-#define GDI_OBJECT_TYPE_FONT 0x000a0000
-
-#define GDI_OBJECT_TYPE_BRUSH 0x00100000
-#define GDI_OBJECT_TYPE_DD_VIDEOPORT 0x00120000 /* Should be moved away from gdi objects */
-#define GDI_OBJECT_TYPE_DD_MOTIONCOMP 0x00140000 /* Should be moved away from gdi objects */
-#define GDI_OBJECT_TYPE_ENUMFONT 0x00160000
-#define GDI_OBJECT_TYPE_DRIVEROBJ 0x001C0000
-
-/* Confrim on XP value is taken from NtGdiCreateDirectDrawObject */
-#define GDI_OBJECT_TYPE_DIRECTDRAW 0x00200000
-
-/* Following object types are derived types from the above base types
- use 0x001f0000 as mask to get the base type */
-#define GDI_OBJECT_TYPE_EMF 0x00210000
-
-#define GDI_OBJECT_TYPE_METAFILE 0x00260000
-#define GDI_OBJECT_TYPE_ENHMETAFILE 0x00460000
-#define GDI_OBJECT_TYPE_PEN 0x00300000
-#define GDI_OBJECT_TYPE_EXTPEN 0x00500000
-#define GDI_OBJECT_TYPE_METADC 0x00660000
-/*#define GDI_OBJECT_TYPE_DD_PALETTE 0x00630000 unused at the moment, other value required */
-/*#define GDI_OBJECT_TYPE_DD_CLIPPER 0x00640000 unused at the moment, other value required */
-
-/* Following object types made up for ROS */
-#define GDI_OBJECT_TYPE_DONTCARE 0x007f0000
-/** Not really an object type. Forces GDI_FreeObj to be silent. */
-#define GDI_OBJECT_TYPE_SILENT 0x80000000
-/*@}*/
-
-/* Handle macros */
-#define GDI_HANDLE_CREATE(i, t) \
- ((HANDLE)(((i) & GDI_HANDLE_INDEX_MASK) | ((t) & GDI_HANDLE_TYPE_MASK)))
-
-#define GDI_HANDLE_GET_INDEX(h) \
- (((ULONG_PTR)(h)) & GDI_HANDLE_INDEX_MASK)
-
-#define GDI_HANDLE_GET_TYPE(h) \
- (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK)
-
-#define GDI_HANDLE_IS_TYPE(h, t) \
- ((t) == (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK))
-
-#define GDI_HANDLE_IS_STOCKOBJ(h) \
- (0 != (((ULONG_PTR)(h)) & GDI_HANDLE_STOCK_MASK))
-
-#define GDI_HANDLE_SET_STOCKOBJ(h) \
- ((h) = (HANDLE)(((ULONG_PTR)(h)) | GDI_HANDLE_STOCK_MASK))
-
-#define GDI_HANDLE_GET_UPPER(h) \
- (((ULONG_PTR)(h)) & GDI_HANDLE_UPPER_MASK)
-
-#define GDI_HANDLE_GET_REUSECNT(h) \
- (((ULONG_PTR)(h)) >> GDI_HANDLE_REUSECNT_SHIFT)
-
-#define GDI_OBJECT_GET_TYPE_INDEX(t) \
- ((t & GDI_HANDLE_BASETYPE_MASK) >> GDI_HANDLE_BASETYPE_SHIFT)
-
-/* Gdi Object Handle Managment Pid lock masking sets. */
-/* Ref: used with DxEngSetDCOwner */
-#define GDI_OBJ_HMGR_PUBLIC 0 /* Public owner, Open access? */
-#define GDI_OBJ_HMGR_POWNED 0x80000002 /* Set to current owner. */
-#define GDI_OBJ_HMGR_NONE 0x80000012 /* No owner, Open access? */
-#define GDI_OBJ_HMGR_RESTRICTED 0x80000022 /* Restricted? */
-
-
-/* DC OBJ Types */
-#define DC_TYPE_DIRECT 0 /* normal device context */
-#define DC_TYPE_MEMORY 1 /* memory device context */
-#define DC_TYPE_INFO 2 /* information context */
-
-/* DC OBJ Flags */
-#define DC_FLAG_DISPLAY 0x0001
-#define DC_FLAG_DIRECT 0x0002
-#define DC_FLAG_CANCELLED 0x0004
-#define DC_FLAG_PERMANENT 0x0008
-#define DC_FLAG_DIRTY_RAO 0x0010
-#define DC_FLAG_ACCUM_WMGR 0x0020
-#define DC_FLAG_ACCUM_APP 0x0040
-#define DC_FLAG_RESET 0x0080
-#define DC_FLAG_SYNCHRONIZEACCESS 0x0100
-#define DC_FLAG_EPSPRINTINGESCAPE 0x0200
-#define DC_FLAG_TEMPINFODC 0x0400
-#define DC_FLAG_FULLSCREEN 0x0800
-#define DC_FLAG_IN_CLONEPDEV 0x1000
-#define DC_FLAG_REDIRECTION 0x2000
-#define DC_FLAG_SHAREACCESS 0x4000
-
-/* 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
-#define DC_ICM_NOT_CALIBRATED 0x00020000
-#define DC_ICM_BRUSH_DIRTY 0x00040000
-#define DC_ICM_PEN_DIRTY 0x00080000
-#define DC_ICM_NOT_SET 0x00100000
-#define DC_MODE_DIRTY 0x00200000
-#define DC_FONTTEXT_DIRTY 0x00400000
-
-/* DC_ATTR LCD Flags */
-#define LDC_LDC 0x00000001 /* (init) local DC other than a normal DC */
-#define LDC_EMFLDC 0x00000002 /* Enhance Meta File local DC */
-#define LDC_SAPCALLBACK 0x00000020
-#define LDC_INIT_DOCUMENT 0x00000040
-#define LDC_INIT_PAGE 0x00000080
-#define LDC_STARTPAGE 0x00000100
-#define LDC_PLAY_MFDC 0x00000800
-#define LDC_CLOCKWISE 0x00002000
-#define LDC_KILL_DOCUMENT 0x00010000
-#define LDC_META_PRINT 0x00020000
-#define LDC_INFODC 0x01000000 /* If CreateIC was passed. */
-#define LDC_DEVCAPS 0x02000000
-#define LDC_ATENDPAGE 0x10000000
-
-/* DC_ATTR Xform Flags */
-#define METAFILE_TO_WORLD_IDENTITY 0x00000001
-#define WORLD_TO_PAGE_IDENTITY 0x00000002
-#define DEVICE_TO_PAGE_INVALID 0x00000008
-#define DEVICE_TO_WORLD_INVALID 0x00000010
-#define WORLD_TRANSFORM_SET 0x00000020
-#define POSITIVE_Y_IS_UP 0x00000040
-#define INVALIDATE_ATTRIBUTES 0x00000080
-#define PTOD_EFM11_NEGATIVE 0x00000100
-#define PTOD_EFM22_NEGATIVE 0x00000200
-#define ISO_OR_ANISO_MAP_MODE 0x00000400
-#define PAGE_TO_DEVICE_IDENTITY 0x00000800
-#define PAGE_TO_DEVICE_SCALE_IDENTITY 0x00001000
-#define PAGE_XLATE_CHANGED 0x00002000
-#define PAGE_EXTENTS_CHANGED 0x00004000
-#define WORLD_XFORM_CHANGED 0x00008000
-
-/* BRUSH/RGN_ATTR Flags */
-#define ATTR_CACHED 0x00000001
-#define ATTR_TO_BE_DELETED 0x00000002
-#define ATTR_NEW_COLOR 0x00000004
-#define ATTR_CANT_SELECT 0x00000008
-#define ATTR_RGN_VALID 0x00000010
-#define ATTR_RGN_DIRTY 0x00000020
-
-
-/* TYPES *********************************************************************/
-
-typedef struct _GDI_TABLE_ENTRY
-{
- PVOID KernelData; /* Points to the kernel mode structure */
- DWORD ProcessId; /* process id that created the object, 0 for stock objects */
- union{ /* temp union structure. */
- LONG Type; /* the first 16 bit is the object type including the stock obj flag, the last 16 bits is just the object type */
- struct{
- USHORT FullUnique; /* unique */
- UCHAR ObjectType; /* objt */
- UCHAR Flags; /* Flags */
- };};
- PVOID UserData; /* pUser Points to the user mode structure, usually NULL though */
-} GDI_TABLE_ENTRY, *PGDI_TABLE_ENTRY;
-
-typedef struct _ENTRY
-{
- union _EINFO
- {
- struct _BASEOBJECT *pobj;
- HGDIOBJ hFree;
- } einfo;
-
- union _OBJECTOWNER
- {
- struct _OBJECTOWNER_S
- {
- unsigned Lock:1;
- unsigned Pid_Shifted:31;
- } Share;
- ULONG ulObj;
- } ObjectOwner;
-
- USHORT FullUnique;
- UCHAR Objt;
- UCHAR Flags;
- PVOID pUser;
-} ENTRY, *PENTRY;
-
-/*
- * User space only structure!
- */
-typedef struct __GDI_SHARED_HANDLE_TABLE /* Must match win32k/include/gdiobj.h */
-{
- GDI_TABLE_ENTRY Entries[GDI_HANDLE_COUNT]; /* Handle table. */
- DEVCAPS DevCaps; /* Shared device capabilities. */
- FLONG flDeviceUniq; /* Device settings uniqueness. */
- PVOID pvLangPack; /* Lanuage Pack. */
- CFONT cfPublic[GDI_CFONT_MAX]; /* Public Fonts. */
- DWORD dwCFCount;
-} GDI_SHARED_HANDLE_TABLE, *PGDI_SHARED_HANDLE_TABLE;
-
-typedef struct _RGN_ATTR
-{
- ULONG AttrFlags;
- ULONG iComplexity; /* Clipping region's complexity. NULL, SIMPLE & COMPLEXREGION */
- RECTL Rect;
-} RGN_ATTR,*PRGN_ATTR;
-
-/* Local DC structure (_DC_ATTR) PVOID pvLDC; */
-typedef struct _LDC
-{
- HDC hDC;
- ULONG Flags;
- INT iType;
- PVOID pvEmfDC; /* Pointer to ENHMETAFILE structure */
- LPWSTR pwszPort;
- ABORTPROC pAbortProc; /* AbortProc for Printing */
- DWORD CallBackTick;
- HANDLE hPrinter; /* Local or Remote Printer driver */
- PVOID pUMPDev;
- PUMDHPDEV pUMdhpdev;
- DEVCAPS DevCaps;
- HBRUSH BrushColor;
- HPEN PenColor;
-} LDC, *PLDC;
-
-typedef struct _DC_ATTR
-{
- PVOID pvLDC;
- ULONG ulDirty_;
- HANDLE hbrush;
- HANDLE hpen;
- COLORREF crBackgroundClr;
- ULONG ulBackgroundClr;
- COLORREF crForegroundClr;
- ULONG ulForegroundClr;
- COLORREF crBrushClr;
- ULONG ulBrushClr;
- COLORREF crPenClr;
- ULONG ulPenClr;
- 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;
- FLONG flIcmFlags;
- INT IcmBrushColor;
- INT IcmPenColor;
- PVOID pvLIcm;
- FLONG flTextAlign;
- LONG lTextAlign;
- LONG lTextExtra;
- LONG lRelAbs;
- LONG lBreakExtra;
- LONG cBreak;
- HANDLE hlfntNew;
- MATRIX mxWorldToDevice;
- MATRIX mxDeviceToWorld;
- MATRIX mxWorldToPage;
- FLOATOBJ efM11PtoD;
- FLOATOBJ efM22PtoD;
- FLOATOBJ efDxPtoD;
- FLOATOBJ efDyPtoD;
- INT iMapMode;
- DWORD dwLayout;
- LONG lWindowOrgx;
- POINTL ptlWindowOrg;
- SIZEL szlWindowExt;
- POINTL ptlViewportOrg;
- SIZEL szlViewportExt;
- FLONG flXform;
- SIZEL szlVirtualDevicePixel;
- SIZEL szlVirtualDeviceMm;
- SIZEL szlVirtualDeviceSize;
- POINTL ptlBrushOrigin;
- RGN_ATTR VisRectRegion;
-} DC_ATTR, *PDC_ATTR;
-
-typedef struct _BRUSH_ATTR /* Used with pen too. */
-{
- FLONG AttrFlags;
- COLORREF lbColor;
-} BRUSH_ATTR, *PBRUSH_ATTR;
-
-typedef struct _FONT_ATTR
-{
- BOOL bSlowWidths;
- PCFONT pCharWidthData;
-} FONT_ATTR, *PFONT_ATTR;
-
-
-#endif