| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- // Copyright 2016 The G3N Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package math32
- import ()
- type Color struct {
- R float32
- G float32
- B float32
- }
- var Black = Color{0, 0, 0}
- var White = Color{1, 1, 1}
- var Red = Color{1, 0, 0}
- var Green = Color{0, 1, 0}
- var Blue = Color{0, 0, 1}
- var Gray = Color{0.5, 0.5, 0.5}
- // NewColor creates and returns a pointer to a new color
- // with the specified RGB components
- func NewColor(r, g, b float32) *Color {
- return &Color{R: r, G: g, B: b}
- }
- // NewColorHex creates and returns a pointer to a new color
- // with its RGB components from the specified hex value
- func NewColorHex(color uint) *Color {
- return (&Color{}).SetHex(color)
- }
- // Set sets this color individual R,G,B components
- func (c *Color) Set(r, g, b float32) *Color {
- c.R = r
- c.G = g
- c.B = b
- return c
- }
- // SetHex sets the color RGB components from the
- // specified integer interpreted as a color hex number
- func (c *Color) SetHex(value uint) *Color {
- c.R = float32((value >> 16 & 255)) / 255
- c.G = float32((value >> 8 & 255)) / 255
- c.B = float32((value & 255)) / 255
- return c
- }
- // SetName sets the color RGB components from the
- // specified HTML color name
- func (c *Color) SetName(name string) *Color {
- return c.SetHex(colorKeywords[name])
- }
- func (c *Color) Add(other *Color) *Color {
- c.R += other.R
- c.G += other.G
- c.B += other.B
- return c
- }
- func (c *Color) AddColors(color1, color2 *Color) *Color {
- c.R = color1.R + color2.R
- c.G = color1.G + color2.G
- c.B = color1.B + color2.B
- return c
- }
- func (c *Color) AddScalar(s float32) *Color {
- c.R += s
- c.G += s
- c.B += s
- return c
- }
- func (c *Color) Multiply(other *Color) *Color {
- c.R *= other.R
- c.G *= other.G
- c.B *= other.B
- return c
- }
- func (c *Color) MultiplyScalar(v float32) *Color {
- c.R *= v
- c.G *= v
- c.B *= v
- return c
- }
- func (c *Color) Lerp(color *Color, alpha float32) *Color {
- c.R += (color.R - c.R) * alpha
- c.G += (color.G - c.G) * alpha
- c.B += (color.B - c.B) * alpha
- return c
- }
- func (c *Color) Equals(other *Color) bool {
- return (c.R == other.R) && (c.G == other.G) && (c.B == other.B)
- }
- func (c *Color) Clone() *Color {
- return NewColor(c.R, c.G, c.B)
- }
- var colorKeywords = map[string]uint{
- "aliceblue": 0xF0F8FF,
- "antiquewhite": 0xFAEBD7,
- "aqua": 0x00FFFF,
- "aquamarine": 0x7FFFD4,
- "azure": 0xF0FFFF,
- "beige": 0xF5F5DC,
- "bisque": 0xFFE4C4,
- "black": 0x000000,
- "blanchedalmond": 0xFFEBCD,
- "blue": 0x0000FF,
- "blueviolet": 0x8A2BE2,
- "brown": 0xA52A2A,
- "burlywood": 0xDEB887,
- "cadetblue": 0x5F9EA0,
- "chartreuse": 0x7FFF00,
- "chocolate": 0xD2691E,
- "coral": 0xFF7F50,
- "cornflowerblue": 0x6495ED,
- "cornsilk": 0xFFF8DC,
- "crimson": 0xDC143C,
- "cyan": 0x00FFFF,
- "darkblue": 0x00008B,
- "darkcyan": 0x008B8B,
- "darkgoldenrod": 0xB8860B,
- "darkgray": 0xA9A9A9,
- "darkgreen": 0x006400,
- "darkgrey": 0xA9A9A9,
- "darkkhaki": 0xBDB76B,
- "darkmagenta": 0x8B008B,
- "darkolivegreen": 0x556B2F,
- "darkorange": 0xFF8C00,
- "darkorchid": 0x9932CC,
- "darkred": 0x8B0000,
- "darksalmon": 0xE9967A,
- "darkseagreen": 0x8FBC8F,
- "darkslateblue": 0x483D8B,
- "darkslategray": 0x2F4F4F,
- "darkslategrey": 0x2F4F4F,
- "darkturquoise": 0x00CED1,
- "darkviolet": 0x9400D3,
- "deeppink": 0xFF1493,
- "deepskyblue": 0x00BFFF,
- "dimgray": 0x696969,
- "dimgrey": 0x696969,
- "dodgerblue": 0x1E90FF,
- "firebrick": 0xB22222,
- "floralwhite": 0xFFFAF0,
- "forestgreen": 0x228B22,
- "fuchsia": 0xFF00FF,
- "gainsboro": 0xDCDCDC,
- "ghostwhite": 0xF8F8FF,
- "gold": 0xFFD700,
- "goldenrod": 0xDAA520,
- "gray": 0x808080,
- "green": 0x008000,
- "greenyellow": 0xADFF2F,
- "grey": 0x808080,
- "honeydew": 0xF0FFF0,
- "hotpink": 0xFF69B4,
- "indianred": 0xCD5C5C,
- "indigo": 0x4B0082,
- "ivory": 0xFFFFF0,
- "khaki": 0xF0E68C,
- "lavender": 0xE6E6FA,
- "lavenderblush": 0xFFF0F5,
- "lawngreen": 0x7CFC00,
- "lemonchiffon": 0xFFFACD,
- "lightblue": 0xADD8E6,
- "lightcoral": 0xF08080,
- "lightcyan": 0xE0FFFF,
- "lightgoldenrodyellow": 0xFAFAD2,
- "lightgray": 0xD3D3D3,
- "lightgreen": 0x90EE90,
- "lightgrey": 0xD3D3D3,
- "lightpink": 0xFFB6C1,
- "lightsalmon": 0xFFA07A,
- "lightseagreen": 0x20B2AA,
- "lightskyblue": 0x87CEFA,
- "lightslategray": 0x778899,
- "lightslategrey": 0x778899,
- "lightsteelblue": 0xB0C4DE,
- "lightyellow": 0xFFFFE0,
- "lime": 0x00FF00,
- "limegreen": 0x32CD32,
- "linen": 0xFAF0E6,
- "magenta": 0xFF00FF,
- "maroon": 0x800000,
- "mediumaquamarine": 0x66CDAA,
- "mediumblue": 0x0000CD,
- "mediumorchid": 0xBA55D3,
- "mediumpurple": 0x9370DB,
- "mediumseagreen": 0x3CB371,
- "mediumslateblue": 0x7B68EE,
- "mediumspringgreen": 0x00FA9A,
- "mediumturquoise": 0x48D1CC,
- "mediumvioletred": 0xC71585,
- "midnightblue": 0x191970,
- "mintcream": 0xF5FFFA,
- "mistyrose": 0xFFE4E1,
- "moccasin": 0xFFE4B5,
- "navajowhite": 0xFFDEAD,
- "navy": 0x000080,
- "oldlace": 0xFDF5E6,
- "olive": 0x808000,
- "olivedrab": 0x6B8E23,
- "orange": 0xFFA500,
- "orangered": 0xFF4500,
- "orchid": 0xDA70D6,
- "palegoldenrod": 0xEEE8AA,
- "palegreen": 0x98FB98,
- "paleturquoise": 0xAFEEEE,
- "palevioletred": 0xDB7093,
- "papayawhip": 0xFFEFD5,
- "peachpuff": 0xFFDAB9,
- "peru": 0xCD853F,
- "pink": 0xFFC0CB,
- "plum": 0xDDA0DD,
- "powderblue": 0xB0E0E6,
- "purple": 0x800080,
- "red": 0xFF0000,
- "rosybrown": 0xBC8F8F,
- "royalblue": 0x4169E1,
- "saddlebrown": 0x8B4513,
- "salmon": 0xFA8072,
- "sandybrown": 0xF4A460,
- "seagreen": 0x2E8B57,
- "seashell": 0xFFF5EE,
- "sienna": 0xA0522D,
- "silver": 0xC0C0C0,
- "skyblue": 0x87CEEB,
- "slateblue": 0x6A5ACD,
- "slategrey": 0x708090,
- "snow": 0xFFFAFA,
- "springgreen": 0x00FF7F,
- "steelblue": 0x4682B4,
- "tan": 0xD2B48C,
- "teal": 0x008080,
- "thistle": 0xD8BFD8,
- "tomato": 0xFF6347,
- "turquoise": 0x40E0D0,
- "violet": 0xEE82EE,
- "wheat": 0xF5DEB3,
- "white": 0xFFFFFF,
- "whitesmoke": 0xF5F5F5,
- "yellow": 0xFFFF00,
- "yellowgreen": 0x9ACD32,
- }
|