From a7feb8109c2ab838c15490671582abefab56cac4 Mon Sep 17 00:00:00 2001 From: mazznoer <56464409+mazznoer@users.noreply.github.com> Date: Fri, 7 Aug 2020 10:04:23 +0700 Subject: [PATCH] Named colors + Rename gradient builder's HexColors() to HtmlColors() + Add support for named colors --- README.md | 26 ++++++-- colornames.go | 156 +++++++++++++++++++++++++++++++++++++++++++ grad.go | 21 ++++-- grad_test.go | 30 ++++++--- gradset.go | 38 +++++------ img/named-colors.png | Bin 0 -> 858 bytes 6 files changed, 229 insertions(+), 42 deletions(-) create mode 100644 colornames.go create mode 100644 img/named-colors.png diff --git a/README.md b/README.md index 739c9ef..f4de696 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Fun & easy way to create _color gradient_ / _color scales_ in __Go__ (__Golang__ - [Basic](#basic) - [Custom Colors](#custom-colors) - [Hex Colors](#using-hex-colors) + - [Named Colors](#named-colors) - [Custom Domain](#custom-domain) - [Blending Mode](#blending-mode) - [Invalid RGB](#beware-of-invalid-rgb-color) @@ -77,23 +78,34 @@ grad, err := colorgrad.NewGradient(). ```go grad, err := colorgrad.NewGradient(). - HexColors("#FFD700", "#00BFFF", "#FFD700"). + HtmlColors("#FFD700", "#00BFFF", "#FFD700"). Build() ``` ![img](img/hex-colors.png) +#### Named Colors + +We can also use named colors as defined in the SVG 1.1 spec. + +```go +grad, err := colorgrad.NewGradient(). + HtmlColors("gold", "hotpink", "darkturquoise"). + Build() +``` +![img](img/named-colors.png) + #### Custom Domain ```go grad, err := colorgrad.NewGradient(). - HexColors("#DC143C", "#FFD700", "#4682b4"). + HtmlColors("#DC143C", "#FFD700", "#4682b4"). Build() ``` ![img](img/color-scale-1.png) ```go grad, err := colorgrad.NewGradient(). - HexColors("#DC143C", "#FFD700", "#4682b4"). + HtmlColors("#DC143C", "#FFD700", "#4682b4"). Domain(0, 0.35, 1). Build() ``` @@ -101,7 +113,7 @@ grad, err := colorgrad.NewGradient(). ```go grad, err := colorgrad.NewGradient(). - HexColors("#DC143C", "#FFD700", "#4682b4"). + HtmlColors("#DC143C", "#FFD700", "#4682b4"). Domain(15, 60, 80). Build() @@ -115,7 +127,7 @@ grad.At(80).Hex() // #4682b4 ```go grad, err := colorgrad.NewGradient(). - HexColors("#ff0", "#008ae5"). + HtmlColors("#ff0", "#008ae5"). Mode(colorgrad.LRGB). Build() ``` @@ -126,7 +138,7 @@ Read it [here](https://github.com/lucasb-eyer/go-colorful#blending-colors). ```go grad, err := colorgrad.NewGradient(). - HexColors("#DC143C", "#FFD700", "#4682b4"). + HtmlColors("#DC143C", "#FFD700", "#4682b4"). Mode(colorgrad.HCL). Build() @@ -144,7 +156,7 @@ With `Clamped()` ```go grad1, err := colorgrad.NewGradient(). - HexColors("#18dbf4", "#f6ff56"). + HtmlColors("#18dbf4", "#f6ff56"). Domain(0, 100). Build() ``` diff --git a/colornames.go b/colornames.go new file mode 100644 index 0000000..95fb507 --- /dev/null +++ b/colornames.go @@ -0,0 +1,156 @@ +package colorgrad + +import "image/color" + +// Copied from golang.org/x/image/colornames + +// Map contains named colors defined in the SVG 1.1 spec. +var colornames = map[string]color.RGBA{ + "aliceblue": color.RGBA{0xf0, 0xf8, 0xff, 0xff}, // rgb(240, 248, 255) + "antiquewhite": color.RGBA{0xfa, 0xeb, 0xd7, 0xff}, // rgb(250, 235, 215) + "aqua": color.RGBA{0x00, 0xff, 0xff, 0xff}, // rgb(0, 255, 255) + "aquamarine": color.RGBA{0x7f, 0xff, 0xd4, 0xff}, // rgb(127, 255, 212) + "azure": color.RGBA{0xf0, 0xff, 0xff, 0xff}, // rgb(240, 255, 255) + "beige": color.RGBA{0xf5, 0xf5, 0xdc, 0xff}, // rgb(245, 245, 220) + "bisque": color.RGBA{0xff, 0xe4, 0xc4, 0xff}, // rgb(255, 228, 196) + "black": color.RGBA{0x00, 0x00, 0x00, 0xff}, // rgb(0, 0, 0) + "blanchedalmond": color.RGBA{0xff, 0xeb, 0xcd, 0xff}, // rgb(255, 235, 205) + "blue": color.RGBA{0x00, 0x00, 0xff, 0xff}, // rgb(0, 0, 255) + "blueviolet": color.RGBA{0x8a, 0x2b, 0xe2, 0xff}, // rgb(138, 43, 226) + "brown": color.RGBA{0xa5, 0x2a, 0x2a, 0xff}, // rgb(165, 42, 42) + "burlywood": color.RGBA{0xde, 0xb8, 0x87, 0xff}, // rgb(222, 184, 135) + "cadetblue": color.RGBA{0x5f, 0x9e, 0xa0, 0xff}, // rgb(95, 158, 160) + "chartreuse": color.RGBA{0x7f, 0xff, 0x00, 0xff}, // rgb(127, 255, 0) + "chocolate": color.RGBA{0xd2, 0x69, 0x1e, 0xff}, // rgb(210, 105, 30) + "coral": color.RGBA{0xff, 0x7f, 0x50, 0xff}, // rgb(255, 127, 80) + "cornflowerblue": color.RGBA{0x64, 0x95, 0xed, 0xff}, // rgb(100, 149, 237) + "cornsilk": color.RGBA{0xff, 0xf8, 0xdc, 0xff}, // rgb(255, 248, 220) + "crimson": color.RGBA{0xdc, 0x14, 0x3c, 0xff}, // rgb(220, 20, 60) + "cyan": color.RGBA{0x00, 0xff, 0xff, 0xff}, // rgb(0, 255, 255) + "darkblue": color.RGBA{0x00, 0x00, 0x8b, 0xff}, // rgb(0, 0, 139) + "darkcyan": color.RGBA{0x00, 0x8b, 0x8b, 0xff}, // rgb(0, 139, 139) + "darkgoldenrod": color.RGBA{0xb8, 0x86, 0x0b, 0xff}, // rgb(184, 134, 11) + "darkgray": color.RGBA{0xa9, 0xa9, 0xa9, 0xff}, // rgb(169, 169, 169) + "darkgreen": color.RGBA{0x00, 0x64, 0x00, 0xff}, // rgb(0, 100, 0) + "darkgrey": color.RGBA{0xa9, 0xa9, 0xa9, 0xff}, // rgb(169, 169, 169) + "darkkhaki": color.RGBA{0xbd, 0xb7, 0x6b, 0xff}, // rgb(189, 183, 107) + "darkmagenta": color.RGBA{0x8b, 0x00, 0x8b, 0xff}, // rgb(139, 0, 139) + "darkolivegreen": color.RGBA{0x55, 0x6b, 0x2f, 0xff}, // rgb(85, 107, 47) + "darkorange": color.RGBA{0xff, 0x8c, 0x00, 0xff}, // rgb(255, 140, 0) + "darkorchid": color.RGBA{0x99, 0x32, 0xcc, 0xff}, // rgb(153, 50, 204) + "darkred": color.RGBA{0x8b, 0x00, 0x00, 0xff}, // rgb(139, 0, 0) + "darksalmon": color.RGBA{0xe9, 0x96, 0x7a, 0xff}, // rgb(233, 150, 122) + "darkseagreen": color.RGBA{0x8f, 0xbc, 0x8f, 0xff}, // rgb(143, 188, 143) + "darkslateblue": color.RGBA{0x48, 0x3d, 0x8b, 0xff}, // rgb(72, 61, 139) + "darkslategray": color.RGBA{0x2f, 0x4f, 0x4f, 0xff}, // rgb(47, 79, 79) + "darkslategrey": color.RGBA{0x2f, 0x4f, 0x4f, 0xff}, // rgb(47, 79, 79) + "darkturquoise": color.RGBA{0x00, 0xce, 0xd1, 0xff}, // rgb(0, 206, 209) + "darkviolet": color.RGBA{0x94, 0x00, 0xd3, 0xff}, // rgb(148, 0, 211) + "deeppink": color.RGBA{0xff, 0x14, 0x93, 0xff}, // rgb(255, 20, 147) + "deepskyblue": color.RGBA{0x00, 0xbf, 0xff, 0xff}, // rgb(0, 191, 255) + "dimgray": color.RGBA{0x69, 0x69, 0x69, 0xff}, // rgb(105, 105, 105) + "dimgrey": color.RGBA{0x69, 0x69, 0x69, 0xff}, // rgb(105, 105, 105) + "dodgerblue": color.RGBA{0x1e, 0x90, 0xff, 0xff}, // rgb(30, 144, 255) + "firebrick": color.RGBA{0xb2, 0x22, 0x22, 0xff}, // rgb(178, 34, 34) + "floralwhite": color.RGBA{0xff, 0xfa, 0xf0, 0xff}, // rgb(255, 250, 240) + "forestgreen": color.RGBA{0x22, 0x8b, 0x22, 0xff}, // rgb(34, 139, 34) + "fuchsia": color.RGBA{0xff, 0x00, 0xff, 0xff}, // rgb(255, 0, 255) + "gainsboro": color.RGBA{0xdc, 0xdc, 0xdc, 0xff}, // rgb(220, 220, 220) + "ghostwhite": color.RGBA{0xf8, 0xf8, 0xff, 0xff}, // rgb(248, 248, 255) + "gold": color.RGBA{0xff, 0xd7, 0x00, 0xff}, // rgb(255, 215, 0) + "goldenrod": color.RGBA{0xda, 0xa5, 0x20, 0xff}, // rgb(218, 165, 32) + "gray": color.RGBA{0x80, 0x80, 0x80, 0xff}, // rgb(128, 128, 128) + "green": color.RGBA{0x00, 0x80, 0x00, 0xff}, // rgb(0, 128, 0) + "greenyellow": color.RGBA{0xad, 0xff, 0x2f, 0xff}, // rgb(173, 255, 47) + "grey": color.RGBA{0x80, 0x80, 0x80, 0xff}, // rgb(128, 128, 128) + "honeydew": color.RGBA{0xf0, 0xff, 0xf0, 0xff}, // rgb(240, 255, 240) + "hotpink": color.RGBA{0xff, 0x69, 0xb4, 0xff}, // rgb(255, 105, 180) + "indianred": color.RGBA{0xcd, 0x5c, 0x5c, 0xff}, // rgb(205, 92, 92) + "indigo": color.RGBA{0x4b, 0x00, 0x82, 0xff}, // rgb(75, 0, 130) + "ivory": color.RGBA{0xff, 0xff, 0xf0, 0xff}, // rgb(255, 255, 240) + "khaki": color.RGBA{0xf0, 0xe6, 0x8c, 0xff}, // rgb(240, 230, 140) + "lavender": color.RGBA{0xe6, 0xe6, 0xfa, 0xff}, // rgb(230, 230, 250) + "lavenderblush": color.RGBA{0xff, 0xf0, 0xf5, 0xff}, // rgb(255, 240, 245) + "lawngreen": color.RGBA{0x7c, 0xfc, 0x00, 0xff}, // rgb(124, 252, 0) + "lemonchiffon": color.RGBA{0xff, 0xfa, 0xcd, 0xff}, // rgb(255, 250, 205) + "lightblue": color.RGBA{0xad, 0xd8, 0xe6, 0xff}, // rgb(173, 216, 230) + "lightcoral": color.RGBA{0xf0, 0x80, 0x80, 0xff}, // rgb(240, 128, 128) + "lightcyan": color.RGBA{0xe0, 0xff, 0xff, 0xff}, // rgb(224, 255, 255) + "lightgoldenrodyellow": color.RGBA{0xfa, 0xfa, 0xd2, 0xff}, // rgb(250, 250, 210) + "lightgray": color.RGBA{0xd3, 0xd3, 0xd3, 0xff}, // rgb(211, 211, 211) + "lightgreen": color.RGBA{0x90, 0xee, 0x90, 0xff}, // rgb(144, 238, 144) + "lightgrey": color.RGBA{0xd3, 0xd3, 0xd3, 0xff}, // rgb(211, 211, 211) + "lightpink": color.RGBA{0xff, 0xb6, 0xc1, 0xff}, // rgb(255, 182, 193) + "lightsalmon": color.RGBA{0xff, 0xa0, 0x7a, 0xff}, // rgb(255, 160, 122) + "lightseagreen": color.RGBA{0x20, 0xb2, 0xaa, 0xff}, // rgb(32, 178, 170) + "lightskyblue": color.RGBA{0x87, 0xce, 0xfa, 0xff}, // rgb(135, 206, 250) + "lightslategray": color.RGBA{0x77, 0x88, 0x99, 0xff}, // rgb(119, 136, 153) + "lightslategrey": color.RGBA{0x77, 0x88, 0x99, 0xff}, // rgb(119, 136, 153) + "lightsteelblue": color.RGBA{0xb0, 0xc4, 0xde, 0xff}, // rgb(176, 196, 222) + "lightyellow": color.RGBA{0xff, 0xff, 0xe0, 0xff}, // rgb(255, 255, 224) + "lime": color.RGBA{0x00, 0xff, 0x00, 0xff}, // rgb(0, 255, 0) + "limegreen": color.RGBA{0x32, 0xcd, 0x32, 0xff}, // rgb(50, 205, 50) + "linen": color.RGBA{0xfa, 0xf0, 0xe6, 0xff}, // rgb(250, 240, 230) + "magenta": color.RGBA{0xff, 0x00, 0xff, 0xff}, // rgb(255, 0, 255) + "maroon": color.RGBA{0x80, 0x00, 0x00, 0xff}, // rgb(128, 0, 0) + "mediumaquamarine": color.RGBA{0x66, 0xcd, 0xaa, 0xff}, // rgb(102, 205, 170) + "mediumblue": color.RGBA{0x00, 0x00, 0xcd, 0xff}, // rgb(0, 0, 205) + "mediumorchid": color.RGBA{0xba, 0x55, 0xd3, 0xff}, // rgb(186, 85, 211) + "mediumpurple": color.RGBA{0x93, 0x70, 0xdb, 0xff}, // rgb(147, 112, 219) + "mediumseagreen": color.RGBA{0x3c, 0xb3, 0x71, 0xff}, // rgb(60, 179, 113) + "mediumslateblue": color.RGBA{0x7b, 0x68, 0xee, 0xff}, // rgb(123, 104, 238) + "mediumspringgreen": color.RGBA{0x00, 0xfa, 0x9a, 0xff}, // rgb(0, 250, 154) + "mediumturquoise": color.RGBA{0x48, 0xd1, 0xcc, 0xff}, // rgb(72, 209, 204) + "mediumvioletred": color.RGBA{0xc7, 0x15, 0x85, 0xff}, // rgb(199, 21, 133) + "midnightblue": color.RGBA{0x19, 0x19, 0x70, 0xff}, // rgb(25, 25, 112) + "mintcream": color.RGBA{0xf5, 0xff, 0xfa, 0xff}, // rgb(245, 255, 250) + "mistyrose": color.RGBA{0xff, 0xe4, 0xe1, 0xff}, // rgb(255, 228, 225) + "moccasin": color.RGBA{0xff, 0xe4, 0xb5, 0xff}, // rgb(255, 228, 181) + "navajowhite": color.RGBA{0xff, 0xde, 0xad, 0xff}, // rgb(255, 222, 173) + "navy": color.RGBA{0x00, 0x00, 0x80, 0xff}, // rgb(0, 0, 128) + "oldlace": color.RGBA{0xfd, 0xf5, 0xe6, 0xff}, // rgb(253, 245, 230) + "olive": color.RGBA{0x80, 0x80, 0x00, 0xff}, // rgb(128, 128, 0) + "olivedrab": color.RGBA{0x6b, 0x8e, 0x23, 0xff}, // rgb(107, 142, 35) + "orange": color.RGBA{0xff, 0xa5, 0x00, 0xff}, // rgb(255, 165, 0) + "orangered": color.RGBA{0xff, 0x45, 0x00, 0xff}, // rgb(255, 69, 0) + "orchid": color.RGBA{0xda, 0x70, 0xd6, 0xff}, // rgb(218, 112, 214) + "palegoldenrod": color.RGBA{0xee, 0xe8, 0xaa, 0xff}, // rgb(238, 232, 170) + "palegreen": color.RGBA{0x98, 0xfb, 0x98, 0xff}, // rgb(152, 251, 152) + "paleturquoise": color.RGBA{0xaf, 0xee, 0xee, 0xff}, // rgb(175, 238, 238) + "palevioletred": color.RGBA{0xdb, 0x70, 0x93, 0xff}, // rgb(219, 112, 147) + "papayawhip": color.RGBA{0xff, 0xef, 0xd5, 0xff}, // rgb(255, 239, 213) + "peachpuff": color.RGBA{0xff, 0xda, 0xb9, 0xff}, // rgb(255, 218, 185) + "peru": color.RGBA{0xcd, 0x85, 0x3f, 0xff}, // rgb(205, 133, 63) + "pink": color.RGBA{0xff, 0xc0, 0xcb, 0xff}, // rgb(255, 192, 203) + "plum": color.RGBA{0xdd, 0xa0, 0xdd, 0xff}, // rgb(221, 160, 221) + "powderblue": color.RGBA{0xb0, 0xe0, 0xe6, 0xff}, // rgb(176, 224, 230) + "purple": color.RGBA{0x80, 0x00, 0x80, 0xff}, // rgb(128, 0, 128) + "red": color.RGBA{0xff, 0x00, 0x00, 0xff}, // rgb(255, 0, 0) + "rosybrown": color.RGBA{0xbc, 0x8f, 0x8f, 0xff}, // rgb(188, 143, 143) + "royalblue": color.RGBA{0x41, 0x69, 0xe1, 0xff}, // rgb(65, 105, 225) + "saddlebrown": color.RGBA{0x8b, 0x45, 0x13, 0xff}, // rgb(139, 69, 19) + "salmon": color.RGBA{0xfa, 0x80, 0x72, 0xff}, // rgb(250, 128, 114) + "sandybrown": color.RGBA{0xf4, 0xa4, 0x60, 0xff}, // rgb(244, 164, 96) + "seagreen": color.RGBA{0x2e, 0x8b, 0x57, 0xff}, // rgb(46, 139, 87) + "seashell": color.RGBA{0xff, 0xf5, 0xee, 0xff}, // rgb(255, 245, 238) + "sienna": color.RGBA{0xa0, 0x52, 0x2d, 0xff}, // rgb(160, 82, 45) + "silver": color.RGBA{0xc0, 0xc0, 0xc0, 0xff}, // rgb(192, 192, 192) + "skyblue": color.RGBA{0x87, 0xce, 0xeb, 0xff}, // rgb(135, 206, 235) + "slateblue": color.RGBA{0x6a, 0x5a, 0xcd, 0xff}, // rgb(106, 90, 205) + "slategray": color.RGBA{0x70, 0x80, 0x90, 0xff}, // rgb(112, 128, 144) + "slategrey": color.RGBA{0x70, 0x80, 0x90, 0xff}, // rgb(112, 128, 144) + "snow": color.RGBA{0xff, 0xfa, 0xfa, 0xff}, // rgb(255, 250, 250) + "springgreen": color.RGBA{0x00, 0xff, 0x7f, 0xff}, // rgb(0, 255, 127) + "steelblue": color.RGBA{0x46, 0x82, 0xb4, 0xff}, // rgb(70, 130, 180) + "tan": color.RGBA{0xd2, 0xb4, 0x8c, 0xff}, // rgb(210, 180, 140) + "teal": color.RGBA{0x00, 0x80, 0x80, 0xff}, // rgb(0, 128, 128) + "thistle": color.RGBA{0xd8, 0xbf, 0xd8, 0xff}, // rgb(216, 191, 216) + "tomato": color.RGBA{0xff, 0x63, 0x47, 0xff}, // rgb(255, 99, 71) + "turquoise": color.RGBA{0x40, 0xe0, 0xd0, 0xff}, // rgb(64, 224, 208) + "violet": color.RGBA{0xee, 0x82, 0xee, 0xff}, // rgb(238, 130, 238) + "wheat": color.RGBA{0xf5, 0xde, 0xb3, 0xff}, // rgb(245, 222, 179) + "white": color.RGBA{0xff, 0xff, 0xff, 0xff}, // rgb(255, 255, 255) + "whitesmoke": color.RGBA{0xf5, 0xf5, 0xf5, 0xff}, // rgb(245, 245, 245) + "yellow": color.RGBA{0xff, 0xff, 0x00, 0xff}, // rgb(255, 255, 0) + "yellowgreen": color.RGBA{0x9a, 0xcd, 0x32, 0xff}, // rgb(154, 205, 50) +} diff --git a/grad.go b/grad.go index 5c36f5c..1badee2 100644 --- a/grad.go +++ b/grad.go @@ -4,6 +4,7 @@ import ( "fmt" "image/color" "math" + "strings" "github.com/lucasb-eyer/go-colorful" ) @@ -49,15 +50,23 @@ func (gb *GradientBuilder) Colors(colors ...color.Color) *GradientBuilder { return gb } -func (gb *GradientBuilder) HexColors(hexColors ...string) *GradientBuilder { +func (gb *GradientBuilder) HtmlColors(htmlColors ...string) *GradientBuilder { colors := []colorful.Color{} - for _, v := range hexColors { - c, err := colorful.Hex(v) - if err != nil { - continue + for _, v := range htmlColors { + var col colorful.Color + c1, ok := colornames[strings.ToLower(v)] + if ok { + c, _ := colorful.MakeColor(c1) + col = c + } else { + c, err := colorful.Hex(v) + if err != nil { + continue + } + col = c } - colors = append(colors, c) + colors = append(colors, col) } gb.colors = colors return gb diff --git a/grad_test.go b/grad_test.go index a6b91be..aa71c5d 100644 --- a/grad_test.go +++ b/grad_test.go @@ -16,7 +16,7 @@ func TestBasic1(t *testing.T) { // Domain's length != colors's length grad, err = NewGradient(). - HexColors("#777", "#fff", "#ccc"). + HtmlColors("#777", "#fff", "#ccc"). Domain(0, 1). Build() if err == nil { @@ -28,7 +28,7 @@ func TestBasic1(t *testing.T) { // Wrong domain grad, err = NewGradient(). - HexColors("#777", "#fff", "#ccc", "#222"). + HtmlColors("#777", "#fff", "#ccc", "#222"). Domain(0, 0.71, 0.70, 1). Build() if err == nil { @@ -40,42 +40,52 @@ func TestBasic1(t *testing.T) { // Invalid hex color grad, err = NewGradient(). - HexColors("#ffg", "#333", "#bbb"). + HtmlColors("#ffg", "#333", "#bbb"). Build() testStr(t, grad.At(0).Hex(), "#333333") testStr(t, grad.At(1).Hex(), "#bbbbbb") + // Named colors + grad, err = NewGradient(). + HtmlColors("tomato", "skyblue", "gold", "springgreen"). + Build() + colors := grad.Colors(4) + testStr(t, colors[0].Hex(), "#ff6347") + testStr(t, colors[1].Hex(), "#87ceeb") + testStr(t, colors[2].Hex(), "#ffd700") + testStr(t, colors[3].Hex(), "#00ff7f") + // Blend mode grad, err = NewGradient(). - HexColors("#333", "#bbb"). + HtmlColors("#333", "#bbb"). Mode(HCL). Build() testStr(t, grad.At(0).Hex(), "#333333") testStr(t, grad.At(1).Hex(), "#bbbbbb") grad, err = NewGradient(). - HexColors("#333", "#bbb"). + HtmlColors("#333", "#bbb"). Mode(HSV). Build() testStr(t, grad.At(0).Hex(), "#333333") testStr(t, grad.At(1).Hex(), "#bbbbbb") grad, err = NewGradient(). - HexColors("#333", "#bbb"). + HtmlColors("#333", "#bbb"). Mode(LAB). Build() testStr(t, grad.At(0).Hex(), "#333333") testStr(t, grad.At(1).Hex(), "#bbbbbb") grad, err = NewGradient(). - HexColors("#333", "#bbb"). + HtmlColors("#333", "#bbb"). Mode(LRGB). Build() testStr(t, grad.At(0).Hex(), "#333333") testStr(t, grad.At(1).Hex(), "#bbbbbb") grad, err = NewGradient(). - HexColors("#333", "#bbb"). + HtmlColors("#333", "#bbb"). Mode(LUV). Build() testStr(t, grad.At(0).Hex(), "#333333") @@ -115,7 +125,7 @@ func TestBasic2(t *testing.T) { func TestDomain(t *testing.T) { grad, _ := NewGradient(). - HexColors("#00ff00", "#ff0000", "#ffff00"). + HtmlColors("#00ff00", "#ff0000", "#ffff00"). Domain(0, 0.75, 1). Build() @@ -128,7 +138,7 @@ func TestDomain(t *testing.T) { testStr(t, grad.At(1.5).Hex(), "#ffff00") grad, _ = NewGradient(). - HexColors("#00ff00", "#ff0000", "#0000ff", "#ffff00"). + HtmlColors("#00ff00", "#ff0000", "#0000ff", "#ffff00"). Domain(15, 25, 29, 63). Build() diff --git a/gradset.go b/gradset.go index 907b84e..03722d5 100644 --- a/gradset.go +++ b/gradset.go @@ -5,7 +5,7 @@ package colorgrad func BrBG() Gradient { colors := []string{"#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -13,7 +13,7 @@ func BrBG() Gradient { func PRGn() Gradient { colors := []string{"#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -21,7 +21,7 @@ func PRGn() Gradient { func PiYG() Gradient { colors := []string{"#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -29,7 +29,7 @@ func PiYG() Gradient { func PuOr() Gradient { colors := []string{"#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -37,7 +37,7 @@ func PuOr() Gradient { func RdBu() Gradient { colors := []string{"#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -45,7 +45,7 @@ func RdBu() Gradient { func RdGy() Gradient { colors := []string{"#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -53,7 +53,7 @@ func RdGy() Gradient { func RdYlBu() Gradient { colors := []string{"#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -61,7 +61,7 @@ func RdYlBu() Gradient { func RdYlGn() Gradient { colors := []string{"#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -69,7 +69,7 @@ func RdYlGn() Gradient { func Spectral() Gradient { colors := []string{"#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -79,7 +79,7 @@ func Spectral() Gradient { func Blues() Gradient { colors := []string{"#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -87,14 +87,14 @@ func Blues() Gradient { func Greens() Gradient { colors := []string{"#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } func Greys() Gradient { grad, _ := NewGradient(). - HexColors("#ffffff", "#000000"). + HtmlColors("#ffffff", "#000000"). Build() return grad } @@ -102,7 +102,7 @@ func Greys() Gradient { func Oranges() Gradient { colors := []string{"#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -110,7 +110,7 @@ func Oranges() Gradient { func Purples() Gradient { colors := []string{"#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -118,7 +118,7 @@ func Purples() Gradient { func Reds() Gradient { colors := []string{"#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -128,7 +128,7 @@ func Reds() Gradient { func Viridis() Gradient { colors := []string{"#440154", "#482777", "#3f4a8a", "#31678e", "#26838f", "#1f9d8a", "#6cce5a", "#b6de2b", "#fee825"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -136,7 +136,7 @@ func Viridis() Gradient { func Inferno() Gradient { colors := []string{"#000004", "#170b3a", "#420a68", "#6b176e", "#932667", "#bb3654", "#dd513a", "#f3771a", "#fca50a", "#f6d644", "#fcffa4"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -144,7 +144,7 @@ func Inferno() Gradient { func Magma() Gradient { colors := []string{"#000004", "#140e37", "#3b0f70", "#641a80", "#8c2981", "#b63679", "#de4968", "#f66f5c", "#fe9f6d", "#fece91", "#fcfdbf"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } @@ -152,7 +152,7 @@ func Magma() Gradient { func Plasma() Gradient { colors := []string{"#0d0887", "#42039d", "#6a00a8", "#900da3", "#b12a90", "#cb4678", "#e16462", "#f1834b", "#fca636", "#fccd25", "#f0f921"} grad, _ := NewGradient(). - HexColors(colors...). + HtmlColors(colors...). Build() return grad } diff --git a/img/named-colors.png b/img/named-colors.png new file mode 100644 index 0000000000000000000000000000000000000000..4d8fa21ca6360ae29c62f2a090e87efd5dd1bfaf GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0y~yU~U1jqd1s=Wc~;KbwB|{PZ!6KiaBqtMdw|1kT`yE z<|X!T`z^(ok7z8+teKhrMrq0a)0X@v%AP$_^Vt9WseAU@>g@Mx_ip{RRyTj`*W+LB zcmJ!o)P4KjyE6YU{&MDN=U`KOJZDB<1qy z?(^a?tNOcK*ZIuh-DmeHXZrQ?tHSNC9zGoRw_N7$oZtU0Ka77@cTt^NZrklS3+-P0 z-S=k~+w1QSvyL9gZoXc>WwK%W`=ozwZTkyLZ(hA#_)B4<)avMLK7NBg_1o-z7JkUcThAu%zqRi2qsxCM|E^rt{XV>UjlGQhzS?#5 zF&ip2MgA{7oAsyaR3Q+5nsupMTZZk;yf3#C&%CXyzHPU&Hm2TZr|rBuQNREG%+KF1 zCvGo)l#_u$GD(D?LBf!W!J$Wjl|jL+hlxQz*^QB*LvS$z!;y|a28N^~8Vn4Eqsj(D ffYbx?$^ZZV9K8zHZb_U1%rgw0u6{1-oD!M