gdipluscolor.h 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  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. #ifndef __GDIPLUS_COLOR_H
  23. #define __GDIPLUS_COLOR_H
  24. #if __GNUC__ >=3
  25. #pragma GCC system_header
  26. #endif
  27. typedef enum ColorChannelFlags {
  28. ColorChannelFlagsC = 0,
  29. ColorChannelFlagsM = 1,
  30. ColorChannelFlagsY = 2,
  31. ColorChannelFlagsK = 3,
  32. ColorChannelFlagsLast = 4
  33. } ColorChannelFlags;
  34. typedef struct Color
  35. {
  36. #ifdef __cplusplus
  37. private:
  38. #endif
  39. ARGB Value;
  40. #ifdef __cplusplus
  41. public:
  42. friend class Bitmap;
  43. friend class Graphics;
  44. friend class HatchBrush;
  45. friend class PathGradientBrush;
  46. friend class Pen;
  47. friend class SolidBrush;
  48. static ARGB MakeARGB(BYTE a, BYTE r, BYTE g, BYTE b)
  49. {
  50. return (ARGB) ((((DWORD) a) << 24) | (((DWORD) r) << 16)
  51. | (((DWORD) g) << 8) | ((DWORD) b));
  52. }
  53. static const ARGB AlphaMask = 0xFF000000;
  54. static const ARGB AliceBlue = 0xFFF0F8FF;
  55. static const ARGB AntiqueWhite = 0xFFFAEBD7;
  56. static const ARGB Aqua = 0xFF00FFFF;
  57. static const ARGB Aquamarine = 0xFF7FFFD4;
  58. static const ARGB Azure = 0xFFF0FFFF;
  59. static const ARGB Beige = 0xFFF5F5DC;
  60. static const ARGB Bisque = 0xFFFFE4C4;
  61. static const ARGB Black = 0xFF000000;
  62. static const ARGB BlanchedAlmond = 0xFFFFEBCD;
  63. static const ARGB Blue = 0xFF0000FF;
  64. static const ARGB BlueViolet = 0xFF8A2BE2;
  65. static const ARGB Brown = 0xFFA52A2A;
  66. static const ARGB BurlyWood = 0xFFDEB887;
  67. static const ARGB CadetBlue = 0xFF5F9EA0;
  68. static const ARGB Chartreuse = 0xFF7FFF00;
  69. static const ARGB Chocolate = 0xFFD2691E;
  70. static const ARGB Coral = 0xFFFF7F50;
  71. static const ARGB CornflowerBlue = 0xFF6495ED;
  72. static const ARGB Cornsilk = 0xFFFFF8DC;
  73. static const ARGB Crimson = 0xFFDC143C;
  74. static const ARGB Cyan = 0xFF00FFFF;
  75. static const ARGB DarkBlue = 0xFF00008B;
  76. static const ARGB DarkCyan = 0xFF008B8B;
  77. static const ARGB DarkGoldenrod = 0xFFB8860B;
  78. static const ARGB DarkGray = 0xFFA9A9A9;
  79. static const ARGB DarkGreen = 0xFF006400;
  80. static const ARGB DarkKhaki = 0xFFBDB76B;
  81. static const ARGB DarkMagenta = 0xFF8B008B;
  82. static const ARGB DarkOliveGreen = 0xFF556B2F;
  83. static const ARGB DarkOrange = 0xFFFF8C00;
  84. static const ARGB DarkOrchid = 0xFF9932CC;
  85. static const ARGB DarkRed = 0xFF8B0000;
  86. static const ARGB DarkSalmon = 0xFFE9967A;
  87. static const ARGB DarkSeaGreen = 0xFF8FBC8F;
  88. static const ARGB DarkSlateBlue = 0xFF483D8B;
  89. static const ARGB DarkSlateGray = 0xFF2F4F4F;
  90. static const ARGB DarkTurquoise = 0xFF00CED1;
  91. static const ARGB DarkViolet = 0xFF9400D3;
  92. static const ARGB DeepPink = 0xFFFF1493;
  93. static const ARGB DeepSkyBlue = 0xFF00BFFF;
  94. static const ARGB DimGray = 0xFF696969;
  95. static const ARGB DodgerBlue = 0xFF1E90FF;
  96. static const ARGB Firebrick = 0xFFB22222;
  97. static const ARGB FloralWhite = 0xFFFFFAF0;
  98. static const ARGB ForestGreen = 0xFF228B22;
  99. static const ARGB Fuchsia = 0xFFFF00FF;
  100. static const ARGB Gainsboro = 0xFFDCDCDC;
  101. static const ARGB GhostWhite = 0xFFF8F8FF;
  102. static const ARGB Gold = 0xFFFFD700;
  103. static const ARGB Goldenrod = 0xFFDAA520;
  104. static const ARGB Gray = 0xFF808080;
  105. static const ARGB Green = 0xFF008000;
  106. static const ARGB GreenYellow = 0xFFADFF2F;
  107. static const ARGB Honeydew = 0xFFF0FFF0;
  108. static const ARGB HotPink = 0xFFFF69B4;
  109. static const ARGB IndianRed = 0xFFCD5C5C;
  110. static const ARGB Indigo = 0xFF4B0082;
  111. static const ARGB Ivory = 0xFFFFFFF0;
  112. static const ARGB Khaki = 0xFFF0E68C;
  113. static const ARGB Lavender = 0xFFE6E6FA;
  114. static const ARGB LavenderBlush = 0xFFFFF0F5;
  115. static const ARGB LawnGreen = 0xFF7CFC00;
  116. static const ARGB LemonChiffon = 0xFFFFFACD;
  117. static const ARGB LightBlue = 0xFFADD8E6;
  118. static const ARGB LightCoral = 0xFFF08080;
  119. static const ARGB LightCyan = 0xFFE0FFFF;
  120. static const ARGB LightGoldenrodYellow = 0xFFFAFAD2;
  121. static const ARGB LightGray = 0xFFD3D3D3;
  122. static const ARGB LightGreen = 0xFF90EE90;
  123. static const ARGB LightPink = 0xFFFFB6C1;
  124. static const ARGB LightSalmon = 0xFFFFA07A;
  125. static const ARGB LightSeaGreen = 0xFF20B2AA;
  126. static const ARGB LightSkyBlue = 0xFF87CEFA;
  127. static const ARGB LightSlateGray = 0xFF778899;
  128. static const ARGB LightSteelBlue = 0xFFB0C4DE;
  129. static const ARGB LightYellow = 0xFFFFFFE0;
  130. static const ARGB Lime = 0xFF00FF00;
  131. static const ARGB LimeGreen = 0xFF32CD32;
  132. static const ARGB Linen = 0xFFFAF0E6;
  133. static const ARGB Magenta = 0xFFFF00FF;
  134. static const ARGB Maroon = 0xFF800000;
  135. static const ARGB MediumAquamarine = 0xFF66CDAA;
  136. static const ARGB MediumBlue = 0xFF0000CD;
  137. static const ARGB MediumOrchid = 0xFFBA55D3;
  138. static const ARGB MediumPurple = 0xFF9370DB;
  139. static const ARGB MediumSeaGreen = 0xFF3CB371;
  140. static const ARGB MediumSlateBlue = 0xFF7B68EE;
  141. static const ARGB MediumSpringGreen = 0xFF00FA9A;
  142. static const ARGB MediumTurquoise = 0xFF48D1CC;
  143. static const ARGB MediumVioletRed = 0xFFC71585;
  144. static const ARGB MidnightBlue = 0xFF191970;
  145. static const ARGB MintCream = 0xFFF5FFFA;
  146. static const ARGB MistyRose = 0xFFFFE4E1;
  147. static const ARGB Moccasin = 0xFFFFE4B5;
  148. static const ARGB NavajoWhite = 0xFFFFDEAD;
  149. static const ARGB Navy = 0xFF000080;
  150. static const ARGB OldLace = 0xFFFDF5E6;
  151. static const ARGB Olive = 0xFF808000;
  152. static const ARGB OliveDrab = 0xFF6B8E23;
  153. static const ARGB Orange = 0xFFFFA500;
  154. static const ARGB OrangeRed = 0xFFFF4500;
  155. static const ARGB Orchid = 0xFFDA70D6;
  156. static const ARGB PaleGoldenrod = 0xFFEEE8AA;
  157. static const ARGB PaleGreen = 0xFF98FB98;
  158. static const ARGB PaleTurquoise = 0xFFAFEEEE;
  159. static const ARGB PaleVioletRed = 0xFFDB7093;
  160. static const ARGB PapayaWhip = 0xFFFFEFD5;
  161. static const ARGB PeachPuff = 0xFFFFDAB9;
  162. static const ARGB Peru = 0xFFCD853F;
  163. static const ARGB Pink = 0xFFFFC0CB;
  164. static const ARGB Plum = 0xFFDDA0DD;
  165. static const ARGB PowderBlue = 0xFFB0E0E6;
  166. static const ARGB Purple = 0xFF800080;
  167. static const ARGB Red = 0xFFFF0000;
  168. static const ARGB RosyBrown = 0xFFBC8F8F;
  169. static const ARGB RoyalBlue = 0xFF4169E1;
  170. static const ARGB SaddleBrown = 0xFF8B4513;
  171. static const ARGB Salmon = 0xFFFA8072;
  172. static const ARGB SandyBrown = 0xFFF4A460;
  173. static const ARGB SeaGreen = 0xFF2E8B57;
  174. static const ARGB SeaShell = 0xFFFFF5EE;
  175. static const ARGB Sienna = 0xFFA0522D;
  176. static const ARGB Silver = 0xFFC0C0C0;
  177. static const ARGB SkyBlue = 0xFF87CEEB;
  178. static const ARGB SlateBlue = 0xFF6A5ACD;
  179. static const ARGB SlateGray = 0xFF708090;
  180. static const ARGB Snow = 0xFFFFFAFA;
  181. static const ARGB SpringGreen = 0xFF00FF7F;
  182. static const ARGB SteelBlue = 0xFF4682B4;
  183. static const ARGB Tan = 0xFFD2B48C;
  184. static const ARGB Teal = 0xFF008080;
  185. static const ARGB Thistle = 0xFFD8BFD8;
  186. static const ARGB Tomato = 0xFFFF6347;
  187. static const ARGB Transparent = 0x00FFFFFF;
  188. static const ARGB Turquoise = 0xFF40E0D0;
  189. static const ARGB Violet = 0xFFEE82EE;
  190. static const ARGB Wheat = 0xFFF5DEB3;
  191. static const ARGB White = 0xFFFFFFFF;
  192. static const ARGB WhiteSmoke = 0xFFF5F5F5;
  193. static const ARGB Yellow = 0xFFFFFF00;
  194. static const ARGB YellowGreen = 0xFF9ACD32;
  195. Color(): Value(0xFF000000) {}
  196. Color(ARGB argb): Value(argb) {}
  197. Color(BYTE r, BYTE g, BYTE b): Value(MakeARGB(0xFF, r, g, b)) {}
  198. Color(BYTE a, BYTE r, BYTE g, BYTE b): Value(MakeARGB(a, r, g, b)) {}
  199. BYTE GetA() const
  200. {
  201. return (BYTE) (Value >> 24);
  202. }
  203. BYTE GetAlpha() const
  204. {
  205. return (BYTE) (Value >> 24);
  206. }
  207. BYTE GetB() const
  208. {
  209. return (BYTE) Value;
  210. }
  211. BYTE GetBlue() const
  212. {
  213. return (BYTE) Value;
  214. }
  215. BYTE GetG() const
  216. {
  217. return (BYTE) (Value >> 8);
  218. }
  219. BYTE GetGreen() const
  220. {
  221. return (BYTE) (Value >> 8);
  222. }
  223. BYTE GetR() const
  224. {
  225. return (BYTE) (Value >> 16);
  226. }
  227. BYTE GetRed() const
  228. {
  229. return (BYTE) (Value >> 16);
  230. }
  231. ARGB GetValue() const
  232. {
  233. return Value;
  234. }
  235. VOID SetFromCOLORREF(COLORREF rgb)
  236. {
  237. BYTE r = (BYTE) rgb;
  238. BYTE g = (BYTE) (rgb >> 8);
  239. BYTE b = (BYTE) (rgb >> 16);
  240. Value = MakeARGB(0xFF, r, g, b);
  241. }
  242. VOID SetValue(ARGB argb)
  243. {
  244. Value = argb;
  245. }
  246. COLORREF ToCOLORREF() const
  247. {
  248. return RGB(GetRed(), GetGreen(), GetBlue());
  249. }
  250. #endif /* __cplusplus */
  251. } Color;
  252. #endif /* __GDIPLUS_COLOR_H */