| 1 | /* | 
|---|
| 2 | * gdipluscolor.h | 
|---|
| 3 | * | 
|---|
| 4 | * GDI+ color | 
|---|
| 5 | * | 
|---|
| 6 | * This file is part of the w32api package. | 
|---|
| 7 | * | 
|---|
| 8 | * Contributors: | 
|---|
| 9 | *   Created by Markus Koenig <markus@stber-koenig.de> | 
|---|
| 10 | * | 
|---|
| 11 | * THIS SOFTWARE IS NOT COPYRIGHTED | 
|---|
| 12 | * | 
|---|
| 13 | * This source code is offered for use in the public domain. You may | 
|---|
| 14 | * use, modify or distribute it freely. | 
|---|
| 15 | * | 
|---|
| 16 | * This code is distributed in the hope that it will be useful but | 
|---|
| 17 | * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY | 
|---|
| 18 | * DISCLAIMED. This includes but is not limited to warranties of | 
|---|
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
|---|
| 20 | * | 
|---|
| 21 | */ | 
|---|
| 22 |  | 
|---|
| 23 | #ifndef __GDIPLUS_COLOR_H | 
|---|
| 24 | #define __GDIPLUS_COLOR_H | 
|---|
| 25 | #if __GNUC__ >=3 | 
|---|
| 26 | #pragma GCC system_header | 
|---|
| 27 | #endif | 
|---|
| 28 |  | 
|---|
| 29 | typedef enum ColorChannelFlags { | 
|---|
| 30 | ColorChannelFlagsC = 0, | 
|---|
| 31 | ColorChannelFlagsM = 1, | 
|---|
| 32 | ColorChannelFlagsY = 2, | 
|---|
| 33 | ColorChannelFlagsK = 3, | 
|---|
| 34 | ColorChannelFlagsLast = 4 | 
|---|
| 35 | } ColorChannelFlags; | 
|---|
| 36 |  | 
|---|
| 37 | typedef struct Color | 
|---|
| 38 | { | 
|---|
| 39 | #ifdef __cplusplus | 
|---|
| 40 | private: | 
|---|
| 41 | #endif | 
|---|
| 42 | ARGB Value; | 
|---|
| 43 |  | 
|---|
| 44 | #ifdef __cplusplus | 
|---|
| 45 | public: | 
|---|
| 46 | friend class Bitmap; | 
|---|
| 47 | friend class Graphics; | 
|---|
| 48 | friend class HatchBrush; | 
|---|
| 49 | friend class PathGradientBrush; | 
|---|
| 50 | friend class Pen; | 
|---|
| 51 | friend class SolidBrush; | 
|---|
| 52 |  | 
|---|
| 53 | static ARGB MakeARGB(BYTE a, BYTE r, BYTE g, BYTE b) | 
|---|
| 54 | { | 
|---|
| 55 | return (ARGB) ((((DWORD) a) << 24) | (((DWORD) r) << 16) | 
|---|
| 56 | | (((DWORD) g) << 8) | ((DWORD) b)); | 
|---|
| 57 | } | 
|---|
| 58 |  | 
|---|
| 59 | static const ARGB AlphaMask            = 0xFF000000UL; | 
|---|
| 60 |  | 
|---|
| 61 | static const ARGB AliceBlue            = 0xFFF0F8FFUL; | 
|---|
| 62 | static const ARGB AntiqueWhite         = 0xFFFAEBD7UL; | 
|---|
| 63 | static const ARGB Aqua                 = 0xFF00FFFFUL; | 
|---|
| 64 | static const ARGB Aquamarine           = 0xFF7FFFD4UL; | 
|---|
| 65 | static const ARGB Azure                = 0xFFF0FFFFUL; | 
|---|
| 66 | static const ARGB Beige                = 0xFFF5F5DCUL; | 
|---|
| 67 | static const ARGB Bisque               = 0xFFFFE4C4UL; | 
|---|
| 68 | static const ARGB Black                = 0xFF000000UL; | 
|---|
| 69 | static const ARGB BlanchedAlmond       = 0xFFFFEBCDUL; | 
|---|
| 70 | static const ARGB Blue                 = 0xFF0000FFUL; | 
|---|
| 71 | static const ARGB BlueViolet           = 0xFF8A2BE2UL; | 
|---|
| 72 | static const ARGB Brown                = 0xFFA52A2AUL; | 
|---|
| 73 | static const ARGB BurlyWood            = 0xFFDEB887UL; | 
|---|
| 74 | static const ARGB CadetBlue            = 0xFF5F9EA0UL; | 
|---|
| 75 | static const ARGB Chartreuse           = 0xFF7FFF00UL; | 
|---|
| 76 | static const ARGB Chocolate            = 0xFFD2691EUL; | 
|---|
| 77 | static const ARGB Coral                = 0xFFFF7F50UL; | 
|---|
| 78 | static const ARGB CornflowerBlue       = 0xFF6495EDUL; | 
|---|
| 79 | static const ARGB Cornsilk             = 0xFFFFF8DCUL; | 
|---|
| 80 | static const ARGB Crimson              = 0xFFDC143CUL; | 
|---|
| 81 | static const ARGB Cyan                 = 0xFF00FFFFUL; | 
|---|
| 82 | static const ARGB DarkBlue             = 0xFF00008BUL; | 
|---|
| 83 | static const ARGB DarkCyan             = 0xFF008B8BUL; | 
|---|
| 84 | static const ARGB DarkGoldenrod        = 0xFFB8860BUL; | 
|---|
| 85 | static const ARGB DarkGray             = 0xFFA9A9A9UL; | 
|---|
| 86 | static const ARGB DarkGreen            = 0xFF006400UL; | 
|---|
| 87 | static const ARGB DarkKhaki            = 0xFFBDB76BUL; | 
|---|
| 88 | static const ARGB DarkMagenta          = 0xFF8B008BUL; | 
|---|
| 89 | static const ARGB DarkOliveGreen       = 0xFF556B2FUL; | 
|---|
| 90 | static const ARGB DarkOrange           = 0xFFFF8C00UL; | 
|---|
| 91 | static const ARGB DarkOrchid           = 0xFF9932CCUL; | 
|---|
| 92 | static const ARGB DarkRed              = 0xFF8B0000UL; | 
|---|
| 93 | static const ARGB DarkSalmon           = 0xFFE9967AUL; | 
|---|
| 94 | static const ARGB DarkSeaGreen         = 0xFF8FBC8FUL; | 
|---|
| 95 | static const ARGB DarkSlateBlue        = 0xFF483D8BUL; | 
|---|
| 96 | static const ARGB DarkSlateGray        = 0xFF2F4F4FUL; | 
|---|
| 97 | static const ARGB DarkTurquoise        = 0xFF00CED1UL; | 
|---|
| 98 | static const ARGB DarkViolet           = 0xFF9400D3UL; | 
|---|
| 99 | static const ARGB DeepPink             = 0xFFFF1493UL; | 
|---|
| 100 | static const ARGB DeepSkyBlue          = 0xFF00BFFFUL; | 
|---|
| 101 | static const ARGB DimGray              = 0xFF696969UL; | 
|---|
| 102 | static const ARGB DodgerBlue           = 0xFF1E90FFUL; | 
|---|
| 103 | static const ARGB Firebrick            = 0xFFB22222UL; | 
|---|
| 104 | static const ARGB FloralWhite          = 0xFFFFFAF0UL; | 
|---|
| 105 | static const ARGB ForestGreen          = 0xFF228B22UL; | 
|---|
| 106 | static const ARGB Fuchsia              = 0xFFFF00FFUL; | 
|---|
| 107 | static const ARGB Gainsboro            = 0xFFDCDCDCUL; | 
|---|
| 108 | static const ARGB GhostWhite           = 0xFFF8F8FFUL; | 
|---|
| 109 | static const ARGB Gold                 = 0xFFFFD700UL; | 
|---|
| 110 | static const ARGB Goldenrod            = 0xFFDAA520UL; | 
|---|
| 111 | static const ARGB Gray                 = 0xFF808080UL; | 
|---|
| 112 | static const ARGB Green                = 0xFF008000UL; | 
|---|
| 113 | static const ARGB GreenYellow          = 0xFFADFF2FUL; | 
|---|
| 114 | static const ARGB Honeydew             = 0xFFF0FFF0UL; | 
|---|
| 115 | static const ARGB HotPink              = 0xFFFF69B4UL; | 
|---|
| 116 | static const ARGB IndianRed            = 0xFFCD5C5CUL; | 
|---|
| 117 | static const ARGB Indigo               = 0xFF4B0082UL; | 
|---|
| 118 | static const ARGB Ivory                = 0xFFFFFFF0UL; | 
|---|
| 119 | static const ARGB Khaki                = 0xFFF0E68CUL; | 
|---|
| 120 | static const ARGB Lavender             = 0xFFE6E6FAUL; | 
|---|
| 121 | static const ARGB LavenderBlush        = 0xFFFFF0F5UL; | 
|---|
| 122 | static const ARGB LawnGreen            = 0xFF7CFC00UL; | 
|---|
| 123 | static const ARGB LemonChiffon         = 0xFFFFFACDUL; | 
|---|
| 124 | static const ARGB LightBlue            = 0xFFADD8E6UL; | 
|---|
| 125 | static const ARGB LightCoral           = 0xFFF08080UL; | 
|---|
| 126 | static const ARGB LightCyan            = 0xFFE0FFFFUL; | 
|---|
| 127 | static const ARGB LightGoldenrodYellow = 0xFFFAFAD2UL; | 
|---|
| 128 | static const ARGB LightGray            = 0xFFD3D3D3UL; | 
|---|
| 129 | static const ARGB LightGreen           = 0xFF90EE90UL; | 
|---|
| 130 | static const ARGB LightPink            = 0xFFFFB6C1UL; | 
|---|
| 131 | static const ARGB LightSalmon          = 0xFFFFA07AUL; | 
|---|
| 132 | static const ARGB LightSeaGreen        = 0xFF20B2AAUL; | 
|---|
| 133 | static const ARGB LightSkyBlue         = 0xFF87CEFAUL; | 
|---|
| 134 | static const ARGB LightSlateGray       = 0xFF778899UL; | 
|---|
| 135 | static const ARGB LightSteelBlue       = 0xFFB0C4DEUL; | 
|---|
| 136 | static const ARGB LightYellow          = 0xFFFFFFE0UL; | 
|---|
| 137 | static const ARGB Lime                 = 0xFF00FF00UL; | 
|---|
| 138 | static const ARGB LimeGreen            = 0xFF32CD32UL; | 
|---|
| 139 | static const ARGB Linen                = 0xFFFAF0E6UL; | 
|---|
| 140 | static const ARGB Magenta              = 0xFFFF00FFUL; | 
|---|
| 141 | static const ARGB Maroon               = 0xFF800000UL; | 
|---|
| 142 | static const ARGB MediumAquamarine     = 0xFF66CDAAUL; | 
|---|
| 143 | static const ARGB MediumBlue           = 0xFF0000CDUL; | 
|---|
| 144 | static const ARGB MediumOrchid         = 0xFFBA55D3UL; | 
|---|
| 145 | static const ARGB MediumPurple         = 0xFF9370DBUL; | 
|---|
| 146 | static const ARGB MediumSeaGreen       = 0xFF3CB371UL; | 
|---|
| 147 | static const ARGB MediumSlateBlue      = 0xFF7B68EEUL; | 
|---|
| 148 | static const ARGB MediumSpringGreen    = 0xFF00FA9AUL; | 
|---|
| 149 | static const ARGB MediumTurquoise      = 0xFF48D1CCUL; | 
|---|
| 150 | static const ARGB MediumVioletRed      = 0xFFC71585UL; | 
|---|
| 151 | static const ARGB MidnightBlue         = 0xFF191970UL; | 
|---|
| 152 | static const ARGB MintCream            = 0xFFF5FFFAUL; | 
|---|
| 153 | static const ARGB MistyRose            = 0xFFFFE4E1UL; | 
|---|
| 154 | static const ARGB Moccasin             = 0xFFFFE4B5UL; | 
|---|
| 155 | static const ARGB NavajoWhite          = 0xFFFFDEADUL; | 
|---|
| 156 | static const ARGB Navy                 = 0xFF000080UL; | 
|---|
| 157 | static const ARGB OldLace              = 0xFFFDF5E6UL; | 
|---|
| 158 | static const ARGB Olive                = 0xFF808000UL; | 
|---|
| 159 | static const ARGB OliveDrab            = 0xFF6B8E23UL; | 
|---|
| 160 | static const ARGB Orange               = 0xFFFFA500UL; | 
|---|
| 161 | static const ARGB OrangeRed            = 0xFFFF4500UL; | 
|---|
| 162 | static const ARGB Orchid               = 0xFFDA70D6UL; | 
|---|
| 163 | static const ARGB PaleGoldenrod        = 0xFFEEE8AAUL; | 
|---|
| 164 | static const ARGB PaleGreen            = 0xFF98FB98UL; | 
|---|
| 165 | static const ARGB PaleTurquoise        = 0xFFAFEEEEUL; | 
|---|
| 166 | static const ARGB PaleVioletRed        = 0xFFDB7093UL; | 
|---|
| 167 | static const ARGB PapayaWhip           = 0xFFFFEFD5UL; | 
|---|
| 168 | static const ARGB PeachPuff            = 0xFFFFDAB9UL; | 
|---|
| 169 | static const ARGB Peru                 = 0xFFCD853FUL; | 
|---|
| 170 | static const ARGB Pink                 = 0xFFFFC0CBUL; | 
|---|
| 171 | static const ARGB Plum                 = 0xFFDDA0DDUL; | 
|---|
| 172 | static const ARGB PowderBlue           = 0xFFB0E0E6UL; | 
|---|
| 173 | static const ARGB Purple               = 0xFF800080UL; | 
|---|
| 174 | static const ARGB Red                  = 0xFFFF0000UL; | 
|---|
| 175 | static const ARGB RosyBrown            = 0xFFBC8F8FUL; | 
|---|
| 176 | static const ARGB RoyalBlue            = 0xFF4169E1UL; | 
|---|
| 177 | static const ARGB SaddleBrown          = 0xFF8B4513UL; | 
|---|
| 178 | static const ARGB Salmon               = 0xFFFA8072UL; | 
|---|
| 179 | static const ARGB SandyBrown           = 0xFFF4A460UL; | 
|---|
| 180 | static const ARGB SeaGreen             = 0xFF2E8B57UL; | 
|---|
| 181 | static const ARGB SeaShell             = 0xFFFFF5EEUL; | 
|---|
| 182 | static const ARGB Sienna               = 0xFFA0522DUL; | 
|---|
| 183 | static const ARGB Silver               = 0xFFC0C0C0UL; | 
|---|
| 184 | static const ARGB SkyBlue              = 0xFF87CEEBUL; | 
|---|
| 185 | static const ARGB SlateBlue            = 0xFF6A5ACDUL; | 
|---|
| 186 | static const ARGB SlateGray            = 0xFF708090UL; | 
|---|
| 187 | static const ARGB Snow                 = 0xFFFFFAFAUL; | 
|---|
| 188 | static const ARGB SpringGreen          = 0xFF00FF7FUL; | 
|---|
| 189 | static const ARGB SteelBlue            = 0xFF4682B4UL; | 
|---|
| 190 | static const ARGB Tan                  = 0xFFD2B48CUL; | 
|---|
| 191 | static const ARGB Teal                 = 0xFF008080UL; | 
|---|
| 192 | static const ARGB Thistle              = 0xFFD8BFD8UL; | 
|---|
| 193 | static const ARGB Tomato               = 0xFFFF6347UL; | 
|---|
| 194 | static const ARGB Transparent          = 0x00FFFFFFUL; | 
|---|
| 195 | static const ARGB Turquoise            = 0xFF40E0D0UL; | 
|---|
| 196 | static const ARGB Violet               = 0xFFEE82EEUL; | 
|---|
| 197 | static const ARGB Wheat                = 0xFFF5DEB3UL; | 
|---|
| 198 | static const ARGB White                = 0xFFFFFFFFUL; | 
|---|
| 199 | static const ARGB WhiteSmoke           = 0xFFF5F5F5UL; | 
|---|
| 200 | static const ARGB Yellow               = 0xFFFFFF00UL; | 
|---|
| 201 | static const ARGB YellowGreen          = 0xFF9ACD32UL; | 
|---|
| 202 |  | 
|---|
| 203 | Color(): Value(0xFF000000) {} | 
|---|
| 204 | Color(ARGB argb): Value(argb) {} | 
|---|
| 205 | Color(BYTE r, BYTE g, BYTE b): Value(MakeARGB(0xFF, r, g, b)) {} | 
|---|
| 206 | Color(BYTE a, BYTE r, BYTE g, BYTE b): Value(MakeARGB(a, r, g, b)) {} | 
|---|
| 207 |  | 
|---|
| 208 | BYTE GetA() const | 
|---|
| 209 | { | 
|---|
| 210 | return (BYTE) (Value >> 24); | 
|---|
| 211 | } | 
|---|
| 212 | BYTE GetAlpha() const | 
|---|
| 213 | { | 
|---|
| 214 | return (BYTE) (Value >> 24); | 
|---|
| 215 | } | 
|---|
| 216 | BYTE GetB() const | 
|---|
| 217 | { | 
|---|
| 218 | return (BYTE) Value; | 
|---|
| 219 | } | 
|---|
| 220 | BYTE GetBlue() const | 
|---|
| 221 | { | 
|---|
| 222 | return (BYTE) Value; | 
|---|
| 223 | } | 
|---|
| 224 | BYTE GetG() const | 
|---|
| 225 | { | 
|---|
| 226 | return (BYTE) (Value >> 8); | 
|---|
| 227 | } | 
|---|
| 228 | BYTE GetGreen() const | 
|---|
| 229 | { | 
|---|
| 230 | return (BYTE) (Value >> 8); | 
|---|
| 231 | } | 
|---|
| 232 | BYTE GetR() const | 
|---|
| 233 | { | 
|---|
| 234 | return (BYTE) (Value >> 16); | 
|---|
| 235 | } | 
|---|
| 236 | BYTE GetRed() const | 
|---|
| 237 | { | 
|---|
| 238 | return (BYTE) (Value >> 16); | 
|---|
| 239 | } | 
|---|
| 240 | ARGB GetValue() const | 
|---|
| 241 | { | 
|---|
| 242 | return Value; | 
|---|
| 243 | } | 
|---|
| 244 | VOID SetFromCOLORREF(COLORREF rgb) | 
|---|
| 245 | { | 
|---|
| 246 | BYTE r = (BYTE) rgb; | 
|---|
| 247 | BYTE g = (BYTE) (rgb >> 8); | 
|---|
| 248 | BYTE b = (BYTE) (rgb >> 16); | 
|---|
| 249 | Value = MakeARGB(0xFF, r, g, b); | 
|---|
| 250 | } | 
|---|
| 251 | VOID SetValue(ARGB argb) | 
|---|
| 252 | { | 
|---|
| 253 | Value = argb; | 
|---|
| 254 | } | 
|---|
| 255 | COLORREF ToCOLORREF() const | 
|---|
| 256 | { | 
|---|
| 257 | return RGB(GetRed(), GetGreen(), GetBlue()); | 
|---|
| 258 | } | 
|---|
| 259 | #endif /* __cplusplus */ | 
|---|
| 260 | } Color; | 
|---|
| 261 |  | 
|---|
| 262 | #endif /* __GDIPLUS_COLOR_H */ | 
|---|