| 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 = 0xFF000000;
|
|---|
| 60 |
|
|---|
| 61 | static const ARGB AliceBlue = 0xFFF0F8FF;
|
|---|
| 62 | static const ARGB AntiqueWhite = 0xFFFAEBD7;
|
|---|
| 63 | static const ARGB Aqua = 0xFF00FFFF;
|
|---|
| 64 | static const ARGB Aquamarine = 0xFF7FFFD4;
|
|---|
| 65 | static const ARGB Azure = 0xFFF0FFFF;
|
|---|
| 66 | static const ARGB Beige = 0xFFF5F5DC;
|
|---|
| 67 | static const ARGB Bisque = 0xFFFFE4C4;
|
|---|
| 68 | static const ARGB Black = 0xFF000000;
|
|---|
| 69 | static const ARGB BlanchedAlmond = 0xFFFFEBCD;
|
|---|
| 70 | static const ARGB Blue = 0xFF0000FF;
|
|---|
| 71 | static const ARGB BlueViolet = 0xFF8A2BE2;
|
|---|
| 72 | static const ARGB Brown = 0xFFA52A2A;
|
|---|
| 73 | static const ARGB BurlyWood = 0xFFDEB887;
|
|---|
| 74 | static const ARGB CadetBlue = 0xFF5F9EA0;
|
|---|
| 75 | static const ARGB Chartreuse = 0xFF7FFF00;
|
|---|
| 76 | static const ARGB Chocolate = 0xFFD2691E;
|
|---|
| 77 | static const ARGB Coral = 0xFFFF7F50;
|
|---|
| 78 | static const ARGB CornflowerBlue = 0xFF6495ED;
|
|---|
| 79 | static const ARGB Cornsilk = 0xFFFFF8DC;
|
|---|
| 80 | static const ARGB Crimson = 0xFFDC143C;
|
|---|
| 81 | static const ARGB Cyan = 0xFF00FFFF;
|
|---|
| 82 | static const ARGB DarkBlue = 0xFF00008B;
|
|---|
| 83 | static const ARGB DarkCyan = 0xFF008B8B;
|
|---|
| 84 | static const ARGB DarkGoldenrod = 0xFFB8860B;
|
|---|
| 85 | static const ARGB DarkGray = 0xFFA9A9A9;
|
|---|
| 86 | static const ARGB DarkGreen = 0xFF006400;
|
|---|
| 87 | static const ARGB DarkKhaki = 0xFFBDB76B;
|
|---|
| 88 | static const ARGB DarkMagenta = 0xFF8B008B;
|
|---|
| 89 | static const ARGB DarkOliveGreen = 0xFF556B2F;
|
|---|
| 90 | static const ARGB DarkOrange = 0xFFFF8C00;
|
|---|
| 91 | static const ARGB DarkOrchid = 0xFF9932CC;
|
|---|
| 92 | static const ARGB DarkRed = 0xFF8B0000;
|
|---|
| 93 | static const ARGB DarkSalmon = 0xFFE9967A;
|
|---|
| 94 | static const ARGB DarkSeaGreen = 0xFF8FBC8F;
|
|---|
| 95 | static const ARGB DarkSlateBlue = 0xFF483D8B;
|
|---|
| 96 | static const ARGB DarkSlateGray = 0xFF2F4F4F;
|
|---|
| 97 | static const ARGB DarkTurquoise = 0xFF00CED1;
|
|---|
| 98 | static const ARGB DarkViolet = 0xFF9400D3;
|
|---|
| 99 | static const ARGB DeepPink = 0xFFFF1493;
|
|---|
| 100 | static const ARGB DeepSkyBlue = 0xFF00BFFF;
|
|---|
| 101 | static const ARGB DimGray = 0xFF696969;
|
|---|
| 102 | static const ARGB DodgerBlue = 0xFF1E90FF;
|
|---|
| 103 | static const ARGB Firebrick = 0xFFB22222;
|
|---|
| 104 | static const ARGB FloralWhite = 0xFFFFFAF0;
|
|---|
| 105 | static const ARGB ForestGreen = 0xFF228B22;
|
|---|
| 106 | static const ARGB Fuchsia = 0xFFFF00FF;
|
|---|
| 107 | static const ARGB Gainsboro = 0xFFDCDCDC;
|
|---|
| 108 | static const ARGB GhostWhite = 0xFFF8F8FF;
|
|---|
| 109 | static const ARGB Gold = 0xFFFFD700;
|
|---|
| 110 | static const ARGB Goldenrod = 0xFFDAA520;
|
|---|
| 111 | static const ARGB Gray = 0xFF808080;
|
|---|
| 112 | static const ARGB Green = 0xFF008000;
|
|---|
| 113 | static const ARGB GreenYellow = 0xFFADFF2F;
|
|---|
| 114 | static const ARGB Honeydew = 0xFFF0FFF0;
|
|---|
| 115 | static const ARGB HotPink = 0xFFFF69B4;
|
|---|
| 116 | static const ARGB IndianRed = 0xFFCD5C5C;
|
|---|
| 117 | static const ARGB Indigo = 0xFF4B0082;
|
|---|
| 118 | static const ARGB Ivory = 0xFFFFFFF0;
|
|---|
| 119 | static const ARGB Khaki = 0xFFF0E68C;
|
|---|
| 120 | static const ARGB Lavender = 0xFFE6E6FA;
|
|---|
| 121 | static const ARGB LavenderBlush = 0xFFFFF0F5;
|
|---|
| 122 | static const ARGB LawnGreen = 0xFF7CFC00;
|
|---|
| 123 | static const ARGB LemonChiffon = 0xFFFFFACD;
|
|---|
| 124 | static const ARGB LightBlue = 0xFFADD8E6;
|
|---|
| 125 | static const ARGB LightCoral = 0xFFF08080;
|
|---|
| 126 | static const ARGB LightCyan = 0xFFE0FFFF;
|
|---|
| 127 | static const ARGB LightGoldenrodYellow = 0xFFFAFAD2;
|
|---|
| 128 | static const ARGB LightGray = 0xFFD3D3D3;
|
|---|
| 129 | static const ARGB LightGreen = 0xFF90EE90;
|
|---|
| 130 | static const ARGB LightPink = 0xFFFFB6C1;
|
|---|
| 131 | static const ARGB LightSalmon = 0xFFFFA07A;
|
|---|
| 132 | static const ARGB LightSeaGreen = 0xFF20B2AA;
|
|---|
| 133 | static const ARGB LightSkyBlue = 0xFF87CEFA;
|
|---|
| 134 | static const ARGB LightSlateGray = 0xFF778899;
|
|---|
| 135 | static const ARGB LightSteelBlue = 0xFFB0C4DE;
|
|---|
| 136 | static const ARGB LightYellow = 0xFFFFFFE0;
|
|---|
| 137 | static const ARGB Lime = 0xFF00FF00;
|
|---|
| 138 | static const ARGB LimeGreen = 0xFF32CD32;
|
|---|
| 139 | static const ARGB Linen = 0xFFFAF0E6;
|
|---|
| 140 | static const ARGB Magenta = 0xFFFF00FF;
|
|---|
| 141 | static const ARGB Maroon = 0xFF800000;
|
|---|
| 142 | static const ARGB MediumAquamarine = 0xFF66CDAA;
|
|---|
| 143 | static const ARGB MediumBlue = 0xFF0000CD;
|
|---|
| 144 | static const ARGB MediumOrchid = 0xFFBA55D3;
|
|---|
| 145 | static const ARGB MediumPurple = 0xFF9370DB;
|
|---|
| 146 | static const ARGB MediumSeaGreen = 0xFF3CB371;
|
|---|
| 147 | static const ARGB MediumSlateBlue = 0xFF7B68EE;
|
|---|
| 148 | static const ARGB MediumSpringGreen = 0xFF00FA9A;
|
|---|
| 149 | static const ARGB MediumTurquoise = 0xFF48D1CC;
|
|---|
| 150 | static const ARGB MediumVioletRed = 0xFFC71585;
|
|---|
| 151 | static const ARGB MidnightBlue = 0xFF191970;
|
|---|
| 152 | static const ARGB MintCream = 0xFFF5FFFA;
|
|---|
| 153 | static const ARGB MistyRose = 0xFFFFE4E1;
|
|---|
| 154 | static const ARGB Moccasin = 0xFFFFE4B5;
|
|---|
| 155 | static const ARGB NavajoWhite = 0xFFFFDEAD;
|
|---|
| 156 | static const ARGB Navy = 0xFF000080;
|
|---|
| 157 | static const ARGB OldLace = 0xFFFDF5E6;
|
|---|
| 158 | static const ARGB Olive = 0xFF808000;
|
|---|
| 159 | static const ARGB OliveDrab = 0xFF6B8E23;
|
|---|
| 160 | static const ARGB Orange = 0xFFFFA500;
|
|---|
| 161 | static const ARGB OrangeRed = 0xFFFF4500;
|
|---|
| 162 | static const ARGB Orchid = 0xFFDA70D6;
|
|---|
| 163 | static const ARGB PaleGoldenrod = 0xFFEEE8AA;
|
|---|
| 164 | static const ARGB PaleGreen = 0xFF98FB98;
|
|---|
| 165 | static const ARGB PaleTurquoise = 0xFFAFEEEE;
|
|---|
| 166 | static const ARGB PaleVioletRed = 0xFFDB7093;
|
|---|
| 167 | static const ARGB PapayaWhip = 0xFFFFEFD5;
|
|---|
| 168 | static const ARGB PeachPuff = 0xFFFFDAB9;
|
|---|
| 169 | static const ARGB Peru = 0xFFCD853F;
|
|---|
| 170 | static const ARGB Pink = 0xFFFFC0CB;
|
|---|
| 171 | static const ARGB Plum = 0xFFDDA0DD;
|
|---|
| 172 | static const ARGB PowderBlue = 0xFFB0E0E6;
|
|---|
| 173 | static const ARGB Purple = 0xFF800080;
|
|---|
| 174 | static const ARGB Red = 0xFFFF0000;
|
|---|
| 175 | static const ARGB RosyBrown = 0xFFBC8F8F;
|
|---|
| 176 | static const ARGB RoyalBlue = 0xFF4169E1;
|
|---|
| 177 | static const ARGB SaddleBrown = 0xFF8B4513;
|
|---|
| 178 | static const ARGB Salmon = 0xFFFA8072;
|
|---|
| 179 | static const ARGB SandyBrown = 0xFFF4A460;
|
|---|
| 180 | static const ARGB SeaGreen = 0xFF2E8B57;
|
|---|
| 181 | static const ARGB SeaShell = 0xFFFFF5EE;
|
|---|
| 182 | static const ARGB Sienna = 0xFFA0522D;
|
|---|
| 183 | static const ARGB Silver = 0xFFC0C0C0;
|
|---|
| 184 | static const ARGB SkyBlue = 0xFF87CEEB;
|
|---|
| 185 | static const ARGB SlateBlue = 0xFF6A5ACD;
|
|---|
| 186 | static const ARGB SlateGray = 0xFF708090;
|
|---|
| 187 | static const ARGB Snow = 0xFFFFFAFA;
|
|---|
| 188 | static const ARGB SpringGreen = 0xFF00FF7F;
|
|---|
| 189 | static const ARGB SteelBlue = 0xFF4682B4;
|
|---|
| 190 | static const ARGB Tan = 0xFFD2B48C;
|
|---|
| 191 | static const ARGB Teal = 0xFF008080;
|
|---|
| 192 | static const ARGB Thistle = 0xFFD8BFD8;
|
|---|
| 193 | static const ARGB Tomato = 0xFFFF6347;
|
|---|
| 194 | static const ARGB Transparent = 0x00FFFFFF;
|
|---|
| 195 | static const ARGB Turquoise = 0xFF40E0D0;
|
|---|
| 196 | static const ARGB Violet = 0xFFEE82EE;
|
|---|
| 197 | static const ARGB Wheat = 0xFFF5DEB3;
|
|---|
| 198 | static const ARGB White = 0xFFFFFFFF;
|
|---|
| 199 | static const ARGB WhiteSmoke = 0xFFF5F5F5;
|
|---|
| 200 | static const ARGB Yellow = 0xFFFFFF00;
|
|---|
| 201 | static const ARGB YellowGreen = 0xFF9ACD32;
|
|---|
| 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 */
|
|---|