csscolorparser

package module
v0.1.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: MIT Imports: 4 Imported by: 36

README

Go Language CSS Color Parser Library

PkgGoDev Build Status go report

Go library for parsing CSS color string as defined in the W3C's CSS Color Module Level 4.

Supported Color Format

  • Named colors
  • RGB hexadecimal (with and without # prefix)
    • Short format #rgb
    • Short format with alpha #rgba
    • Long format #rrggbb
    • Long format with alpha #rrggbbaa
  • rgb() and rgba()
  • hsl() and hsla()
  • hwb()
  • lab()
  • lch()
  • oklab()
  • oklch()
  • hwba(), hsv(), hsva() - not in CSS standard.

Usage Examples

import "github.com/mazznoer/csscolorparser"

c, err := csscolorparser.Parse("gold")

if err != nil {
    panic(err)
}

fmt.Printf("R:%.3f, G:%.3f, B:%.3f, A:%.3f", c.R, c.G, c.B, c.A) // R:1.000, G:0.843, B:0.000, A:1.000
fmt.Println(c.RGBA255())   // 255 215 0 255
fmt.Println(c.HexString()) // #ffd700
fmt.Println(c.RGBString()) // rgb(255 215 0)

Try It Online

Similar Projects

Documentation

Overview

Package csscolorparser provides function for parsing CSS color string as defined in the W3C's CSS color module level 4.

Example
package main

import (
	"fmt"

	"github.com/mazznoer/csscolorparser"
)

func main() {
	c, err := csscolorparser.Parse("rgb(100% 0% 0% / 50%)")

	if err != nil {
		panic(err)
	}

	fmt.Printf("R:%.3f, G:%.3f, B:%.3f, A:%.3f\n", c.R, c.G, c.B, c.A)
	fmt.Println(c.RGBA255())
	fmt.Println(c.HexString())
	fmt.Println(c.RGBString())
}
Output:

R:1.000, G:0.000, B:0.000, A:0.500
255 0 0 128
#ff000080
rgb(255 0 0 / 50%)

Index

Examples

Constants

This section is empty.

Variables

View Source
var NamedColors = map[string][3]uint8{}/* 148 elements not displayed */

Functions

This section is empty.

Types

type Color

type Color struct {
	R, G, B, A float64
}

R, G, B, A values in the range 0..1

func FromHsl added in v0.1.4

func FromHsl(h, s, l, a float64) Color

FromHsl creates a Color from HSL colors.

Arguments:

  • h: Hue angle [0..360]
  • s: Saturation [0..1]
  • l: Lightness [0..1]
  • a: Alpha [0..1]

func FromHsv added in v0.1.4

func FromHsv(h, s, v, a float64) Color

FromHsv creates a Color from HSV colors.

Arguments:

  • h: Hue angle [0..360]
  • s: Saturation [0..1]
  • v: Value [0..1]
  • a: Alpha [0..1]

func FromHwb added in v0.1.4

func FromHwb(h, w, b, a float64) Color

FromHwb creates a Color from HWB colors.

Arguments:

  • h: Hue angle [0..360]
  • w: Whiteness [0..1]
  • b: Blackness [0..1]
  • a: Alpha [0..1]

func FromLab added in v0.1.7

func FromLab(l, a, b, alpha float64) Color

func FromLch added in v0.1.7

func FromLch(l, c, h, alpha float64) Color

func FromLinearRGB added in v0.1.4

func FromLinearRGB(r, g, b, a float64) Color

FromLinearRGB creates a Color from linear-light RGB colors.

Arguments:

  • r: Red value [0..1]
  • g: Green value [0..1]
  • b: Blue value [0..1]
  • a: Alpha value [0..1]

func FromOklab added in v0.1.4

func FromOklab(l, a, b, alpha float64) Color

FromOklab creates a Color from Oklab colors.

Arguments:

  • l: Perceived lightness
  • a: How green/red the color is
  • b: How blue/yellow the color is
  • alpha: Alpha [0..1]

func FromOklch added in v0.1.4

func FromOklch(l, c, h, alpha float64) Color

FromOklch creates a Color from OKLCh colors.

Arguments:

  • l: Perceived lightness
  • c: Chroma
  • h: Hue angle in radians
  • alpha: Alpha [0..1]

func Parse

func Parse(s string) (Color, error)

Parse parses CSS color string and returns, if successful, a Color.

func (Color) Clamp added in v0.1.5

func (c Color) Clamp() Color

Clamp restricts R, G, B, A values to the range 0..1.

func (Color) HexString

func (c Color) HexString() string

HexString returns CSS hexadecimal string.

func (Color) MarshalText added in v0.1.3

func (c Color) MarshalText() ([]byte, error)

Implement the Go TextMarshaler interface

func (Color) Name added in v0.1.3

func (c Color) Name() (string, bool)

Name returns name of this color if its available.

Example
package main

import (
	"fmt"

	"github.com/mazznoer/csscolorparser"
)

func main() {
	c, err := csscolorparser.Parse("#ffd700")

	if err != nil {
		panic(err)
	}

	fmt.Println(c.RGBString())
	name, _ := c.Name()
	fmt.Println(name)
}
Output:

rgb(255 215 0)
gold

func (Color) RGBA

func (c Color) RGBA() (r, g, b, a uint32)

Implement the Go color.Color interface.

func (Color) RGBA255

func (c Color) RGBA255() (r, g, b, a uint8)

RGBA255 returns R, G, B, A values in the range 0..255

func (Color) RGBString

func (c Color) RGBString() string

RGBString returns CSS RGB string.

func (*Color) UnmarshalText added in v0.1.3

func (c *Color) UnmarshalText(text []byte) error

Implement the Go TextUnmarshaler interface

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL