Author: jimtabor
Date: Sun May 11 00:32:50 2008
New Revision: 33424
URL:
http://svn.reactos.org/svn/reactos?rev=33424&view=rev
Log:
Fix brush attribute structure and add flags. Add gdi handle cache structures.
Modified:
trunk/reactos/dll/win32/gdi32/main/dllmain.c
trunk/reactos/include/reactos/win32k/ntgdihdl.h
trunk/reactos/include/reactos/win32k/ntgdityp.h
Modified: trunk/reactos/dll/win32/gdi32/main/dllmain.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/main/dllma…
==============================================================================
--- trunk/reactos/dll/win32/gdi32/main/dllmain.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/gdi32/main/dllmain.c [iso-8859-1] Sun May 11 00:32:50 2008
@@ -12,6 +12,7 @@
extern HGDIOBJ stock_objects[];
BOOL SetStockObjects = FALSE;
PDEVCAPS GdiDevCaps = NULL;
+PGDIHANDLECACHE GdiHandleCache = NULL;
/*
* GDI32.DLL doesn't have an entry point. The initialization is done by a call
@@ -41,6 +42,7 @@
GdiDevCaps = &GdiSharedHandleTable->DevCaps;
CurrentProcessId = NtCurrentTeb()->Cid.UniqueProcess;
GDI_BatchLimit = (DWORD)
NtCurrentTeb()->ProcessEnvironmentBlock->GdiDCAttributeList;
+ GdiHandleCache =
(PGDIHANDLECACHE)NtCurrentTeb()->ProcessEnvironmentBlock->GdiHandleBuffer;
}
Modified: trunk/reactos/include/reactos/win32k/ntgdihdl.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntg…
==============================================================================
--- trunk/reactos/include/reactos/win32k/ntgdihdl.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/win32k/ntgdihdl.h [iso-8859-1] Sun May 11 00:32:50 2008
@@ -186,8 +186,13 @@
#define PAGE_EXTENTS_CHANGED 0x00004000
#define WORLD_XFORM_CHANGED 0x00008000
-/* RGN_ATTR Flags */
-#define DIRTY_RGNATTR 0x00000020
+/* 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 *********************************************************************/
@@ -302,10 +307,10 @@
RGN_ATTR VisRectRegion;
} DC_ATTR, *PDC_ATTR;
-typedef struct _BRUSH_ATTR
-{
- LOGBRUSH logbrush;
- DWORD dwUnused[3];
+typedef struct _BRUSH_ATTR // Used with pen too.
+{
+ FLONG AttrFlags;
+ COLORREF lbColor;
} BRUSH_ATTR, *PBRUSH_ATTR;
typedef struct _FONT_ATTR
Modified: trunk/reactos/include/reactos/win32k/ntgdityp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntg…
==============================================================================
--- trunk/reactos/include/reactos/win32k/ntgdityp.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/win32k/ntgdityp.h [iso-8859-1] Sun May 11 00:32:50 2008
@@ -159,8 +159,8 @@
typedef DWORD FULLSCREENCONTROL;
typedef DWORD LFTYPE;
-/* Public LAST_STOCK = 19, plus 2 more internal entries */
-#define NB_STOCK_OBJECTS 22
+/* Public LAST_STOCK = 19, plus 2 more internal entries */
+#define NB_STOCK_OBJECTS 22
/* extra stock object: default 1x1 bitmap for memory DCs */
#define DEFAULT_BITMAP (21)
@@ -269,6 +269,28 @@
ULONG ulShadeBlend;
ULONG ulColorMgmtCaps;
} DEVCAPS, *PDEVCAPS;
+
+/* Gdi Handle Cache Types and Structures */
+#define GDI_CACHED_HADNLE_TYPES 4
+#define CACHE_BRUSH_ENTRIES 10
+#define CACHE_PEN_ENTRIES 8
+#define CACHE_REGION_ENTRIES 8
+#define CACHE_LFONT_ENTRIES 1
+
+typedef enum _HANDLECACHETYPE
+{
+ hctBrushHandle,
+ hctPenHandle,
+ hctRegionHandle,
+ hctLFontHandle
+} HANDLECACHETYPE,*PHANDLECACHETYPE;
+
+typedef struct _GDIHANDLECACHE
+{
+ ULONG ulLock;
+ ULONG ulNumHandles[GDI_CACHED_HADNLE_TYPES];
+ HANDLE
Handle[CACHE_BRUSH_ENTRIES+CACHE_PEN_ENTRIES+CACHE_REGION_ENTRIES+CACHE_LFONT_ENTRIES];
+} GDIHANDLECACHE, *PGDIHANDLECACHE;
/* Font Structures */
typedef struct _TMDIFF