Skip to content

Commit

Permalink
Scheme (#17)
Browse files Browse the repository at this point in the history
* Create scheme.go

* Create scheme_test.go

* Add files via upload

* Update README.md

* Update README.md

* Update gradset.go

* Update gradx.go
  • Loading branch information
mazznoer authored Jul 31, 2020
1 parent b2aebdb commit 4db7938
Show file tree
Hide file tree
Showing 14 changed files with 210 additions and 13 deletions.
45 changes: 40 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
[![go report](https://goreportcard.com/badge/github.com/mazznoer/colorgrad)](https://goreportcard.com/report/github.com/mazznoer/colorgrad)
[![Build Status](https://travis-ci.org/mazznoer/colorgrad.svg?branch=master)](https://travis-ci.org/mazznoer/colorgrad)
[![codecov](https://codecov.io/gh/mazznoer/colorgrad/branch/master/graph/badge.svg)](https://codecov.io/gh/mazznoer/colorgrad)
<!--
[![Coverage Status](https://coveralls.io/repos/github/mazznoer/colorgrad/badge.svg?branch=master)](https://coveralls.io/github/mazznoer/colorgrad?branch=master)
-->

Fun & easy way to create _color gradient_ / _color scales_ in __Go__ (__Golang__).

Expand All @@ -18,6 +15,7 @@ Fun & easy way to create _color gradient_ / _color scales_ in __Go__ (__Golang__
- [Basic](#basic)
- [Custom Colors](#custom-colors)
* [Preset Gradients](#preset-gradients)
* [Color Scheme](#color-scheme)
* [Random Colors](#random-colors)
* [Playground](#go-playground)
* [Dependencies](#dependencies)
Expand Down Expand Up @@ -171,6 +169,9 @@ grad.Colors(15)
`grad := colorgrad.Greens()`
![img](img/gradient-greens.png)

`grad := colorgrad.Greys()`
![img](img/gradient-greys.png)

`grad := colorgrad.Oranges()`
![img](img/gradient-oranges.png)

Expand All @@ -180,8 +181,42 @@ grad.Colors(15)
`grad := colorgrad.Reds()`
![img](img/gradient-reds.png)

`grad := colorgrad.Greys()`
![img](img/gradient-greys.png)
### Color Scheme

It just a slice of colors. But you can create gradient from color scheme.

```go
grad, err := colorgrad.NewGradient().
Colors(colorgrad.Scheme.Set1...).
Build()
```

`colorgrad.Scheme.Accent`
![img](img/scheme-accent.png)

`colorgrad.Scheme.Category10`
![img](img/scheme-category10.png)

`colorgrad.Scheme.Dark2`
![img](img/scheme-dark2.png)

`colorgrad.Scheme.Paired`
![img](img/scheme-paired.png)

`colorgrad.Scheme.Pastel1`
![img](img/scheme-pastel1.png)

`colorgrad.Scheme.Pastel2`
![img](img/scheme-pastel2.png)

`colorgrad.Scheme.Set1`
![img](img/scheme-set1.png)

`colorgrad.Scheme.Set2`
![img](img/scheme-set2.png)

`colorgrad.Scheme.Set3`
![img](img/scheme-set3.png)

### Random Colors

Expand Down
16 changes: 9 additions & 7 deletions gradset.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ func Inferno() Gradient {
return grad
}

// Sequential (Single Hue)

func Blues() Gradient {
colors := []string{"#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"}
grad, _ := NewGradient().
Expand All @@ -56,6 +58,13 @@ func Greens() Gradient {
return grad
}

func Greys() Gradient {
grad, _ := NewGradient().
HexColors("#ffffff", "#000000").
Build()
return grad
}

func Oranges() Gradient {
colors := []string{"#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"}
grad, _ := NewGradient().
Expand All @@ -79,10 +88,3 @@ func Reds() Gradient {
Build()
return grad
}

func Greys() Gradient {
grad, _ := NewGradient().
HexColors("#ffffff", "#000000").
Build()
return grad
}
2 changes: 1 addition & 1 deletion gradx.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func linspace(min, max float64, n uint) []float64 {
return res
}

// Convert []colorful.Color to []color.Color
// IntoColors convert []colorful.Color to []color.Color
func IntoColors(colors []colorful.Color) []color.Color {
res := make([]color.Color, len(colors))

Expand Down
Binary file added img/scheme-accent.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-category10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-dark2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-paired.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-pastel1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-pastel2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-set1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-set2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/scheme-set3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
114 changes: 114 additions & 0 deletions scheme.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package colorgrad

import (
"image/color"
)

type scheme struct {
Accent, Category10, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3 []color.Color
}

var Scheme scheme = scheme{
Accent: []color.Color{
color.RGBA{127, 201, 127, 255},
color.RGBA{190, 174, 212, 255},
color.RGBA{253, 192, 134, 255},
color.RGBA{255, 255, 153, 255},
color.RGBA{56, 108, 176, 255},
color.RGBA{240, 2, 127, 255},
color.RGBA{191, 91, 23, 255},
color.RGBA{102, 102, 102, 255},
},
Category10: []color.Color{
color.RGBA{31, 119, 180, 255},
color.RGBA{255, 127, 14, 255},
color.RGBA{44, 160, 44, 255},
color.RGBA{214, 39, 40, 255},
color.RGBA{148, 103, 189, 255},
color.RGBA{140, 86, 75, 255},
color.RGBA{227, 119, 194, 255},
color.RGBA{127, 127, 127, 255},
color.RGBA{188, 189, 34, 255},
color.RGBA{23, 190, 207, 255},
},
Dark2: []color.Color{
color.RGBA{27, 158, 119, 255},
color.RGBA{217, 95, 2, 255},
color.RGBA{117, 112, 179, 255},
color.RGBA{231, 41, 138, 255},
color.RGBA{102, 166, 30, 255},
color.RGBA{230, 171, 2, 255},
color.RGBA{166, 118, 29, 255},
color.RGBA{102, 102, 102, 255},
},
Paired: []color.Color{
color.RGBA{166, 206, 227, 255},
color.RGBA{31, 120, 180, 255},
color.RGBA{178, 223, 138, 255},
color.RGBA{51, 160, 44, 255},
color.RGBA{251, 154, 153, 255},
color.RGBA{227, 26, 28, 255},
color.RGBA{253, 191, 111, 255},
color.RGBA{255, 127, 0, 255},
color.RGBA{202, 178, 214, 255},
color.RGBA{106, 61, 154, 255},
color.RGBA{255, 255, 153, 255},
color.RGBA{177, 89, 40, 255},
},
Pastel1: []color.Color{
color.RGBA{251, 180, 174, 255},
color.RGBA{179, 205, 227, 255},
color.RGBA{204, 235, 197, 255},
color.RGBA{222, 203, 228, 255},
color.RGBA{254, 217, 166, 255},
color.RGBA{255, 255, 204, 255},
color.RGBA{229, 216, 189, 255},
color.RGBA{253, 218, 236, 255},
color.RGBA{242, 242, 242, 255},
},
Pastel2: []color.Color{
color.RGBA{179, 226, 205, 255},
color.RGBA{253, 205, 172, 255},
color.RGBA{203, 213, 232, 255},
color.RGBA{244, 202, 228, 255},
color.RGBA{230, 245, 201, 255},
color.RGBA{255, 242, 174, 255},
color.RGBA{241, 226, 204, 255},
color.RGBA{204, 204, 204, 255},
},
Set1: []color.Color{
color.RGBA{228, 26, 28, 255},
color.RGBA{55, 126, 184, 255},
color.RGBA{77, 175, 74, 255},
color.RGBA{152, 78, 163, 255},
color.RGBA{255, 127, 0, 255},
color.RGBA{255, 255, 51, 255},
color.RGBA{166, 86, 40, 255},
color.RGBA{247, 129, 191, 255},
color.RGBA{153, 153, 153, 255},
},
Set2: []color.Color{
color.RGBA{102, 194, 165, 255},
color.RGBA{252, 141, 98, 255},
color.RGBA{141, 160, 203, 255},
color.RGBA{231, 138, 195, 255},
color.RGBA{166, 216, 84, 255},
color.RGBA{255, 217, 47, 255},
color.RGBA{229, 196, 148, 255},
color.RGBA{179, 179, 179, 255},
},
Set3: []color.Color{
color.RGBA{141, 211, 199, 255},
color.RGBA{255, 255, 179, 255},
color.RGBA{190, 186, 218, 255},
color.RGBA{251, 128, 114, 255},
color.RGBA{128, 177, 211, 255},
color.RGBA{253, 180, 98, 255},
color.RGBA{179, 222, 105, 255},
color.RGBA{252, 205, 229, 255},
color.RGBA{217, 217, 217, 255},
color.RGBA{188, 128, 189, 255},
color.RGBA{204, 235, 197, 255},
color.RGBA{255, 237, 111, 255},
},
}
46 changes: 46 additions & 0 deletions scheme_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package colorgrad

import (
"image/color"
"testing"

"github.com/lucasb-eyer/go-colorful"
)

func TestScheme(t *testing.T) {
testScheme(t, Scheme.Accent)
testScheme(t, Scheme.Category10)
testScheme(t, Scheme.Dark2)
testScheme(t, Scheme.Paired)
testScheme(t, Scheme.Pastel1)
testScheme(t, Scheme.Pastel2)
testScheme(t, Scheme.Set1)
testScheme(t, Scheme.Set2)
testScheme(t, Scheme.Set3)
}

func testScheme(t *testing.T, colors []color.Color) {
grad, _ := NewGradient().
Colors(colors...).
Build()

if grad == nil {
t.Error("Grad is nil")
}

c1, _ := colorful.MakeColor(colors[0])
a1 := c1.Hex()
a2 := grad.At(0).Hex()

if a1 != a2 {
t.Errorf("Expected %v, got %v", a1, a2)
}

c2, _ := colorful.MakeColor(colors[len(colors)-1])
b1 := c2.Hex()
b2 := grad.At(1).Hex()

if b1 != b2 {
t.Errorf("Expected %v, got %v", b1, b2)
}
}

0 comments on commit 4db7938

Please sign in to comment.