ReactOS  0.4.14-dev-845-g8381e29
gdipluscolor.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008 Google (Lei Zhang)
3  * 2015 Benedikt Freisen
4  * 2019 Katayama Hirofumi MZ
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #ifndef _GDIPLUSCOLOR_H
22 #define _GDIPLUSCOLOR_H
23 
24 typedef enum ColorChannelFlags
25 {
32 
33 #ifdef __cplusplus
34 
35 class Color
36 {
37  public:
38  Color() : Argb(0xff000000)
39  {
40  }
41 
42  Color(ARGB argb) : Argb(argb)
43  {
44  }
45 
46  Color(BYTE r, BYTE g, BYTE b) : Argb(MakeARGB(0xFF, r, g, b))
47  {
48  }
49 
50  Color(BYTE a, BYTE r, BYTE g, BYTE b) : Argb(MakeARGB(a, r, g, b))
51  {
52  }
53 
54  BYTE
55  GetA() const
56  {
57  return (BYTE)(Argb >> 24);
58  }
59 
60  BYTE
61  GetAlpha() const
62  {
63  return (BYTE)(Argb >> 24);
64  }
65 
66  BYTE
67  GetB() const
68  {
69  return (BYTE)Argb;
70  }
71 
72  BYTE
73  GetBlue() const
74  {
75  return (BYTE)Argb;
76  }
77 
78  BYTE
79  GetG() const
80  {
81  return (BYTE)(Argb >> 8);
82  }
83 
84  BYTE
85  GetGreen() const
86  {
87  return (BYTE)(Argb >> 8);
88  }
89 
90  BYTE
91  GetR() const
92  {
93  return (BYTE)(Argb >> 16);
94  }
95 
96  BYTE
97  GetRed() const
98  {
99  return (BYTE)(Argb >> 16);
100  }
101 
102  ARGB
103  GetValue() const
104  {
105  return Argb;
106  }
107 
108  static ARGB
109  MakeARGB(BYTE a, BYTE r, BYTE g, BYTE b)
110  {
111  ARGB a0 = a, r0 = r, g0 = g, b0 = b;
112  return (a0 << AlphaShift) | (r0 << RedShift) | (g0 << GreenShift) | (b0 << BlueShift);
113  }
114 
115  VOID
116  SetFromCOLORREF(COLORREF rgb)
117  {
118  Argb = MakeARGB(0xFF, GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
119  }
120 
121  VOID
122  SetValue(ARGB argb)
123  {
124  Argb = argb;
125  }
126 
127  COLORREF
128  ToCOLORREF() const
129  {
130  return RGB(GetRed(), GetGreen(), GetBlue());
131  }
132 
133  enum
134  {
135  AlphaShift = 24,
136  RedShift = 16,
137  GreenShift = 8,
138  BlueShift = 0
139  };
140 
141  enum
142  {
143  AlphaMask = 0xFF000000,
144  RedMask = 0x00FF0000,
145  GreenMask = 0x0000FF00,
146  BlueMask = 0x000000FF
147  };
148 
149  enum
150  {
151  AliceBlue = 0xFFF0F8FF,
152  AntiqueWhite = 0xFFFAEBD7,
153  Aqua = 0xFF00FFFF,
154  Aquamarine = 0xFF7FFFD4,
155  Azure = 0xFFF0FFFF,
156  Beige = 0xFFF5F5DC,
157  Bisque = 0xFFFFE4C4,
158  Black = 0xFF000000,
159  BlanchedAlmond = 0xFFFFEBCD,
160  Blue = 0xFF0000FF,
161  BlueViolet = 0xFF8A2BE2,
162  Brown = 0xFFA52A2A,
163  BurlyWood = 0xFFDEB887,
164  CadetBlue = 0xFF5F9EA0,
165  Chartreuse = 0xFF7FFF00,
166  Chocolate = 0xFFD2691E,
167  Coral = 0xFFFF7F50,
168  CornflowerBlue = 0xFF6495ED,
169  Cornsilk = 0xFFFFF8DC,
170  Crimson = 0xFFDC143C,
171  Cyan = 0xFF00FFFF,
172  DarkBlue = 0xFF00008B,
173  DarkCyan = 0xFF008B8B,
174  DarkGoldenrod = 0xFFB8860B,
175  DarkGray = 0xFFA9A9A9,
176  DarkGreen = 0xFF006400,
177  DarkKhaki = 0xFFBDB76B,
178  DarkMagenta = 0xFF8B008B,
179  DarkOliveGreen = 0xFF556B2F,
180  DarkOrange = 0xFFFF8C00,
181  DarkOrchid = 0xFF9932CC,
182  DarkRed = 0xFF8B0000,
183  DarkSalmon = 0xFFE9967A,
184  DarkSeaGreen = 0xFF8FBC8F,
185  DarkSlateBlue = 0xFF483D8B,
186  DarkSlateGray = 0xFF2F4F4F,
187  DarkTurquoise = 0xFF00CED1,
188  DarkViolet = 0xFF9400D3,
189  DeepPink = 0xFFFF1493,
190  DeepSkyBlue = 0xFF00BFFF,
191  DimGray = 0xFF696969,
192  DodgerBlue = 0xFF1E90FF,
193  Firebrick = 0xFFB22222,
194  FloralWhite = 0xFFFFFAF0,
195  ForestGreen = 0xFF228B22,
196  Fuchsia = 0xFFFF00FF,
197  Gainsboro = 0xFFDCDCDC,
198  GhostWhite = 0xFFF8F8FF,
199  Gold = 0xFFFFD700,
200  Goldenrod = 0xFFDAA520,
201  Gray = 0xFF808080,
202  Green = 0xFF008000,
203  GreenYellow = 0xFFADFF2F,
204  Honeydew = 0xFFF0FFF0,
205  HotPink = 0xFFFF69B4,
206  IndianRed = 0xFFCD5C5C,
207  Indigo = 0xFF4B0082,
208  Ivory = 0xFFFFFFF0,
209  Khaki = 0xFFF0E68C,
210  Lavender = 0xFFE6E6FA,
211  LavenderBlush = 0xFFFFF0F5,
212  LawnGreen = 0xFF7CFC00,
213  LemonChiffon = 0xFFFFFACD,
214  LightBlue = 0xFFADD8E6,
215  LightCoral = 0xFFF08080,
216  LightCyan = 0xFFE0FFFF,
217  LightGoldenrodYellow = 0xFFFAFAD2,
218  LightGray = 0xFFD3D3D3,
219  LightGreen = 0xFF90EE90,
220  LightPink = 0xFFFFB6C1,
221  LightSalmon = 0xFFFFA07A,
222  LightSeaGreen = 0xFF20B2AA,
223  LightSkyBlue = 0xFF87CEFA,
224  LightSlateGray = 0xFF778899,
225  LightSteelBlue = 0xFFB0C4DE,
226  LightYellow = 0xFFFFFFE0,
227  Lime = 0xFF00FF00,
228  LimeGreen = 0xFF32CD32,
229  Linen = 0xFFFAF0E6,
230  Magenta = 0xFFFF00FF,
231  Maroon = 0xFF800000,
232  MediumAquamarine = 0xFF66CDAA,
233  MediumBlue = 0xFF0000CD,
234  MediumOrchid = 0xFFBA55D3,
235  MediumPurple = 0xFF9370DB,
236  MediumSeaGreen = 0xFF3CB371,
237  MediumSlateBlue = 0xFF7B68EE,
238  MediumSpringGreen = 0xFF00FA9A,
239  MediumTurquoise = 0xFF48D1CC,
240  MediumVioletRed = 0xFFC71585,
241  MidnightBlue = 0xFF191970,
242  MintCream = 0xFFF5FFFA,
243  MistyRose = 0xFFFFE4E1,
244  Moccasin = 0xFFFFE4B5,
245  NavajoWhite = 0xFFFFDEAD,
246  Navy = 0xFF000080,
247  OldLace = 0xFFFDF5E6,
248  Olive = 0xFF808000,
249  OliveDrab = 0xFF6B8E23,
250  Orange = 0xFFFFA500,
251  OrangeRed = 0xFFFF4500,
252  Orchid = 0xFFDA70D6,
253  PaleGoldenrod = 0xFFEEE8AA,
254  PaleGreen = 0xFF98FB98,
255  PaleTurquoise = 0xFFAFEEEE,
256  PaleVioletRed = 0xFFDB7093,
257  PapayaWhip = 0xFFFFEFD5,
258  PeachPuff = 0xFFFFDAB9,
259  Peru = 0xFFCD853F,
260  Pink = 0xFFFFC0CB,
261  Plum = 0xFFDDA0DD,
262  PowderBlue = 0xFFB0E0E6,
263  Purple = 0xFF800080,
264  Red = 0xFFFF0000,
265  RosyBrown = 0xFFBC8F8F,
266  RoyalBlue = 0xFF4169E1,
267  SaddleBrown = 0xFF8B4513,
268  Salmon = 0xFFFA8072,
269  SandyBrown = 0xFFF4A460,
270  SeaGreen = 0xFF2E8B57,
271  SeaShell = 0xFFFFF5EE,
272  Sienna = 0xFFA0522D,
273  Silver = 0xFFC0C0C0,
274  SkyBlue = 0xFF87CEEB,
275  SlateBlue = 0xFF6A5ACD,
276  SlateGray = 0xFF708090,
277  Snow = 0xFFFFFAFA,
278  SpringGreen = 0xFF00FF7F,
279  SteelBlue = 0xFF4682B4,
280  Tan = 0xFFD2B48C,
281  Teal = 0xFF008080,
282  Thistle = 0xFFD8BFD8,
283  Tomato = 0xFFFF6347,
284  Transparent = 0x00FFFFFF,
285  Turquoise = 0xFF40E0D0,
286  Violet = 0xFFEE82EE,
287  Wheat = 0xFFF5DEB3,
288  White = 0xFFFFFFFF,
289  WhiteSmoke = 0xFFF5F5F5,
290  Yellow = 0xFFFFFF00,
291  YellowGreen = 0xFF9ACD32
292  };
293 
294  protected:
295  ARGB Argb;
296 };
297 
298 #else /* end of c++ typedefs */
299 
300 typedef struct Color
301 {
303 } Color;
304 
305 #endif /* end of c typedefs */
306 
307 #endif /* _GDIPLUSCOLOR_H */
Definition: bl.h:203
Definition: bl.h:202
Definition: bl.h:204
static LONG WINAPI SetValue(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType, const BYTE *pData, DWORD cbData, HANDLE hSpooler)
Definition: localmon.c:185
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define GetRValue(rgb)
Definition: wingdi.h:2934
Definition: bl.h:201
Definition: bl.h:199
ColorChannelFlags
Definition: gdipluscolor.h:24
struct Color Color
Definition: bl.h:206
Definition: bl.h:213
#define GetGValue(rgb)
Definition: wingdi.h:2935
ARGB Argb
Definition: gdipluscolor.h:302
#define a
Definition: ke_i.h:78
#define b
Definition: ke_i.h:79
Definition: bl.h:198
GLboolean GLboolean g
Definition: glext.h:6204
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
DWORD COLORREF
Definition: windef.h:300
#define RGB(r, g, b)
Definition: wingdi.h:2939
Definition: bl.h:212
Definition: bl.h:200
unsigned char BYTE
Definition: mem.h:68
_In_ ULONG _In_ ULONG rgb
Definition: winddi.h:3520
#define GetBValue(rgb)
Definition: wingdi.h:2936
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
DWORD ARGB