14a90b4a6SSergey Makeev // The MIT License (MIT)
24a90b4a6SSergey Makeev //
34a90b4a6SSergey Makeev // 	Copyright (c) 2015 Sergey Makeev, Vadim Slyusarev
44a90b4a6SSergey Makeev //
54a90b4a6SSergey Makeev // 	Permission is hereby granted, free of charge, to any person obtaining a copy
64a90b4a6SSergey Makeev // 	of this software and associated documentation files (the "Software"), to deal
74a90b4a6SSergey Makeev // 	in the Software without restriction, including without limitation the rights
84a90b4a6SSergey Makeev // 	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
94a90b4a6SSergey Makeev // 	copies of the Software, and to permit persons to whom the Software is
104a90b4a6SSergey Makeev // 	furnished to do so, subject to the following conditions:
114a90b4a6SSergey Makeev //
124a90b4a6SSergey Makeev //  The above copyright notice and this permission notice shall be included in
134a90b4a6SSergey Makeev // 	all copies or substantial portions of the Software.
144a90b4a6SSergey Makeev //
154a90b4a6SSergey Makeev // 	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
164a90b4a6SSergey Makeev // 	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
174a90b4a6SSergey Makeev // 	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
184a90b4a6SSergey Makeev // 	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
194a90b4a6SSergey Makeev // 	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
204a90b4a6SSergey Makeev // 	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
214a90b4a6SSergey Makeev // 	THE SOFTWARE.
224a90b4a6SSergey Makeev 
234a90b4a6SSergey Makeev #pragma once
244a90b4a6SSergey Makeev 
25*6e90b535Ss.makeev_local #include <MTTypes.h>
264a90b4a6SSergey Makeev 
274a90b4a6SSergey Makeev namespace MT
284a90b4a6SSergey Makeev {
294a90b4a6SSergey Makeev 
304a90b4a6SSergey Makeev 	// Source: http://msdn.microsoft.com/en-us/library/system.windows.media.colors(v=vs.110).aspx
314a90b4a6SSergey Makeev 	// Image:  http://i.msdn.microsoft.com/dynimg/IC24340.png
32*6e90b535Ss.makeev_local 	// Format: ARGB
334a90b4a6SSergey Makeev 	namespace Color
344a90b4a6SSergey Makeev 	{
354a90b4a6SSergey Makeev 		enum Type
364a90b4a6SSergey Makeev 		{
374a90b4a6SSergey Makeev 			Null = 0x00000000,
384a90b4a6SSergey Makeev 			AliceBlue = 0xFFF0F8FF,
394a90b4a6SSergey Makeev 			AntiqueWhite = 0xFFFAEBD7,
404a90b4a6SSergey Makeev 			Aqua = 0xFF00FFFF,
414a90b4a6SSergey Makeev 			Aquamarine = 0xFF7FFFD4,
424a90b4a6SSergey Makeev 			Azure = 0xFFF0FFFF,
434a90b4a6SSergey Makeev 			Beige = 0xFFF5F5DC,
444a90b4a6SSergey Makeev 			Bisque = 0xFFFFE4C4,
454a90b4a6SSergey Makeev 			Black = 0xFF000000,
464a90b4a6SSergey Makeev 			BlanchedAlmond = 0xFFFFEBCD,
474a90b4a6SSergey Makeev 			Blue = 0xFF0000FF,
484a90b4a6SSergey Makeev 			BlueViolet = 0xFF8A2BE2,
494a90b4a6SSergey Makeev 			Brown = 0xFFA52A2A,
504a90b4a6SSergey Makeev 			BurlyWood = 0xFFDEB887,
514a90b4a6SSergey Makeev 			CadetBlue = 0xFF5F9EA0,
524a90b4a6SSergey Makeev 			Chartreuse = 0xFF7FFF00,
534a90b4a6SSergey Makeev 			Chocolate = 0xFFD2691E,
544a90b4a6SSergey Makeev 			Coral = 0xFFFF7F50,
554a90b4a6SSergey Makeev 			CornflowerBlue = 0xFF6495ED,
564a90b4a6SSergey Makeev 			Cornsilk = 0xFFFFF8DC,
574a90b4a6SSergey Makeev 			Crimson = 0xFFDC143C,
584a90b4a6SSergey Makeev 			Cyan = 0xFF00FFFF,
594a90b4a6SSergey Makeev 			DarkBlue = 0xFF00008B,
604a90b4a6SSergey Makeev 			DarkCyan = 0xFF008B8B,
614a90b4a6SSergey Makeev 			DarkGoldenRod = 0xFFB8860B,
624a90b4a6SSergey Makeev 			DarkGray = 0xFFA9A9A9,
634a90b4a6SSergey Makeev 			DarkGreen = 0xFF006400,
644a90b4a6SSergey Makeev 			DarkKhaki = 0xFFBDB76B,
654a90b4a6SSergey Makeev 			DarkMagenta = 0xFF8B008B,
664a90b4a6SSergey Makeev 			DarkOliveGreen = 0xFF556B2F,
674a90b4a6SSergey Makeev 			DarkOrange = 0xFFFF8C00,
684a90b4a6SSergey Makeev 			DarkOrchid = 0xFF9932CC,
694a90b4a6SSergey Makeev 			DarkRed = 0xFF8B0000,
704a90b4a6SSergey Makeev 			DarkSalmon = 0xFFE9967A,
714a90b4a6SSergey Makeev 			DarkSeaGreen = 0xFF8FBC8F,
724a90b4a6SSergey Makeev 			DarkSlateBlue = 0xFF483D8B,
734a90b4a6SSergey Makeev 			DarkSlateGray = 0xFF2F4F4F,
744a90b4a6SSergey Makeev 			DarkTurquoise = 0xFF00CED1,
754a90b4a6SSergey Makeev 			DarkViolet = 0xFF9400D3,
764a90b4a6SSergey Makeev 			DeepPink = 0xFFFF1493,
774a90b4a6SSergey Makeev 			DeepSkyBlue = 0xFF00BFFF,
784a90b4a6SSergey Makeev 			DimGray = 0xFF696969,
794a90b4a6SSergey Makeev 			DodgerBlue = 0xFF1E90FF,
804a90b4a6SSergey Makeev 			FireBrick = 0xFFB22222,
814a90b4a6SSergey Makeev 			FloralWhite = 0xFFFFFAF0,
824a90b4a6SSergey Makeev 			ForestGreen = 0xFF228B22,
834a90b4a6SSergey Makeev 			Fuchsia = 0xFFFF00FF,
844a90b4a6SSergey Makeev 			Gainsboro = 0xFFDCDCDC,
854a90b4a6SSergey Makeev 			GhostWhite = 0xFFF8F8FF,
864a90b4a6SSergey Makeev 			Gold = 0xFFFFD700,
874a90b4a6SSergey Makeev 			GoldenRod = 0xFFDAA520,
884a90b4a6SSergey Makeev 			Gray = 0xFF808080,
894a90b4a6SSergey Makeev 			Green = 0xFF008000,
904a90b4a6SSergey Makeev 			GreenYellow = 0xFFADFF2F,
914a90b4a6SSergey Makeev 			HoneyDew = 0xFFF0FFF0,
924a90b4a6SSergey Makeev 			HotPink = 0xFFFF69B4,
934a90b4a6SSergey Makeev 			IndianRed = 0xFFCD5C5C,
944a90b4a6SSergey Makeev 			Indigo = 0xFF4B0082,
954a90b4a6SSergey Makeev 			Ivory = 0xFFFFFFF0,
964a90b4a6SSergey Makeev 			Khaki = 0xFFF0E68C,
974a90b4a6SSergey Makeev 			Lavender = 0xFFE6E6FA,
984a90b4a6SSergey Makeev 			LavenderBlush = 0xFFFFF0F5,
994a90b4a6SSergey Makeev 			LawnGreen = 0xFF7CFC00,
1004a90b4a6SSergey Makeev 			LemonChiffon = 0xFFFFFACD,
1014a90b4a6SSergey Makeev 			LightBlue = 0xFFADD8E6,
1024a90b4a6SSergey Makeev 			LightCoral = 0xFFF08080,
1034a90b4a6SSergey Makeev 			LightCyan = 0xFFE0FFFF,
1044a90b4a6SSergey Makeev 			LightGoldenRodYellow = 0xFFFAFAD2,
1054a90b4a6SSergey Makeev 			LightGray = 0xFFD3D3D3,
1064a90b4a6SSergey Makeev 			LightGreen = 0xFF90EE90,
1074a90b4a6SSergey Makeev 			LightPink = 0xFFFFB6C1,
1084a90b4a6SSergey Makeev 			LightSalmon = 0xFFFFA07A,
1094a90b4a6SSergey Makeev 			LightSeaGreen = 0xFF20B2AA,
1104a90b4a6SSergey Makeev 			LightSkyBlue = 0xFF87CEFA,
1114a90b4a6SSergey Makeev 			LightSlateGray = 0xFF778899,
1124a90b4a6SSergey Makeev 			LightSteelBlue = 0xFFB0C4DE,
1134a90b4a6SSergey Makeev 			LightYellow = 0xFFFFFFE0,
1144a90b4a6SSergey Makeev 			Lime = 0xFF00FF00,
1154a90b4a6SSergey Makeev 			LimeGreen = 0xFF32CD32,
1164a90b4a6SSergey Makeev 			Linen = 0xFFFAF0E6,
1174a90b4a6SSergey Makeev 			Magenta = 0xFFFF00FF,
1184a90b4a6SSergey Makeev 			Maroon = 0xFF800000,
1194a90b4a6SSergey Makeev 			MediumAquaMarine = 0xFF66CDAA,
1204a90b4a6SSergey Makeev 			MediumBlue = 0xFF0000CD,
1214a90b4a6SSergey Makeev 			MediumOrchid = 0xFFBA55D3,
1224a90b4a6SSergey Makeev 			MediumPurple = 0xFF9370DB,
1234a90b4a6SSergey Makeev 			MediumSeaGreen = 0xFF3CB371,
1244a90b4a6SSergey Makeev 			MediumSlateBlue = 0xFF7B68EE,
1254a90b4a6SSergey Makeev 			MediumSpringGreen = 0xFF00FA9A,
1264a90b4a6SSergey Makeev 			MediumTurquoise = 0xFF48D1CC,
1274a90b4a6SSergey Makeev 			MediumVioletRed = 0xFFC71585,
1284a90b4a6SSergey Makeev 			MidnightBlue = 0xFF191970,
1294a90b4a6SSergey Makeev 			MintCream = 0xFFF5FFFA,
1304a90b4a6SSergey Makeev 			MistyRose = 0xFFFFE4E1,
1314a90b4a6SSergey Makeev 			Moccasin = 0xFFFFE4B5,
1324a90b4a6SSergey Makeev 			NavajoWhite = 0xFFFFDEAD,
1334a90b4a6SSergey Makeev 			Navy = 0xFF000080,
1344a90b4a6SSergey Makeev 			OldLace = 0xFFFDF5E6,
1354a90b4a6SSergey Makeev 			Olive = 0xFF808000,
1364a90b4a6SSergey Makeev 			OliveDrab = 0xFF6B8E23,
1374a90b4a6SSergey Makeev 			Orange = 0xFFFFA500,
1384a90b4a6SSergey Makeev 			OrangeRed = 0xFFFF4500,
1394a90b4a6SSergey Makeev 			Orchid = 0xFFDA70D6,
1404a90b4a6SSergey Makeev 			PaleGoldenRod = 0xFFEEE8AA,
1414a90b4a6SSergey Makeev 			PaleGreen = 0xFF98FB98,
1424a90b4a6SSergey Makeev 			PaleTurquoise = 0xFFAFEEEE,
1434a90b4a6SSergey Makeev 			PaleVioletRed = 0xFFDB7093,
1444a90b4a6SSergey Makeev 			PapayaWhip = 0xFFFFEFD5,
1454a90b4a6SSergey Makeev 			PeachPuff = 0xFFFFDAB9,
1464a90b4a6SSergey Makeev 			Peru = 0xFFCD853F,
1474a90b4a6SSergey Makeev 			Pink = 0xFFFFC0CB,
1484a90b4a6SSergey Makeev 			Plum = 0xFFDDA0DD,
1494a90b4a6SSergey Makeev 			PowderBlue = 0xFFB0E0E6,
1504a90b4a6SSergey Makeev 			Purple = 0xFF800080,
1514a90b4a6SSergey Makeev 			Red = 0xFFFF0000,
1524a90b4a6SSergey Makeev 			RosyBrown = 0xFFBC8F8F,
1534a90b4a6SSergey Makeev 			RoyalBlue = 0xFF4169E1,
1544a90b4a6SSergey Makeev 			SaddleBrown = 0xFF8B4513,
1554a90b4a6SSergey Makeev 			Salmon = 0xFFFA8072,
1564a90b4a6SSergey Makeev 			SandyBrown = 0xFFF4A460,
1574a90b4a6SSergey Makeev 			SeaGreen = 0xFF2E8B57,
1584a90b4a6SSergey Makeev 			SeaShell = 0xFFFFF5EE,
1594a90b4a6SSergey Makeev 			Sienna = 0xFFA0522D,
1604a90b4a6SSergey Makeev 			Silver = 0xFFC0C0C0,
1614a90b4a6SSergey Makeev 			SkyBlue = 0xFF87CEEB,
1624a90b4a6SSergey Makeev 			SlateBlue = 0xFF6A5ACD,
1634a90b4a6SSergey Makeev 			SlateGray = 0xFF708090,
1644a90b4a6SSergey Makeev 			Snow = 0xFFFFFAFA,
1654a90b4a6SSergey Makeev 			SpringGreen = 0xFF00FF7F,
1664a90b4a6SSergey Makeev 			SteelBlue = 0xFF4682B4,
1674a90b4a6SSergey Makeev 			Tan = 0xFFD2B48C,
1684a90b4a6SSergey Makeev 			Teal = 0xFF008080,
1694a90b4a6SSergey Makeev 			Thistle = 0xFFD8BFD8,
1704a90b4a6SSergey Makeev 			Tomato = 0xFFFF6347,
1714a90b4a6SSergey Makeev 			Turquoise = 0xFF40E0D0,
1724a90b4a6SSergey Makeev 			Violet = 0xFFEE82EE,
1734a90b4a6SSergey Makeev 			Wheat = 0xFFF5DEB3,
1744a90b4a6SSergey Makeev 			White = 0xFFFFFFFF,
1754a90b4a6SSergey Makeev 			WhiteSmoke = 0xFFF5F5F5,
1764a90b4a6SSergey Makeev 			Yellow = 0xFFFFFF00,
1774a90b4a6SSergey Makeev 			YellowGreen = 0xFF9ACD32,
1784a90b4a6SSergey Makeev 		};
179*6e90b535Ss.makeev_local 
ConvertToABGR(Color::Type _color)180*6e90b535Ss.makeev_local 		inline uint32 ConvertToABGR(Color::Type _color)
181*6e90b535Ss.makeev_local 		{
182*6e90b535Ss.makeev_local 			uint32 color = _color;
183*6e90b535Ss.makeev_local 
184*6e90b535Ss.makeev_local 			uint8 r = (color >> 16) & 0xFF;
185*6e90b535Ss.makeev_local 			uint8 b = (color) & 0xFF;
186*6e90b535Ss.makeev_local 
187*6e90b535Ss.makeev_local 			uint32 result = (color & 0xFF00FF00);
188*6e90b535Ss.makeev_local 			result |= r;
189*6e90b535Ss.makeev_local 			result |= (b << 16);
190*6e90b535Ss.makeev_local 
191*6e90b535Ss.makeev_local 			return result;
192*6e90b535Ss.makeev_local 		}
193*6e90b535Ss.makeev_local 
194*6e90b535Ss.makeev_local 	}
1954a90b4a6SSergey Makeev 
1964a90b4a6SSergey Makeev }