update for HEAD-2003091401
[reactos.git] / subsys / win32k / eng / brush.h
1 /*
2  *  ReactOS kernel
3  *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19 /* $Id$ */
20 typedef struct  _BRUSHINST
21 {
22   // We need to removed ajC0-3 when color pattern code is complete!!!
23   //
24   BYTE    ajC0[8];  // Color bits for plane 0
25   BYTE    ajC1[8];  // Color bits for plane 1
26   BYTE    ajC2[8];  // Color bits for plane 2
27   BYTE    ajC3[8];  // Color bits for plane 3
28
29   BYTE    ajPattern[32];       // Color bits for the mask
30   USHORT  usStyle;  // Brush style
31   BYTE    fjAccel;  // Accelerator flags
32   BYTE    jFgColor; // Current foreground color
33   BYTE    jBkColor; // Current background color
34   BYTE    RealWidth;//
35   BYTE    YShiftValue;       //
36   BYTE    jOldBrushRealized; //
37   DWORD   Width;    // Width of brush
38   DWORD   Height;
39   BYTE    *pPattern;     //Pointer to realized mono pattern
40 } BRUSHINST;
41
42 #define BRI_SOLID           0
43 #define BRI_HOLLOW          1
44 #define BRI_HATCHED         2
45 #define BRI_PATTERN         3
46 #define BRI_MONO_PATTERN    4
47 #define BRI_COLOR_PATTERN   5
48
49 //      Definitions for the pcol_C3 byte of the physical color
50 //
51 //      Some of these definitions have limitations as to when they
52 //      are valid.  They are as follows:
53 //
54 //      C0_BIT          color device, phys color, solid brushes if SOLID_COLOR
55 //      C1_BIT          color device, phys color, solid brushes if SOLID_COLOR
56 //      C2_BIT          color device, phys color, solid brushes if SOLID_COLOR
57 //      C3_BIT          color device, phys color, solid brushes if SOLID_COLOR
58 //      MONO_BIT        mono  device, phys color
59 //      ONES_OR_ZEROS   color device, phys color, solid brushes if SOLID_COLOR
60 //      GREY_SCALE      color device, dithered solid and hatched brushes
61 //      SOLID_BRUSH     color device, solid brush qualifier
62 //
63 //      There may be brushes where the accelerators could have been set,
64 //      but wasn't.  That's life.
65
66 #define C0_BIT          0x01            // C0 color
67 #define C1_BIT          0x02            // C1 color
68 #define C2_BIT          0x04            // C2 color
69 #define C3_BIT          0x08            // C3 color
70 #define COLOR_BITS      0x0f            // All the color bits
71 #define MONO_BIT        0x10            // Monochrome bit
72 #define ONES_OR_ZEROS   0x20            // Color is really all 1's or all 0's
73 #define GREY_SCALE      0x40            // Indicates a real grey scale brush
74 #define SOLID_BRUSH     0x80            // Indicates a solid color brush
75
76 #define PTRI_INVERT     0x0001
77 #define PTRI_ANIMATE    0x0002