+++ /dev/null
-/*\r
- * COPYRIGHT: See COPYING in the top level directory\r
- * PROJECT: ReactOS Win32 Graphical Subsystem (WIN32K)\r
- * FILE: include/win32k/ntgdihal.h\r
- * PURPOSE: Win32 Shared GDI Handle/Object Types\r
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)\r
- */\r
-\r
-/* INCLUDES ******************************************************************/\r
-\r
-#ifndef _NTGDIHDL_\r
-#define _NTGDIHDL_\r
-\r
-/* DEFINES *******************************************************************/\r
-\r
-/* Base address where the handle table is mapped to */\r
-#define GDI_HANDLE_TABLE_BASE_ADDRESS (0x400000)\r
-\r
-/* GDI handle table can hold 0x4000 handles */\r
-#define GDI_HANDLE_COUNT 0x4000\r
-#define GDI_GLOBAL_PROCESS (0x0)\r
-\r
-/* Handle Masks and shifts */\r
-#define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1)\r
-#define GDI_HANDLE_TYPE_MASK 0x007f0000\r
-#define GDI_HANDLE_STOCK_MASK 0x00800000\r
-#define GDI_HANDLE_REUSE_MASK 0xff000000\r
-#define GDI_HANDLE_REUSECNT_SHIFT 24\r
-\r
-/*! \defgroup GDI object types\r
- *\r
- * GDI object types\r
- *\r
- */\r
-/*@{*/\r
-#define GDI_OBJECT_TYPE_DC 0x00010000\r
-#define GDI_OBJECT_TYPE_REGION 0x00040000\r
-#define GDI_OBJECT_TYPE_BITMAP 0x00050000\r
-#define GDI_OBJECT_TYPE_PALETTE 0x00080000\r
-#define GDI_OBJECT_TYPE_FONT 0x000a0000\r
-#define GDI_OBJECT_TYPE_BRUSH 0x00100000\r
-#define GDI_OBJECT_TYPE_EMF 0x00210000\r
-#define GDI_OBJECT_TYPE_PEN 0x00300000\r
-#define GDI_OBJECT_TYPE_EXTPEN 0x00500000\r
-/* Following object types made up for ROS */\r
-#define GDI_OBJECT_TYPE_METADC 0x00710000\r
-#define GDI_OBJECT_TYPE_METAFILE 0x00720000\r
-#define GDI_OBJECT_TYPE_ENHMETAFILE 0x00730000\r
-#define GDI_OBJECT_TYPE_ENHMETADC 0x00740000\r
-#define GDI_OBJECT_TYPE_MEMDC 0x00750000\r
-#define GDI_OBJECT_TYPE_DCE 0x00770000\r
-#define GDI_OBJECT_TYPE_DONTCARE 0x007f0000\r
-/** Not really an object type. Forces GDI_FreeObj to be silent. */\r
-#define GDI_OBJECT_TYPE_SILENT 0x80000000\r
-/*@}*/\r
-\r
-/* Handle macros */\r
-#define GDI_HANDLE_CREATE(i, t) \\r
- ((HANDLE)(((i) & GDI_HANDLE_INDEX_MASK) | ((t) & GDI_HANDLE_TYPE_MASK)))\r
-\r
-#define GDI_HANDLE_GET_INDEX(h) \\r
- (((ULONG_PTR)(h)) & GDI_HANDLE_INDEX_MASK)\r
-\r
-#define GDI_HANDLE_GET_TYPE(h) \\r
- (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK)\r
-\r
-#define GDI_HANDLE_IS_TYPE(h, t) \\r
- ((t) == (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK))\r
-\r
-#define GDI_HANDLE_IS_STOCKOBJ(h) \\r
- (0 != (((ULONG_PTR)(h)) & GDI_HANDLE_STOCK_MASK))\r
-\r
-#define GDI_HANDLE_SET_STOCKOBJ(h) \\r
- ((h) = (HANDLE)(((ULONG_PTR)(h)) | GDI_HANDLE_STOCK_MASK))\r
-\r
-/* TYPES *********************************************************************/\r
-\r
-typedef struct _GDI_TABLE_ENTRY\r
-{\r
- PVOID KernelData; /* Points to the kernel mode structure */\r
- HANDLE ProcessId; /* process id that created the object, 0 for stock objects */\r
- LONG Type; /* the first 16 bit is the object type including the stock obj flag, the last 16 bits is just the object type */\r
- PVOID UserData; /* Points to the user mode structure, usually NULL though */\r
-} GDI_TABLE_ENTRY, *PGDI_TABLE_ENTRY;\r
-\r
-#endif\r