2
0
Daniele Bartolini 10 жил өмнө
parent
commit
b09cd30cc9
2 өөрчлөгдсөн 198 нэмэгдсэн , 491 устгасан
  1. 0 160
      src/core/math/color4.cpp
  2. 198 331
      src/core/math/color4.h

+ 0 - 160
src/core/math/color4.cpp

@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2012-2015 Daniele Bartolini and individual contributors.
- * License: https://github.com/taylor001/crown/blob/master/LICENSE
- */
-
-#include "color4.h"
-
-namespace crown
-{
-
-const Color4 Color4::ALICEBLUE				= Color4(0XF0F8FFFF);
-const Color4 Color4::ANTIQUEWHITE			= Color4(0XFAEBD7FF);
-const Color4 Color4::AQUA					= Color4(0X00FFFFFF);
-const Color4 Color4::AQUAMARINE				= Color4(0X7FFFD4FF);
-const Color4 Color4::AZURE					= Color4(0XF0FFFFFF);
-const Color4 Color4::BEIGE					= Color4(0XF5F5DCFF);
-const Color4 Color4::BISQUE					= Color4(0XFFE4C4FF);
-const Color4 Color4::BLACK					= Color4(0X000000FF);
-const Color4 Color4::BLANCHEDALMOND			= Color4(0XFFEBCDFF);
-const Color4 Color4::BLUE					= Color4(0X0000FFFF);
-const Color4 Color4::BLUEVIOLET				= Color4(0X8A2BE2FF);
-const Color4 Color4::BROWN					= Color4(0XA52A2AFF);
-const Color4 Color4::BURLYWOOD				= Color4(0XDEB887FF);
-const Color4 Color4::CADETBLUE				= Color4(0X5F9EA0FF);
-const Color4 Color4::CHARTREUSE				= Color4(0X7FFF00FF);
-const Color4 Color4::CHOCOLATE				= Color4(0XD2691EFF);
-const Color4 Color4::CORAL					= Color4(0XFF7F50FF);
-const Color4 Color4::CORNFLOWERBLUE			= Color4(0X6495EDFF);
-const Color4 Color4::CORNSILK				= Color4(0XFFF8DCFF);
-const Color4 Color4::CRIMSON				= Color4(0XDC143CFF);
-const Color4 Color4::CYAN					= Color4(0X00FFFFFF);
-const Color4 Color4::DARKBLUE				= Color4(0X00008BFF);
-const Color4 Color4::DARKCYAN				= Color4(0X008B8BFF);
-const Color4 Color4::DARKGOLDENROD			= Color4(0XB8860BFF);
-const Color4 Color4::DARKGRAY				= Color4(0XA9A9A9FF);
-const Color4 Color4::DARKGREEN				= Color4(0X006400FF);
-const Color4 Color4::DARKGREY				= Color4(0XA9A9A9FF);
-const Color4 Color4::DARKKHAKI				= Color4(0XBDB76BFF);
-const Color4 Color4::DARKMAGENTA			= Color4(0X8B008BFF);
-const Color4 Color4::DARKOLIVEGREEN			= Color4(0X556B2FFF);
-const Color4 Color4::DARKORANGE				= Color4(0XFF8C00FF);
-const Color4 Color4::DARKORCHID				= Color4(0X9932CCFF);
-const Color4 Color4::DARKRED				= Color4(0X8B0000FF);
-const Color4 Color4::DARKSALMON				= Color4(0XE9967AFF);
-const Color4 Color4::DARKSEAGREEN			= Color4(0X8FBC8FFF);
-const Color4 Color4::DARKSLATEBLUE			= Color4(0X483D8BFF);
-const Color4 Color4::DARKSLATEGRAY			= Color4(0X2F4F4FFF);
-const Color4 Color4::DARKSLATEGREY			= Color4(0X2F4F4FFF);
-const Color4 Color4::DARKTURQUOISE			= Color4(0X00CED1FF);
-const Color4 Color4::DARKVIOLET				= Color4(0X9400D3FF);
-const Color4 Color4::DEEPPINK				= Color4(0XFF1493FF);
-const Color4 Color4::DEEPSKYBLUE			= Color4(0X00BFFFFF);
-const Color4 Color4::DIMGRAY				= Color4(0X696969FF);
-const Color4 Color4::DIMGREY				= Color4(0X696969FF);
-const Color4 Color4::DODGERBLUE				= Color4(0X1E90FFFF);
-const Color4 Color4::FIREBRICK				= Color4(0XB22222FF);
-const Color4 Color4::FLORALWHITE			= Color4(0XFFFAF0FF);
-const Color4 Color4::FORESTGREEN			= Color4(0X228B22FF);
-const Color4 Color4::FUCHSIA				= Color4(0XFF00FFFF);
-const Color4 Color4::GAINSBORO				= Color4(0XDCDCDCFF);
-const Color4 Color4::GHOSTWHITE				= Color4(0XF8F8FFFF);
-const Color4 Color4::GOLD					= Color4(0XFFD700FF);
-const Color4 Color4::GOLDENROD				= Color4(0XDAA520FF);
-const Color4 Color4::GRAY					= Color4(0X808080FF);
-const Color4 Color4::GREEN					= Color4(0X008000FF);
-const Color4 Color4::GREENYELLOW			= Color4(0XADFF2FFF);
-const Color4 Color4::GREY					= Color4(0X808080FF);
-const Color4 Color4::HONEYDEW				= Color4(0XF0FFF0FF);
-const Color4 Color4::HOTPINK				= Color4(0XFF69B4FF);
-const Color4 Color4::INDIANRED				= Color4(0XCD5C5CFF);
-const Color4 Color4::INDIGO					= Color4(0X4B0082FF);
-const Color4 Color4::IVORY					= Color4(0XFFFFF0FF);
-const Color4 Color4::KHAKI					= Color4(0XF0E68CFF);
-const Color4 Color4::LAVENDER				= Color4(0XE6E6FAFF);
-const Color4 Color4::LAVENDERBLUSH			= Color4(0XFFF0F5FF);
-const Color4 Color4::LAWNGREEN				= Color4(0X7CFC00FF);
-const Color4 Color4::LEMONCHIFFON			= Color4(0XFFFACDFF);
-const Color4 Color4::LIGHTBLUE				= Color4(0XADD8E6FF);
-const Color4 Color4::LIGHTCORAL				= Color4(0XF08080FF);
-const Color4 Color4::LIGHTCYAN				= Color4(0XE0FFFFFF);
-const Color4 Color4::LIGHTGOLDENRODYELLOW	= Color4(0XFAFAD2FF);
-const Color4 Color4::LIGHTGRAY				= Color4(0XD3D3D3FF);
-const Color4 Color4::LIGHTGREEN				= Color4(0X90EE90FF);
-const Color4 Color4::LIGHTGREY				= Color4(0XD3D3D3FF);
-const Color4 Color4::LIGHTPINK				= Color4(0XFFB6C1FF);
-const Color4 Color4::LIGHTSALMON			= Color4(0XFFA07AFF);
-const Color4 Color4::LIGHTSEAGREEN			= Color4(0X20B2AAFF);
-const Color4 Color4::LIGHTSKYBLUE			= Color4(0X87CEFAFF);
-const Color4 Color4::LIGHTSLATEGRAY			= Color4(0X778899FF);
-const Color4 Color4::LIGHTSLATEGREY			= Color4(0X778899FF);
-const Color4 Color4::LIGHTSTEELBLUE			= Color4(0XB0C4DEFF);
-const Color4 Color4::LIGHTYELLOW			= Color4(0XFFFFE0FF);
-const Color4 Color4::LIME					= Color4(0X00FF00FF);
-const Color4 Color4::LIMEGREEN				= Color4(0X32CD32FF);
-const Color4 Color4::LINEN					= Color4(0XFAF0E6FF);
-const Color4 Color4::MAGENTA				= Color4(0XFF00FFFF);
-const Color4 Color4::MAROON					= Color4(0X800000FF);
-const Color4 Color4::MEDIUMAQUAMARINE		= Color4(0X66CDAAFF);
-const Color4 Color4::MEDIUMBLUE				= Color4(0X0000CDFF);
-const Color4 Color4::MEDIUMORCHID			= Color4(0XBA55D3FF);
-const Color4 Color4::MEDIUMPURPLE			= Color4(0X9370DBFF);
-const Color4 Color4::MEDIUMSEAGREEN			= Color4(0X3CB371FF);
-const Color4 Color4::MEDIUMSLATEBLUE		= Color4(0X7B68EEFF);
-const Color4 Color4::MEDIUMSPRINGGREEN		= Color4(0X00FA9AFF);
-const Color4 Color4::MEDIUMTURQUOISE		= Color4(0X48D1CCFF);
-const Color4 Color4::MEDIUMVIOLETRED		= Color4(0XC71585FF);
-const Color4 Color4::MIDNIGHTBLUE			= Color4(0X191970FF);
-const Color4 Color4::MINTCREAM				= Color4(0XF5FFFAFF);
-const Color4 Color4::MISTYROSE				= Color4(0XFFE4E1FF);
-const Color4 Color4::MOCCASIN				= Color4(0XFFE4B5FF);
-const Color4 Color4::NAVAJOWHITE			= Color4(0XFFDEADFF);
-const Color4 Color4::NAVY					= Color4(0X000080FF);
-const Color4 Color4::OLDLACE				= Color4(0XFDF5E6FF);
-const Color4 Color4::OLIVE					= Color4(0X808000FF);
-const Color4 Color4::OLIVEDRAB				= Color4(0X6B8E23FF);
-const Color4 Color4::ORANGE					= Color4(0XFFA500FF);
-const Color4 Color4::ORANGERED				= Color4(0XFF4500FF);
-const Color4 Color4::ORCHID					= Color4(0XDA70D6FF);
-const Color4 Color4::PALEGOLDENROD			= Color4(0XEEE8AAFF);
-const Color4 Color4::PALEGREEN				= Color4(0X98FB98FF);
-const Color4 Color4::PALETURQUOISE			= Color4(0XAFEEEEFF);
-const Color4 Color4::PALEVIOLETRED			= Color4(0XDB7093FF);
-const Color4 Color4::PAPAYAWHIP				= Color4(0XFFEFD5FF);
-const Color4 Color4::PEACHPUFF				= Color4(0XFFDAB9FF);
-const Color4 Color4::PERU					= Color4(0XCD853FFF);
-const Color4 Color4::PINK					= Color4(0XFFC0CBFF);
-const Color4 Color4::PLUM					= Color4(0XDDA0DDFF);
-const Color4 Color4::POWDERBLUE				= Color4(0XB0E0E6FF);
-const Color4 Color4::PURPLE					= Color4(0X800080FF);
-const Color4 Color4::RED					= Color4(0XFF0000FF);
-const Color4 Color4::ROSYBROWN				= Color4(0XBC8F8FFF);
-const Color4 Color4::ROYALBLUE				= Color4(0X4169E1FF);
-const Color4 Color4::SADDLEBROWN			= Color4(0X8B4513FF);
-const Color4 Color4::SALMON					= Color4(0XFA8072FF);
-const Color4 Color4::SANDYBROWN				= Color4(0XF4A460FF);
-const Color4 Color4::SEAGREEN				= Color4(0X2E8B57FF);
-const Color4 Color4::SEASHELL				= Color4(0XFFF5EEFF);
-const Color4 Color4::SIENNA					= Color4(0XA0522DFF);
-const Color4 Color4::SILVER					= Color4(0XC0C0C0FF);
-const Color4 Color4::SKYBLUE				= Color4(0X87CEEBFF);
-const Color4 Color4::SLATEBLUE				= Color4(0X6A5ACDFF);
-const Color4 Color4::SLATEGRAY				= Color4(0X708090FF);
-const Color4 Color4::SLATEGREY				= Color4(0X708090FF);
-const Color4 Color4::SNOW					= Color4(0XFFFAFAFF);
-const Color4 Color4::SPRINGGREEN			= Color4(0X00FF7FFF);
-const Color4 Color4::STEELBLUE				= Color4(0X4682B4FF);
-const Color4 Color4::TAN					= Color4(0XD2B48CFF);
-const Color4 Color4::TEAL					= Color4(0X008080FF);
-const Color4 Color4::THISTLE				= Color4(0XD8BFD8FF);
-const Color4 Color4::TOMATO					= Color4(0XFF6347FF);
-const Color4 Color4::TURQUOISE				= Color4(0X40E0D0FF);
-const Color4 Color4::VIOLET					= Color4(0XEE82EEFF);
-const Color4 Color4::WHEAT					= Color4(0XF5DEB3FF);
-const Color4 Color4::WHITE					= Color4(0XFFFFFFFF);
-const Color4 Color4::WHITESMOKE				= Color4(0XF5F5F5FF);
-const Color4 Color4::YELLOW					= Color4(0XFFFF00FF);
-const Color4 Color4::YELLOWGREEN			= Color4(0X9ACD32FF);
-
-} //namespace crown
-

