Skip to content

Latest commit

 

History

History
315 lines (227 loc) · 6.55 KB

README.md

File metadata and controls

315 lines (227 loc) · 6.55 KB

colorgrad 🎨

go.dev reference go report Build Status codecov

Fun & easy way to create color gradient / color scales in Go (Golang).

color-scale

Index

Usages

Basic

import "github.com/mazznoer/colorgrad"
grad, err := colorgrad.NewGradient().Build()

if err != nil {
    panic(err)
}

// Get single color at certain position.
grad.At(0) // colorful.Color
grad.At(0.5).Hex() // hex color string
grad.At(1)

// Get n colors evenly spaced across gradient.
grad.Colors(27) // []colorful.Color
colorgrad.IntoColors(grad.Colors(10)) // []color.Color

img

Custom Colors

Colors() method accept anything that implement color.Color interface.

import "image/color"
import "github.com/lucasb-eyer/go-colorful"

grad, err := colorgrad.NewGradient().
    Colors(
        color.RGBA{0, 206, 209, 255},
        color.RGBA{255, 105, 180, 255},
        colorful.Color{R: 0.274, G: 0.5, B: 0.7},
        colorful.Hsv(50, 1, 1),
        colorful.Hsv(348, 0.9, 0.8),
    ).
    Mode(colorgrad.HCL).
    Build()

img

Using Hex Colors

grad, err := colorgrad.NewGradient().
    HtmlColors("#FFD700", "#00BFFF", "#FFD700").
    Build()

img

Named Colors

We can also use named colors as defined in the SVG 1.1 spec.

grad, err := colorgrad.NewGradient().
    HtmlColors("gold", "hotpink", "darkturquoise").
    Build()

img

Custom Domain

grad, err := colorgrad.NewGradient().
    HtmlColors("#DC143C", "#FFD700", "#4682b4").
    Build()

img

grad, err := colorgrad.NewGradient().
    HtmlColors("#DC143C", "#FFD700", "#4682b4").
    Domain(0, 0.35, 1).
    Build()

img

grad, err := colorgrad.NewGradient().
    HtmlColors("#DC143C", "#FFD700", "#4682b4").
    Domain(15, 60, 80).
    Build()

grad.At(15).Hex() // #DC143C
grad.At(75)
grad.At(80).Hex() // #4682b4

img

Blending Mode

grad, err := colorgrad.NewGradient().
    HtmlColors("#ff0", "#008ae5").
    Mode(colorgrad.LRGB).
    Build()

blend-modes

Beware of Invalid RGB Color

Read it here.

grad, err := colorgrad.NewGradient().
    HtmlColors("#DC143C", "#FFD700", "#4682b4").
    Mode(colorgrad.HCL).
    Build()

grad.At(t) // might get invalid RGB color
grad.At(t).Clamped() // return closest valid RGB color

Without Clamped() invalig rgb

With Clamped() valid rgb

Hard-Edged Gradient

grad1, err := colorgrad.NewGradient().
    HtmlColors("#18dbf4", "#f6ff56").
    Domain(0, 100).
    Build()

img

grad2 := colorgrad.SharpGradient(grad1, 7)

img

Note: Result gradient from SharpGradient() will always in the range 0..1.

Preset Gradients

grad := colorgrad.Rainbow()
grad.At(t) // t in the range 0..1
grad.Colors(15)

Diverging

colorgrad.BrBG() img

colorgrad.PRGn() img

colorgrad.PiYG() img

colorgrad.PuOr() img

colorgrad.RdBu() img

colorgrad.RdGy() img

colorgrad.RdYlBu() img

colorgrad.RdYlGn() img

colorgrad.Spectral() img

Sequential (Single Hue)

colorgrad.Blues() img

colorgrad.Greens() img

colorgrad.Greys() img

colorgrad.Oranges() img

colorgrad.Purples() img

colorgrad.Reds() img

Sequential (Multi-Hue)

colorgrad.Turbo() img

colorgrad.Viridis() img

colorgrad.Inferno() img

colorgrad.Magma() img

colorgrad.Plasma() img

colorgrad.Cividis() img

colorgrad.Warm() img

colorgrad.Cool() img

colorgrad.CubehelixDefault() img

Cyclical

colorgrad.Rainbow() img

colorgrad.Sinebow() img

Color Scheme

colorgrad.Scheme.Accent img

colorgrad.Scheme.Category10 img

colorgrad.Scheme.Dark2 img

colorgrad.Scheme.Paired img

colorgrad.Scheme.Pastel1 img

colorgrad.Scheme.Pastel2 img

colorgrad.Scheme.Set1 img

colorgrad.Scheme.Set2 img

colorgrad.Scheme.Set3 img

Gallery

Noise + hard-edged gradient noise

Random cool colors random-color

Playground

Dependencies

Inspirations