///|
/// Color representation supporting both predefined colors and custom RGB/RGBA values
pub(all) enum Color {
Red
Green
Blue
Yellow
Cyan
Magenta
Black
White
Gray
LightGray
DarkGray
Orange
Purple
Pink
Brown
Lime
Navy
Maroon
Olive
Teal
Silver
Crimson
FireBrick
DarkRed
LightPink
HotPink
DeepPink
MediumVioletRed
PaleVioletRed
DarkOrange
OrangeRed
Tomato
Coral
LightSalmon
Salmon
DarkSalmon
LightCoral
Gold
LightYellow
LemonChiffon
LightGoldenrodYellow
PapayaWhip
Moccasin
PeachPuff
PaleGoldenrod
Khaki
DarkKhaki
LightGreen
DarkGreen
ForestGreen
SeaGreen
MediumSeaGreen
LightSeaGreen
DarkSeaGreen
YellowGreen
OliveDrab
LawnGreen
Chartreuse
GreenYellow
SpringGreen
MediumSpringGreen
LimeGreen
LightBlue
DarkBlue
MediumBlue
SkyBlue
LightSkyBlue
DeepSkyBlue
DodgerBlue
CornflowerBlue
SteelBlue
LightSteelBlue
PowderBlue
LightCyan
CadetBlue
Turquoise
DarkTurquoise
MediumTurquoise
PaleTurquoise
Aqua
DarkCyan
Violet
Plum
Thistle
Lavender
MediumOrchid
MediumPurple
BlueViolet
DarkViolet
DarkOrchid
DarkMagenta
Indigo
SlateBlue
DarkSlateBlue
MediumSlateBlue
SaddleBrown
Sienna
Chocolate
Peru
SandyBrown
BurlyWood
Tan
RosyBrown
Goldenrod
DarkGoldenrod
Gainsboro
DimGray
SlateGray
LightSlateGray
DarkSlateGray
Beige
Bisque
BlanchedAlmond
Cornsilk
Ivory
FloralWhite
Snow
GhostWhite
MintCream
Azure
AliceBlue
Lavenderblush
Seashell
Honeydew
Transparent
RGB(Byte, Byte, Byte)
} derive(Eq, Show)
///|
/// Convert color to RGB bytes (red, green, blue)
pub fn Color::to_rgb(self : Color) -> (Byte, Byte, Byte) {
match self {
Red => (255, 0, 0)
Green => (0, 128, 0)
Blue => (0, 0, 255)
Yellow => (255, 255, 0)
Cyan => (0, 255, 255)
Magenta => (255, 0, 255)
Black => (0, 0, 0)
White => (255, 255, 255)
Gray => (128, 128, 128)
LightGray => (211, 211, 211)
DarkGray => (169, 169, 169)
Orange => (255, 165, 0)
Purple => (128, 0, 128)
Pink => (255, 192, 203)
Brown => (165, 42, 42)
Lime => (0, 255, 0)
Navy => (0, 0, 128)
Maroon => (128, 0, 0)
Olive => (128, 128, 0)
Teal => (0, 128, 128)
Silver => (192, 192, 192)
Crimson => (220, 20, 60)
FireBrick => (178, 34, 34)
DarkRed => (139, 0, 0)
LightPink => (255, 182, 193)
HotPink => (255, 105, 180)
DeepPink => (255, 20, 147)
MediumVioletRed => (199, 21, 133)
PaleVioletRed => (219, 112, 147)
DarkOrange => (255, 140, 0)
OrangeRed => (255, 69, 0)
Tomato => (255, 99, 71)
Coral => (255, 127, 80)
LightSalmon => (255, 160, 122)
Salmon => (250, 128, 114)
DarkSalmon => (233, 150, 122)
LightCoral => (240, 128, 128)
Gold => (255, 215, 0)
LightYellow => (255, 255, 224)
LemonChiffon => (255, 250, 205)
LightGoldenrodYellow => (250, 250, 210)
PapayaWhip => (255, 239, 213)
Moccasin => (255, 228, 181)
PeachPuff => (255, 218, 185)
PaleGoldenrod => (238, 232, 170)
Khaki => (240, 230, 140)
DarkKhaki => (189, 183, 107)
LightGreen => (144, 238, 144)
DarkGreen => (0, 100, 0)
ForestGreen => (34, 139, 34)
SeaGreen => (46, 139, 87)
MediumSeaGreen => (60, 179, 113)
LightSeaGreen => (32, 178, 170)
DarkSeaGreen => (143, 188, 143)
YellowGreen => (154, 205, 50)
OliveDrab => (107, 142, 35)
LawnGreen => (124, 252, 0)
Chartreuse => (127, 255, 0)
GreenYellow => (173, 255, 47)
SpringGreen => (0, 255, 127)
MediumSpringGreen => (0, 250, 154)
LimeGreen => (50, 205, 50)
LightBlue => (173, 216, 230)
DarkBlue => (0, 0, 139)
MediumBlue => (0, 0, 205)
SkyBlue => (135, 206, 235)
LightSkyBlue => (135, 206, 250)
DeepSkyBlue => (0, 191, 255)
DodgerBlue => (30, 144, 255)
CornflowerBlue => (100, 149, 237)
SteelBlue => (70, 130, 180)
LightSteelBlue => (176, 196, 222)
PowderBlue => (176, 224, 230)
LightCyan => (224, 255, 255)
CadetBlue => (95, 158, 160)
Turquoise => (64, 224, 208)
DarkTurquoise => (0, 206, 209)
MediumTurquoise => (72, 209, 204)
PaleTurquoise => (175, 238, 238)
Aqua => (0, 255, 255)
DarkCyan => (0, 139, 139)
Violet => (238, 130, 238)
Plum => (221, 160, 221)
Thistle => (216, 191, 216)
Lavender => (230, 230, 250)
MediumOrchid => (186, 85, 211)
MediumPurple => (147, 112, 219)
BlueViolet => (138, 43, 226)
DarkViolet => (148, 0, 211)
DarkOrchid => (153, 50, 204)
DarkMagenta => (139, 0, 139)
Indigo => (75, 0, 130)
SlateBlue => (106, 90, 205)
DarkSlateBlue => (72, 61, 139)
MediumSlateBlue => (123, 104, 238)
SaddleBrown => (139, 69, 19)
Sienna => (160, 82, 45)
Chocolate => (210, 105, 30)
Peru => (205, 133, 63)
SandyBrown => (244, 164, 96)
BurlyWood => (222, 184, 135)
Tan => (210, 180, 140)
RosyBrown => (188, 143, 143)
Goldenrod => (218, 165, 32)
DarkGoldenrod => (184, 134, 11)
Gainsboro => (220, 220, 220)
DimGray => (105, 105, 105)
SlateGray => (112, 128, 144)
LightSlateGray => (119, 136, 153)
DarkSlateGray => (47, 79, 79)
Beige => (245, 245, 220)
Bisque => (255, 228, 196)
BlanchedAlmond => (255, 235, 205)
Cornsilk => (255, 248, 220)
Ivory => (255, 255, 240)
FloralWhite => (255, 250, 240)
Snow => (255, 250, 250)
GhostWhite => (248, 248, 255)
MintCream => (245, 255, 250)
Azure => (240, 255, 255)
AliceBlue => (240, 248, 255)
Lavenderblush => (255, 240, 245)
Seashell => (255, 245, 238)
Honeydew => (240, 255, 240)
Transparent => (0, 0, 0)
RGB(r, g, b) => (r, g, b)
}
}