+ 198 - 331
src/core/math/color4.h

@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "types.h"
+#include "math_types.h"
 
 namespace crown
 {
@@ -13,213 +13,17 @@ namespace crown
 /// Holds RGBA color as four floats.
 ///
 /// @ingroup Math
-struct Color4
-{
-	Color4();
-	Color4(float r, float g, float b);
-	Color4(int r, int g, int b);
-	Color4(float r, float g, float b, float a);
-	Color4(int r, int g, int b, int a);
-	explicit Color4(float c[4]);
-
-	/// Construct from 32-bit integer (red at MSB, alpha at LSB)
-	explicit Color4(uint32_t rgba);
-
-	float& operator[](uint32_t i);
-	const float& operator[](uint32_t i) const;
-
-	Color4& operator+=(const Color4& c);
-	Color4& operator-=(const Color4& c);
-	Color4& operator*=(const Color4& c);
-	Color4& operator*=(float k);
-
-	// SVG 1.0 color names
-	static const Color4 ALICEBLUE;
-	static const Color4 ANTIQUEWHITE;
-	static const Color4 AQUA;
-	static const Color4 AQUAMARINE;
-	static const Color4 AZURE;
-	static const Color4 BEIGE;
-	static const Color4 BISQUE;
-	static const Color4 BLACK;
-	static const Color4 BLANCHEDALMOND;
-	static const Color4 BLUE;
-	static const Color4 BLUEVIOLET;
-	static const Color4 BROWN;
-	static const Color4 BURLYWOOD;
-	static const Color4 CADETBLUE;
-	static const Color4 CHARTREUSE;
-	static const Color4 CHOCOLATE;
-	static const Color4 CORAL;
-	static const Color4 CORNFLOWERBLUE;
-	static const Color4 CORNSILK;
-	static const Color4 CRIMSON;
-	static const Color4 CYAN;
-	static const Color4 DARKBLUE;
-	static const Color4 DARKCYAN;
-	static const Color4 DARKGOLDENROD;
-	static const Color4 DARKGRAY;
-	static const Color4 DARKGREEN;
-	static const Color4 DARKGREY;
-	static const Color4 DARKKHAKI;
-	static const Color4 DARKMAGENTA;
-	static const Color4 DARKOLIVEGREEN;
-	static const Color4 DARKORANGE;
-	static const Color4 DARKORCHID;
-	static const Color4 DARKRED;
-	static const Color4 DARKSALMON;
-	static const Color4 DARKSEAGREEN;
-	static const Color4 DARKSLATEBLUE;
-	static const Color4 DARKSLATEGRAY;
-	static const Color4 DARKSLATEGREY;
-	static const Color4 DARKTURQUOISE;
-	static const Color4 DARKVIOLET;
-	static const Color4 DEEPPINK;
-	static const Color4 DEEPSKYBLUE;
-	static const Color4 DIMGRAY;
-	static const Color4 DIMGREY;
-	static const Color4 DODGERBLUE;
-	static const Color4 FIREBRICK;
-	static const Color4 FLORALWHITE;
-	static const Color4 FORESTGREEN;
-	static const Color4 FUCHSIA;
-	static const Color4 GAINSBORO;
-	static const Color4 GHOSTWHITE;
-	static const Color4 GOLD;
-	static const Color4 GOLDENROD;
-	static const Color4 GRAY;
-	static const Color4 GREEN;
-	static const Color4 GREENYELLOW;
-	static const Color4 GREY;
-	static const Color4 HONEYDEW;
-	static const Color4 HOTPINK;
-	static const Color4 INDIANRED;
-	static const Color4 INDIGO;
-	static const Color4 IVORY;
-	static const Color4 KHAKI;
-	static const Color4 LAVENDER;
-	static const Color4 LAVENDERBLUSH;
-	static const Color4 LAWNGREEN;
-	static const Color4 LEMONCHIFFON;
-	static const Color4 LIGHTBLUE;
-	static const Color4 LIGHTCORAL;
-	static const Color4 LIGHTCYAN;
-	static const Color4 LIGHTGOLDENRODYELLOW;
-	static const Color4 LIGHTGRAY;
-	static const Color4 LIGHTGREEN;
-	static const Color4 LIGHTGREY;
-	static const Color4 LIGHTPINK;
-	static const Color4 LIGHTSALMON;
-	static const Color4 LIGHTSEAGREEN;
-	static const Color4 LIGHTSKYBLUE;
-	static const Color4 LIGHTSLATEGRAY;
-	static const Color4 LIGHTSLATEGREY;
-	static const Color4 LIGHTSTEELBLUE;
-	static const Color4 LIGHTYELLOW;
-	static const Color4 LIME;
-	static const Color4 LIMEGREEN;
-	static const Color4 LINEN;
-	static const Color4 MAGENTA;
-	static const Color4 MAROON;
-	static const Color4 MEDIUMAQUAMARINE;
-	static const Color4 MEDIUMBLUE;
-	static const Color4 MEDIUMORCHID;
-	static const Color4 MEDIUMPURPLE;
-	static const Color4 MEDIUMSEAGREEN;
-	static const Color4 MEDIUMSLATEBLUE;
-	static const Color4 MEDIUMSPRINGGREEN;
-	static const Color4 MEDIUMTURQUOISE;
-	static const Color4 MEDIUMVIOLETRED;
-	static const Color4 MIDNIGHTBLUE;
-	static const Color4 MINTCREAM;
-	static const Color4 MISTYROSE;
-	static const Color4 MOCCASIN;
-	static const Color4 NAVAJOWHITE;
-	static const Color4 NAVY;
-	static const Color4 OLDLACE;
-	static const Color4 OLIVE;
-	static const Color4 OLIVEDRAB;
-	static const Color4 ORANGE;
-	static const Color4 ORANGERED;
-	static const Color4 ORCHID;
-	static const Color4 PALEGOLDENROD;
-	static const Color4 PALEGREEN;
-	static const Color4 PALETURQUOISE;
-	static const Color4 PALEVIOLETRED;
-	static const Color4 PAPAYAWHIP;
-	static const Color4 PEACHPUFF;
-	static const Color4 PERU;
-	static const Color4 PINK;
-	static const Color4 PLUM;
-	static const Color4 POWDERBLUE;
-	static const Color4 PURPLE;
-	static const Color4 RED;
-	static const Color4 ROSYBROWN;
-	static const Color4 ROYALBLUE;
-	static const Color4 SADDLEBROWN;
-	static const Color4 SALMON;
-	static const Color4 SANDYBROWN;
-	static const Color4 SEAGREEN;
-	static const Color4 SEASHELL;
-	static const Color4 SIENNA;
-	static const Color4 SILVER;
-	static const Color4 SKYBLUE;
-	static const Color4 SLATEBLUE;
-	static const Color4 SLATEGRAY;
-	static const Color4 SLATEGREY;
-	static const Color4 SNOW;
-	static const Color4 SPRINGGREEN;
-	static const Color4 STEELBLUE;
-	static const Color4 TAN;
-	static const Color4 TEAL;
-	static const Color4 THISTLE;
-	static const Color4 TOMATO;
-	static const Color4 TURQUOISE;
-	static const Color4 VIOLET;
-	static const Color4 WHEAT;
-	static const Color4 WHITE;
-	static const Color4 WHITESMOKE;
-	static const Color4 YELLOW;
-	static const Color4 YELLOWGREEN;
-
-	float r, g, b, a;
-};
-
-inline Color4 operator+(Color4 a, const Color4& b)
-{
-	a += b;
-	return a;
-}
-
-inline Color4 operator-(Color4 a, const Color4& b)
-{
-	a -= b;
-	return a;
-}
-
-inline Color4 operator*(Color4 a, const Color4& b)
-{
-	a *= b;
-	return a;
-}
-
-inline Color4 operator*(Color4 a, float k)
-{
-	a *= k;
-	return a;
-}
-
-inline Color4 operator*(float k, Color4 a)
-{
-	a *= k;
-	return a;
-}
+typedef Vector4 Color4;
 
 /// Functions to mamipulate Color4
 ///
 /// @ingroup Math
 namespace color4
 {
+	Color4 from_rgb(int r, int g, int b);
+	Color4 from_rgba(int r, int g, int b, int a);
+	Color4 from_rgba(uint32_t rgba);
+
 	/// Returns the color as a packed 32-bit integer. (RGBA order, alpha assumed = 255)
 	uint32_t to_rgb(const Color4& c);
 
@@ -231,23 +35,196 @@ namespace color4
 
 	/// Returns the color as a packed 32-bit integer. (ABGR order)
 	uint32_t to_abgr(const Color4& c);
+} // namespace color4
 
-	/// Returns the pointer to the color's data.
-	float* to_float_ptr(Color4& c);
-
-	/// Returns the pointer to the color's data.
-	const float* to_float_ptr(const Color4& c);
+namespace color4
+{
+	// SVG 1.0 color names
+	const Color4 ALICEBLUE            = from_rgba(0XF0F8FFFF);
+	const Color4 ANTIQUEWHITE         = from_rgba(0XFAEBD7FF);
+	const Color4 AQUA                 = from_rgba(0X00FFFFFF);
+	const Color4 AQUAMARINE           = from_rgba(0X7FFFD4FF);
+	const Color4 AZURE                = from_rgba(0XF0FFFFFF);
+	const Color4 BEIGE                = from_rgba(0XF5F5DCFF);
+	const Color4 BISQUE               = from_rgba(0XFFE4C4FF);
+	const Color4 BLACK                = from_rgba(0X000000FF);
+	const Color4 BLANCHEDALMOND       = from_rgba(0XFFEBCDFF);
+	const Color4 BLUE                 = from_rgba(0X0000FFFF);
+	const Color4 BLUEVIOLET           = from_rgba(0X8A2BE2FF);
+	const Color4 BROWN                = from_rgba(0XA52A2AFF);
+	const Color4 BURLYWOOD            = from_rgba(0XDEB887FF);
+	const Color4 CADETBLUE            = from_rgba(0X5F9EA0FF);
+	const Color4 CHARTREUSE           = from_rgba(0X7FFF00FF);
+	const Color4 CHOCOLATE            = from_rgba(0XD2691EFF);
+	const Color4 CORAL                = from_rgba(0XFF7F50FF);
+	const Color4 CORNFLOWERBLUE       = from_rgba(0X6495EDFF);
+	const Color4 CORNSILK             = from_rgba(0XFFF8DCFF);
+	const Color4 CRIMSON              = from_rgba(0XDC143CFF);
+	const Color4 CYAN                 = from_rgba(0X00FFFFFF);
+	const Color4 DARKBLUE             = from_rgba(0X00008BFF);
+	const Color4 DARKCYAN             = from_rgba(0X008B8BFF);
+	const Color4 DARKGOLDENROD        = from_rgba(0XB8860BFF);
+	const Color4 DARKGRAY             = from_rgba(0XA9A9A9FF);
+	const Color4 DARKGREEN            = from_rgba(0X006400FF);
+	const Color4 DARKGREY             = from_rgba(0XA9A9A9FF);
+	const Color4 DARKKHAKI            = from_rgba(0XBDB76BFF);
+	const Color4 DARKMAGENTA          = from_rgba(0X8B008BFF);
+	const Color4 DARKOLIVEGREEN       = from_rgba(0X556B2FFF);
+	const Color4 DARKORANGE           = from_rgba(0XFF8C00FF);
+	const Color4 DARKORCHID           = from_rgba(0X9932CCFF);
+	const Color4 DARKRED              = from_rgba(0X8B0000FF);
+	const Color4 DARKSALMON           = from_rgba(0XE9967AFF);
+	const Color4 DARKSEAGREEN         = from_rgba(0X8FBC8FFF);
+	const Color4 DARKSLATEBLUE        = from_rgba(0X483D8BFF);
+	const Color4 DARKSLATEGRAY        = from_rgba(0X2F4F4FFF);
+	const Color4 DARKSLATEGREY        = from_rgba(0X2F4F4FFF);
+	const Color4 DARKTURQUOISE        = from_rgba(0X00CED1FF);
+	const Color4 DARKVIOLET           = from_rgba(0X9400D3FF);
+	const Color4 DEEPPINK             = from_rgba(0XFF1493FF);
+	const Color4 DEEPSKYBLUE          = from_rgba(0X00BFFFFF);
+	const Color4 DIMGRAY              = from_rgba(0X696969FF);
+	const Color4 DIMGREY              = from_rgba(0X696969FF);
+	const Color4 DODGERBLUE           = from_rgba(0X1E90FFFF);
+	const Color4 FIREBRICK            = from_rgba(0XB22222FF);
+	const Color4 FLORALWHITE          = from_rgba(0XFFFAF0FF);
+	const Color4 FORESTGREEN          = from_rgba(0X228B22FF);
+	const Color4 FUCHSIA              = from_rgba(0XFF00FFFF);
+	const Color4 GAINSBORO            = from_rgba(0XDCDCDCFF);
+	const Color4 GHOSTWHITE           = from_rgba(0XF8F8FFFF);
+	const Color4 GOLD                 = from_rgba(0XFFD700FF);
+	const Color4 GOLDENROD            = from_rgba(0XDAA520FF);
+	const Color4 GRAY                 = from_rgba(0X808080FF);
+	const Color4 GREEN                = from_rgba(0X008000FF);
+	const Color4 GREENYELLOW          = from_rgba(0XADFF2FFF);
+	const Color4 GREY                 = from_rgba(0X808080FF);
+	const Color4 HONEYDEW             = from_rgba(0XF0FFF0FF);
+	const Color4 HOTPINK              = from_rgba(0XFF69B4FF);
+	const Color4 INDIANRED            = from_rgba(0XCD5C5CFF);
+	const Color4 INDIGO               = from_rgba(0X4B0082FF);
+	const Color4 IVORY                = from_rgba(0XFFFFF0FF);
+	const Color4 KHAKI                = from_rgba(0XF0E68CFF);
+	const Color4 LAVENDER             = from_rgba(0XE6E6FAFF);
+	const Color4 LAVENDERBLUSH        = from_rgba(0XFFF0F5FF);
+	const Color4 LAWNGREEN            = from_rgba(0X7CFC00FF);
+	const Color4 LEMONCHIFFON         = from_rgba(0XFFFACDFF);
+	const Color4 LIGHTBLUE            = from_rgba(0XADD8E6FF);
+	const Color4 LIGHTCORAL           = from_rgba(0XF08080FF);
+	const Color4 LIGHTCYAN            = from_rgba(0XE0FFFFFF);
+	const Color4 LIGHTGOLDENRODYELLOW = from_rgba(0XFAFAD2FF);
+	const Color4 LIGHTGRAY            = from_rgba(0XD3D3D3FF);
+	const Color4 LIGHTGREEN           = from_rgba(0X90EE90FF);
+	const Color4 LIGHTGREY            = from_rgba(0XD3D3D3FF);
+	const Color4 LIGHTPINK            = from_rgba(0XFFB6C1FF);
+	const Color4 LIGHTSALMON          = from_rgba(0XFFA07AFF);
+	const Color4 LIGHTSEAGREEN        = from_rgba(0X20B2AAFF);
+	const Color4 LIGHTSKYBLUE         = from_rgba(0X87CEFAFF);
+	const Color4 LIGHTSLATEGRAY       = from_rgba(0X778899FF);
+	const Color4 LIGHTSLATEGREY       = from_rgba(0X778899FF);
+	const Color4 LIGHTSTEELBLUE       = from_rgba(0XB0C4DEFF);
+	const Color4 LIGHTYELLOW          = from_rgba(0XFFFFE0FF);
+	const Color4 LIME                 = from_rgba(0X00FF00FF);
+	const Color4 LIMEGREEN            = from_rgba(0X32CD32FF);
+	const Color4 LINEN                = from_rgba(0XFAF0E6FF);
+	const Color4 MAGENTA              = from_rgba(0XFF00FFFF);
+	const Color4 MAROON               = from_rgba(0X800000FF);
+	const Color4 MEDIUMAQUAMARINE     = from_rgba(0X66CDAAFF);
+	const Color4 MEDIUMBLUE           = from_rgba(0X0000CDFF);
+	const Color4 MEDIUMORCHID         = from_rgba(0XBA55D3FF);
+	const Color4 MEDIUMPURPLE         = from_rgba(0X9370DBFF);
+	const Color4 MEDIUMSEAGREEN       = from_rgba(0X3CB371FF);
+	const Color4 MEDIUMSLATEBLUE      = from_rgba(0X7B68EEFF);
+	const Color4 MEDIUMSPRINGGREEN    = from_rgba(0X00FA9AFF);
+	const Color4 MEDIUMTURQUOISE      = from_rgba(0X48D1CCFF);
+	const Color4 MEDIUMVIOLETRED      = from_rgba(0XC71585FF);
+	const Color4 MIDNIGHTBLUE         = from_rgba(0X191970FF);
+	const Color4 MINTCREAM            = from_rgba(0XF5FFFAFF);
+	const Color4 MISTYROSE            = from_rgba(0XFFE4E1FF);
+	const Color4 MOCCASIN             = from_rgba(0XFFE4B5FF);
+	const Color4 NAVAJOWHITE          = from_rgba(0XFFDEADFF);
+	const Color4 NAVY                 = from_rgba(0X000080FF);
+	const Color4 OLDLACE              = from_rgba(0XFDF5E6FF);
+	const Color4 OLIVE                = from_rgba(0X808000FF);
+	const Color4 OLIVEDRAB            = from_rgba(0X6B8E23FF);
+	const Color4 ORANGE               = from_rgba(0XFFA500FF);
+	const Color4 ORANGERED            = from_rgba(0XFF4500FF);
+	const Color4 ORCHID               = from_rgba(0XDA70D6FF);
+	const Color4 PALEGOLDENROD        = from_rgba(0XEEE8AAFF);
+	const Color4 PALEGREEN            = from_rgba(0X98FB98FF);
+	const Color4 PALETURQUOISE        = from_rgba(0XAFEEEEFF);
+	const Color4 PALEVIOLETRED        = from_rgba(0XDB7093FF);
+	const Color4 PAPAYAWHIP           = from_rgba(0XFFEFD5FF);
+	const Color4 PEACHPUFF            = from_rgba(0XFFDAB9FF);
+	const Color4 PERU                 = from_rgba(0XCD853FFF);
+	const Color4 PINK                 = from_rgba(0XFFC0CBFF);
+	const Color4 PLUM                 = from_rgba(0XDDA0DDFF);
+	const Color4 POWDERBLUE           = from_rgba(0XB0E0E6FF);
+	const Color4 PURPLE               = from_rgba(0X800080FF);
+	const Color4 RED                  = from_rgba(0XFF0000FF);
+	const Color4 ROSYBROWN            = from_rgba(0XBC8F8FFF);
+	const Color4 ROYALBLUE            = from_rgba(0X4169E1FF);
+	const Color4 SADDLEBROWN          = from_rgba(0X8B4513FF);
+	const Color4 SALMON               = from_rgba(0XFA8072FF);
+	const Color4 SANDYBROWN           = from_rgba(0XF4A460FF);
+	const Color4 SEAGREEN             = from_rgba(0X2E8B57FF);
+	const Color4 SEASHELL             = from_rgba(0XFFF5EEFF);
+	const Color4 SIENNA               = from_rgba(0XA0522DFF);
+	const Color4 SILVER               = from_rgba(0XC0C0C0FF);
+	const Color4 SKYBLUE              = from_rgba(0X87CEEBFF);
+	const Color4 SLATEBLUE            = from_rgba(0X6A5ACDFF);
+	const Color4 SLATEGRAY            = from_rgba(0X708090FF);
+	const Color4 SLATEGREY            = from_rgba(0X708090FF);
+	const Color4 SNOW                 = from_rgba(0XFFFAFAFF);
+	const Color4 SPRINGGREEN          = from_rgba(0X00FF7FFF);
+	const Color4 STEELBLUE            = from_rgba(0X4682B4FF);
+	const Color4 TAN                  = from_rgba(0XD2B48CFF);
+	const Color4 TEAL                 = from_rgba(0X008080FF);
+	const Color4 THISTLE              = from_rgba(0XD8BFD8FF);
+	const Color4 TOMATO               = from_rgba(0XFF6347FF);
+	const Color4 TURQUOISE            = from_rgba(0X40E0D0FF);
+	const Color4 VIOLET               = from_rgba(0XEE82EEFF);
+	const Color4 WHEAT                = from_rgba(0XF5DEB3FF);
+	const Color4 WHITE                = from_rgba(0XFFFFFFFF);
+	const Color4 WHITESMOKE           = from_rgba(0XF5F5F5FF);
+	const Color4 YELLOW               = from_rgba(0XFFFF00FF);
+	const Color4 YELLOWGREEN          = from_rgba(0X9ACD32FF);
 } // namespace color4
 
 namespace color4
 {
+	inline Color4 from_rgb(int r, int g, int b)
+	{
+		return Color4(r * 1.0f/255.0f
+			, g * 1.0f/255.0f
+			, b * 1.0f/255.0f
+			, 1.0f
+		);
+	}
+
+	inline Color4 from_rgba(int r, int g, int b, int a)
+	{
+		return Color4(r * 1.0f/255.0f
+			, g * 1.0f/255.0f
+			, b * 1.0f/255.0f
+			, a * 1.0f/255.0f
+		);
+	}
+
+	inline Color4 from_rgba(uint32_t rgba)
+	{
+		return Color4(1.0f/255.0f * ((rgba & 0xFF000000) >> 24)
+			, 1.0f/255.0f * ((rgba & 0x00FF0000) >> 16)
+			, 1.0f/255.0f * ((rgba & 0x0000FF00) >> 8)
+			, 1.0f/255.0f * ((rgba & 0x000000FF) >> 0)
+		);
+	}
+
 	inline uint32_t to_rgb(const Color4& c)
 	{
 		uint32_t rgba;
 
-		rgba =	(uint32_t)(255.0f * c.r) << 24;
-		rgba |= (uint32_t)(255.0f * c.g) << 16;
-		rgba |= (uint32_t)(255.0f * c.b) << 8;
+		rgba =	(uint32_t)(255.0f * c.x) << 24;
+		rgba |= (uint32_t)(255.0f * c.y) << 16;
+		rgba |= (uint32_t)(255.0f * c.z) << 8;
 		rgba |= 255;
 
 		return rgba;
@@ -258,9 +235,9 @@ namespace color4
 		uint32_t abgr;
 
 		abgr =	255 << 24;
-		abgr |= (uint32_t)(255.0f * c.b) << 16;
-		abgr |= (uint32_t)(255.0f * c.g) << 8;
-		abgr |= (uint32_t)(255.0f * c.r);
+		abgr |= (uint32_t)(255.0f * c.z) << 16;
+		abgr |= (uint32_t)(255.0f * c.y) << 8;
+		abgr |= (uint32_t)(255.0f * c.x);
 
 		return abgr;
 	}
@@ -269,10 +246,10 @@ namespace color4
 	{
 		uint32_t rgba;
 
-		rgba =	(uint32_t)(255.0f * c.r) << 24;
-		rgba |= (uint32_t)(255.0f * c.g) << 16;
-		rgba |= (uint32_t)(255.0f * c.b) << 8;
-		rgba |= (uint32_t)(255.0f * c.a);
+		rgba =	(uint32_t)(255.0f * c.x) << 24;
+		rgba |= (uint32_t)(255.0f * c.y) << 16;
+		rgba |= (uint32_t)(255.0f * c.z) << 8;
+		rgba |= (uint32_t)(255.0f * c.w);
 
 		return rgba;
 	}
@@ -281,123 +258,13 @@ namespace color4
 	{
 		uint32_t abgr;
 
-		abgr =	(uint32_t)(255.0f * c.a) << 24;
-		abgr |= (uint32_t)(255.0f * c.b) << 16;
-		abgr |= (uint32_t)(255.0f * c.g) << 8;
-		abgr |= (uint32_t)(255.0f * c.r);
+		abgr =	(uint32_t)(255.0f * c.w) << 24;
+		abgr |= (uint32_t)(255.0f * c.z) << 16;
+		abgr |= (uint32_t)(255.0f * c.y) << 8;
+		abgr |= (uint32_t)(255.0f * c.x);
 
 		return abgr;
 	}
-
-	inline float* to_float_ptr(Color4& c)
-	{
-		return &c.r;
-	}
-
-	inline const float* to_float_ptr(const Color4& c)
-	{
-		return &c.r;
-	}
 } // namespace color4
 
-inline Color4::Color4()
-{
-	// Do not initialize
-}
-
-inline Color4::Color4(float r, float g, float b)
-	: r(r), g(g), b(b), a(1)
-{
-}
-
-inline Color4::Color4(int r, int g, int b)
-	: r(r * float(1.0/255.0))
-	, g(g * float(1.0/255.0))
-	, b(b * float(1.0/255.0))
-	, a(1)
-{
-}
-
-inline Color4::Color4(float r, float g, float b, float a)
-{
-	this->r = r;
-	this->g = g;
-	this->b = b;
-	this->a = a;
-}
-
-inline Color4::Color4(int r, int g, int b, int a)
-	: r(r * float(1.0/255.0))
-	, g(g * float(1.0/255.0))
-	, b(b * float(1.0/255.0))
-	, a(a * float(1.0/255.0))
-{
-}
-
-inline Color4::Color4(float c[4])
-	: r(c[0])
-	, g(c[1])
-	, b(c[2])
-	, a(c[3])
-{
-}
-
-inline Color4::Color4(uint32_t rgba)
-	: r(float(1.0/255.0) * ((rgba & 0xFF000000) >> 24))
-	, g(float(1.0/255.0) * ((rgba & 0x00FF0000) >> 16))
-	, b(float(1.0/255.0) * ((rgba & 0x0000FF00) >> 8))
-	, a(float(1.0/255.0) * (rgba & 0x000000FF))
-{
-}
-
-inline float& Color4::operator[](uint32_t i)
-{
-	return (&r)[i];
-}
-
-inline const float& Color4::operator[](uint32_t i) const
-{
-	return (&r)[i];
-}
-
-inline Color4& Color4::operator+=(const Color4& c)
-{
-	r += c.r;
-	g += c.g;
-	b += c.b;
-	a += c.a;
-
-	return *this;
-}
-
-inline Color4& Color4::operator-=(const Color4& c)
-{
-	r -= c.r;
-	g -= c.g;
-	b -= c.b;
-	a -= c.a;
-
-	return *this;
-}
-
-inline Color4& Color4::operator*=(const Color4& c)
-{
-	r *= c.r;
-	g *= c.g;
-	b *= c.b;
-	a *= c.a;
-
-	return *this;
-}
-
-inline Color4& Color4::operator*=(float k)
-{
-	r *= k;
-	g *= k;
-	b *= k;
-	a *= k;
-
-	return *this;
-}
-
 } // namespace crown