- God is a second-hand imitation of Gé. Fix for bug 1213.
[reactos.git] / reactos / subsys / win32k / include / brush.h
1 #ifndef __WIN32K_BRUSH_H
2 #define __WIN32K_BRUSH_H
3
4 #include "gdiobj.h"
5
6 /* Internal interface */
7
8 #define NB_HATCH_STYLES 6
9
10 /*
11 * The layout of this structure is taken from "Windows Graphics Programming"
12 * book written by Feng Yuan.
13 *
14 * DON'T MODIFY THIS STRUCTURE UNLESS REALLY NEEDED AND EVEN THEN ASK ON
15 * A MAILING LIST FIRST.
16 */
17
18 typedef struct
19 {
20 ULONG AttrFlags;
21 COLORREF lbColor;
22 } BRUSHATTR, *PBRUSHATTR;
23
24 typedef struct
25 {
26 ULONG ulStyle;
27 HBITMAP hbmPattern;
28 HANDLE hbmClient;
29 ULONG flAttrs;
30
31 ULONG ulBrushUnique;
32 BRUSHATTR *pBrushAttr;
33 BRUSHATTR BrushAttr;
34 POINT ptOrigin;
35 ULONG bCacheGrabbed;
36 COLORREF crBack;
37 COLORREF crFore;
38 ULONG ulPalTime;
39 ULONG ulSurfTime;
40 PVOID ulRealization;
41 ULONG Unknown4C[3];
42 POINT ptPenWidth;
43 ULONG ulPenStyle;
44 DWORD *pStyle;
45 ULONG dwStyleCount;
46 ULONG Unknown6C;
47 } GDIBRUSHOBJ, *PGDIBRUSHOBJ;
48
49 typedef struct
50 {
51 BRUSHOBJ BrushObject;
52 PGDIBRUSHOBJ GdiBrushObject;
53 XLATEOBJ *XlateObject;
54 } GDIBRUSHINST, *PGDIBRUSHINST;
55
56 /* GDI Brush Attributes */
57
58 #define GDIBRUSH_NEED_BK_CLR 0x0002 /* Background color is needed */
59 #define GDIBRUSH_DITHER_OK 0x0004 /* Allow color dithering */
60 #define GDIBRUSH_IS_SOLID 0x0010 /* Solid brush */
61 #define GDIBRUSH_IS_HATCH 0x0020 /* Hatch brush */
62 #define GDIBRUSH_IS_BITMAP 0x0040 /* DDB pattern brush */
63 #define GDIBRUSH_IS_DIB 0x0080 /* DIB pattern brush */
64 #define GDIBRUSH_IS_NULL 0x0100 /* Null/hollow brush */
65 #define GDIBRUSH_IS_GLOBAL 0x0200 /* Stock objects */
66 #define GDIBRUSH_IS_PEN 0x0400 /* Pen */
67 #define GDIBRUSH_IS_OLDSTYLEPEN 0x0800 /* Geometric pen */
68 #define GDIBRUSH_IS_MASKING 0x8000 /* Pattern bitmap is used as transparent mask (?) */
69 #define GDIBRUSH_CACHED_IS_SOLID 0x80000000
70
71 #define BRUSHOBJ_AllocBrush() ((HBRUSH) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BRUSH))
72 #define BRUSHOBJ_FreeBrush(hBrush) GDIOBJ_FreeObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH)
73 #define BRUSHOBJ_LockBrush(hBrush) ((PGDIBRUSHOBJ)GDIOBJ_LockObj((HGDIOBJ)hBrush, GDI_OBJECT_TYPE_BRUSH))
74 #define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr(pBrush)
75 BOOL INTERNAL_CALL BRUSH_Cleanup(PVOID ObjectBody);
76
77 #endif