A color is stored internally using sRGB (standard RGB) values in the range 0-1Bfloat64Gfloat64Rfloat64 Check for equality between colors within the tolerance Delta (1/255). BlendHcl blends two colors in the CIE-L*C*h° color-space, which should result in a smoother blend.
t == 0 results in c1, t == 1 results in c2 You don't really want to use this, do you? Go for BlendLab, BlendLuv or BlendHcl. BlendLab blends two colors in the L*a*b* color-space, which should result in a smoother blend.
t == 0 results in c1, t == 1 results in c2 BlendLuv blends two colors in the CIE-L*u*v* color-space, which should result in a smoother blend.
t == 0 results in c1, t == 1 results in c2 BlendLuvLCh blends two colors in the cylindrical CIELUV color space.
t == 0 results in c1, t == 1 results in c2 You don't really want to use this, do you? Go for BlendLab, BlendLuv or BlendHcl. Returns Clamps the color into valid range, clamping each value to [0..1]
If the color is valid already, this is a no-op. DistanceCIE76 is the same as DistanceLab. Uses the CIE94 formula to calculate color distance. More accurate than
DistanceLab, but also more work. DistanceCIEDE2000 uses the Delta E 2000 formula to calculate color
distance. It is more expensive but more accurate than both DistanceLab
and DistanceCIE94. DistanceCIEDE2000klch uses the Delta E 2000 formula with custom values
for the weighting factors kL, kC, and kH. DistanceHPLuv calculates Euclidean distance in the HPLuv colorspace. No idea
how useful this is.
The Hue value is divided by 100 before the calculation, so that H, S, and L
have the same relative ranges. DistanceHSLuv calculates Euclidan distance in the HSLuv colorspace. No idea
how useful this is.
The Hue value is divided by 100 before the calculation, so that H, S, and L
have the same relative ranges. DistanceLab is a good measure of visual similarity between two colors!
A result of 0 would mean identical colors, while a result of 1 or higher
means the colors differ a lot. DistanceLinearRGB computes the distance between two colors in linear RGB
space. This is not useful for measuring how humans perceive color, but
might be useful for other things, like dithering. DistanceLuv is a good measure of visual similarity between two colors!
A result of 0 would mean identical colors, while a result of 1 or higher
means the colors differ a lot. DistanceRgb computes the distance between two colors in RGB space.
This is not a good measure! Rather do it in Lab space. FastLinearRgb is much faster than and almost as accurate as LinearRgb.
BUT it is important to NOTE that they only produce good results for valid colors r,g,b in [0,1]. HPLuv returns the Hue, Saturation and Luminance of the color in the HSLuv
color space. Hue in [0..360], a Saturation [0..1], and a Luminance
(lightness) in [0..1].
Note that HPLuv can only represent pastel colors, and so the Saturation
value could be much larger than 1 for colors it can't represent. HSLuv returns the Hue, Saturation and Luminance of the color in the HSLuv
color space. Hue in [0..360], a Saturation [0..1], and a Luminance
(lightness) in [0..1]. Converts the given color to HCL space using D65 as reference white.
H values are in [0..360], C and L values are in [0..1] although C can overshoot 1.0 Converts the given color to HCL space, taking into account
a given reference white. (i.e. the monitor's white)
H values are in [0..360], C and L values are in [0..1] Hex returns the hex "html" representation of the color, as in #ff0080. Hsl returns the Hue [0..360], Saturation [0..1], and Luminance (lightness) [0..1] of the color. Hsv returns the Hue [0..360], Saturation and Value [0..1] of the color. Checks whether the color exists in RGB space, i.e. all values are in [0..1] Converts the given color to CIE L*a*b* space using D65 as reference white. Converts the given color to CIE L*a*b* space, taking into account
a given reference white. (i.e. the monitor's white) LinearRgb converts the color into the linear RGB space (see http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/). Converts the given color to CIE L*u*v* space using D65 as reference white.
L* is in [0..1] and both u* and v* are in about [-1..1] Converts the given color to LuvLCh space using D65 as reference white.
h values are in [0..360], C and L values are in [0..1] although C can overshoot 1.0 Converts the given color to LuvLCh space, taking into account
a given reference white. (i.e. the monitor's white)
h values are in [0..360], c and l values are in [0..1] Converts the given color to CIE L*u*v* space, taking into account
a given reference white. (i.e. the monitor's white)
L* is in [0..1] and both u* and v* are in about [-1..1] Might come in handy sometimes to reduce boilerplate code. Implement the Go color.Color interface. Converts the given color to CIE xyY space using D65 as reference white.
(Note that the reference white is only used for black input.)
x, y and Y are in [0..1] Converts the given color to CIE xyY space, taking into account
a given reference white. (i.e. the monitor's white)
(Note that the reference white is only used for black input.)
x, y and Y are in [0..1]( Color) Xyz() (x, y, z float64)
Color : database/sql/driver.Validator
Color : image/color.Color
func FastHappyColor() Color
func FastHappyPalette(colorsCount int) (colors []Color)
func FastLinearRgb(r, g, b float64) Color
func FastWarmColor() Color
func FastWarmPalette(colorsCount int) (colors []Color)
func HappyColor() (c Color)
func HappyPalette(colorsCount int) ([]Color, error)
func Hcl(h, c, l float64) Color
func HclWhiteRef(h, c, l float64, wref [3]float64) Color
func Hex(scol string) (Color, error)
func HPLuv(h, s, l float64) Color
func Hsl(h, s, l float64) Color
func HSLuv(h, s, l float64) Color
func Hsv(H, S, V float64) Color
func Lab(l, a, b float64) Color
func LabWhiteRef(l, a, b float64, wref [3]float64) Color
func LinearRgb(r, g, b float64) Color
func Luv(l, u, v float64) Color
func LuvLCh(l, c, h float64) Color
func LuvLChWhiteRef(l, c, h float64, wref [3]float64) Color
func LuvWhiteRef(l, u, v float64, wref [3]float64) Color
func MakeColor(col color.Color) (Color, bool)
func SoftPalette(colorsCount int) ([]Color, error)
func SoftPaletteEx(colorsCount int, settings SoftPaletteSettings) ([]Color, error)
func WarmColor() (c Color)
func WarmPalette(colorsCount int) ([]Color, error)
func Xyy(x, y, Y float64) Color
func Xyz(x, y, z float64) Color
func Color.BlendHcl(col2 Color, t float64) Color
func Color.BlendHsv(c2 Color, t float64) Color
func Color.BlendLab(c2 Color, t float64) Color
func Color.BlendLuv(c2 Color, t float64) Color
func Color.BlendLuvLCh(col2 Color, t float64) Color
func Color.BlendRgb(c2 Color, t float64) Color
func Color.Clamped() Color
func Color.AlmostEqualRgb(c2 Color) bool
func Color.BlendHcl(col2 Color, t float64) Color
func Color.BlendHsv(c2 Color, t float64) Color
func Color.BlendLab(c2 Color, t float64) Color
func Color.BlendLuv(c2 Color, t float64) Color
func Color.BlendLuvLCh(col2 Color, t float64) Color
func Color.BlendRgb(c2 Color, t float64) Color
func Color.DistanceCIE76(c2 Color) float64
func Color.DistanceCIE94(cr Color) float64
func Color.DistanceCIEDE2000(cr Color) float64
func Color.DistanceCIEDE2000klch(cr Color, kl, kc, kh float64) float64
func Color.DistanceHPLuv(c2 Color) float64
func Color.DistanceHSLuv(c2 Color) float64
func Color.DistanceLab(c2 Color) float64
func Color.DistanceLinearRGB(c2 Color) float64
func Color.DistanceLuv(c2 Color) float64
func Color.DistanceRgb(c2 Color) float64
A function which can be used to restrict the allowed color-space. The higher, the better quality but the slower. Usually two figures. Use up to 160000 or 8000 samples of the L*a*b* space (and thus calls to CheckColor).
Set this to true only if your CheckColor shapes the Lab space weirdly.
func SoftPaletteEx(colorsCount int, settings SoftPaletteSettings) ([]Color, error)
Package-Level Functions (total 49)
Creates a random bright, "pimpy" color through a restricted HSV space.
Uses the HSV color space to generate colors with similar S,V but distributed
evenly along their Hue. This is fast but not always pretty.
If you've got time to spare, use Lab (the non-fast below).
FastLinearRgb is much faster than and almost as accurate as LinearRgb.
BUT it is important to NOTE that they only produce good results for valid inputs r,g,b in [0,1].
Creates a random dark, "warm" color through a restricted HSV space.
Uses the HSV color space to generate colors with similar S,V but distributed
evenly along their Hue. This is fast but not always pretty.
If you've got time to spare, use Lab (the non-fast below).
Creates a random bright, "pimpy" color through restricted HCL space.
This is slower than FastHappyColor but will likely give you colors which
have the same "brightness" if you run it many times.
Generates a color by using data given in HCL space using D65 as reference white.
H values are in [0..360], C and L values are in [0..1]
WARNING: many combinations of `h`, `c`, and `l` values do not have corresponding
valid RGB values, check the FAQ in the README if you're unsure.
Generates a color by using data given in HCL space, taking
into account a given reference white. (i.e. the monitor's white)
H values are in [0..360], C and L values are in [0..1]
Hex parses a "html" hex color-string, either in the 3 "#f0c" or 6 "#ff1034" digits form.
HPLuv creates a new Color from values in the HPLuv color space.
Hue in [0..360], a Saturation [0..1], and a Luminance (lightness) in [0..1].
The returned color values are clamped (using .Clamped), so this will never output
an invalid color.
Hsl creates a new Color given a Hue in [0..360], a Saturation [0..1], and a Luminance (lightness) in [0..1]
HSLuv creates a new Color from values in the HSLuv color space.
Hue in [0..360], a Saturation [0..1], and a Luminance (lightness) in [0..1].
The returned color values are clamped (using .Clamped), so this will never output
an invalid color.
Hsv creates a new Color given a Hue in [0..360], a Saturation and a Value in [0..1]
Generates a color by using data given in CIE L*a*b* space using D65 as reference white.
WARNING: many combinations of `l`, `a`, and `b` values do not have corresponding
valid RGB values, check the FAQ in the README if you're unsure.
Generates a color by using data given in CIE L*u*v* space using D65 as reference white.
L* is in [0..1] and both u* and v* are in about [-1..1]
WARNING: many combinations of `l`, `u`, and `v` values do not have corresponding
valid RGB values, check the FAQ in the README if you're unsure.
Generates a color by using data given in LuvLCh space using D65 as reference white.
h values are in [0..360], C and L values are in [0..1]
WARNING: many combinations of `l`, `c`, and `h` values do not have corresponding
valid RGB values, check the FAQ in the README if you're unsure.
Generates a color by using data given in LuvLCh space, taking
into account a given reference white. (i.e. the monitor's white)
h values are in [0..360], C and L values are in [0..1]
Generates a color by using data given in CIE L*u*v* space, taking
into account a given reference white. (i.e. the monitor's white)
L* is in [0..1] and both u* and v* are in about [-1..1]
Constructs a colorful.Color from something implementing color.Color
A wrapper which uses common parameters.
Yeah, windows-stype Foo, FooEx, screw you golang...
Uses K-means to cluster the color-space and return the means of the clusters
as a new palette of distinctive colors. Falls back to K-medoid if the mean
happens to fall outside of the color-space, which can only happen if you
specify a CheckColor function.
Creates a random dark, "warm" color through restricted HCL space.
This is slower than FastWarmColor but will likely give you colors which have
the same "warmness" if you run it many times.
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.