clojure2d.color documentation (original) (raw)

Color functions.

This namespace contains color manipulation functions which can be divided into following groups:

Representation

Color can be represented by following types:

To create color from individual channel values use color function. To create gray for given intensity call gray.

By default color is treated as RGB with values from ranges [0.0-255.0] inclusive.

All funtions internally convert any color representation to Vec4 type using to-color function..

Coloured list of all names

Color/ channel manipulations

You can access individual channels by calling on of the following:

set-ch0, set-ch1, set-ch2 and set-alpha return new color with respective channel set to new value.

General set-channel and get-channel can work with any colorspace.

To make color darker/brighter use darken / lighten functions. Operations are done in Lab color space.

To change saturation call saturate / desaturate. Operations are done in LCH color space.

You can also modulate color (ie. multiply by given value).

Conversions

Color can be converted from RGB to other color space (and back). List of color spaces are listed under colorspaces-list variable. There are two types of conversions:

NOTE: there is no information which color space is used. It’s just a matter of your interpretation.

NOTE 2: be aware that converting function do not clamp any values to/from expected range.

Color space conversion functions are collected in two maps colorspaces for raw and colorspaces* for normalized functions. Keys are color space names as keyword and values are vectors with to- fn as first and from- fn as second element.

Palettes / gradients

List of all defined colors and palettes:

Palette

Palette is just sequence of colors.

There are plenty of them predefined or can be generated:

Call palette without any parameters to get list of predefined gradients.

Gradient

Gradient is continuous functions which accepts value from [0-1] range and returns color. Call gradient to create one.

Call gradient without any parameters to obtain list of predefined gradients.

Use gradient to convert any palette to gradient or access predefined gradients by keyword.

Conversions

To convert palette to gradient call gradient function. You can set interpolation method and colorspace. To convert gradient to palette call palette function.

Call palette to resample palette to other number of colors. Internally input palette is converted to gradient and sampled back.

Use lerp, lerp+, mix, average, mixbox to mix two colors in different ways.

Distances

Several functions to calculate difference between colors, delta-E*-xxx etc.

References

Constants

Code snippets

Compose two cockatoo images (one is rotated) with given blend method.

(defn blend-images
  [f params & opts]
  (let [n (str "images/color/" (first opts) ".jpg")]
    (c2d/save (p/compose-channels f false i1 i2) (str "docs/" n))
    (str "../" n)))

achromatomaly

achromatopsia

adjust

(adjust col colorspace channel value) (adjust col channel value)

Adjust (add) given value to a chosen channel. Works with any color space.

adjust-temperature

(adjust-temperature c temp) (adjust-temperature c temp amount)

Examples

Without adjustment

(palette 0)

Cool

(mapv (fn* [p1__25403#] (adjust-temperature p1__25403# :cool 0.5)) (palette 0))

Warm

(mapv (fn* [p1__25404#] (adjust-temperature p1__25404# :warm 0.5)) (palette 0))

Without adjustment

(gradient [:white :black])

Cold

(comp (fn* [p1__25405#] (adjust-temperature p1__25405# 10000))
      (gradient [:white :black]))

Hot

(comp (fn* [p1__25406#] (adjust-temperature p1__25406# 1000))
      (gradient [:white :black]))

Adjust color

(adjust-temperature :red 30000)

[#ff8b98] #vec4 [300.96823381696873, 138.67167493994484, 152.3255750376689, 255.0]

alpha

(alpha c)

Examples

Usage

(alpha 85271861)
;;=> 5.0
(alpha :khaki)
;;=> 255.0

apply-theme

(apply-theme color color-theme)

Apply theme to the color, see color-themes for names.

Generates random color similar to provided one. All operations are done in LSH* color space (normalized to have values between 0 and 255).

Color theme can be one of:

average

(average cs colorspace) (average cs)

Average colors in given colorspace (default: :sRGB)

Examples

Average in RGB

(average [:yellow :red :teal "#dddddd"])

[#b79757] #vec4 [182.75, 151.0, 87.25, 255.0]

Average in LAB

(average [:yellow :red :teal "#dddddd"] :LAB)

[#d3a96a] #vec4 [210.61859591186501, 168.97690969943264, 105.63239334800473, 255.0]

Average in HSL

(average [:yellow :red :teal "#dddddd"] :LCH)

[#d5aa41] #vec4 [213.2268689301321, 169.67185072866008, 65.36869280587734, 255.0]

awt-color

(awt-color c) (awt-color c a) (awt-color r g b) (awt-color r g b a)

Create java.awt.Color object.

See also color, gray.

Examples

Usage

(awt-color :yellow)
;;=> java.awt.Color[r=255,g=255,b=0]
(awt-color 6 5 4 11)
;;=> java.awt.Color[r=6,g=5,b=4]

Usage

(awt-color 200 200 112 200)

[#c8c870c8] java.awt.Color[r=200,g=200,b=112]

awt-gray

(awt-gray v) (awt-gray v a)

Create grayscale color based on intensity v. Optional parameter alpha a.

AWT version of gray. See also awt-color

Examples

Usage

(awt-gray 23)

[#171717] java.awt.Color[r=23,g=23,b=23]

blacken

(blacken col) (blacken col amt)

Change color towards black.

Works in HSB color space. Default amount is set to 0.2 and changes B channel by this amount.

blue

(blue c)

Returns blue (third channel) value.

Examples

Usage

(blue 1385781)
;;=> 53.0
(blue :khaki)
;;=> 140.0

brighten

(brighten col) (brighten col amt)

Change luma for givent color by given amount.

Works in LAB color space. Default amount is 1.0 and means change luma in LAB of 18.0.

See darken.

Examples

Make palette

(take 10 (iterate (fn [c] (brighten c 0.5)) "03100f"))

Given color

:khaki

[#f0e68c] :khaki

Brighten

(brighten :khaki 0.5)

[#ffffa4] #vec4 [255.0, 255.0, 164.31629723571075, 255.0]

brightness

(brightness amount)

ch0

(ch0 c)

Returns first channel value. Same as red.

Examples

Usage

(ch0 1385781)
;;=> 21.0
(ch0 :khaki)
;;=> 240.0

ch1

(ch1 c)

Returns second channel value. Same as green.

Examples

Usage

(ch0 1385781)
;;=> 21.0
(ch1 :khaki)
;;=> 230.0

ch2

(ch2 c)

Returns third channel value. Same as blue.

Examples

Usage

(ch0 1385781)
;;=> 21.0
(ch2 :khaki)
;;=> 140.0

clamp

(clamp c)

Clamp all color channels to [0-255] range.

Examples

Usage

(clamp (color 304 -123 3.4 22.9))
;;=> [255.0 0.0 3.4 22.9]

color

(color c) (color c a) (color r g b) (color r g b a)

Create Vec4 object as color representation.

Arity:

See also gray. awt-color, awt-gray.

Examples

Usage

(color :yellow)
;;=> [255.0 255.0 0.0 255.0]
(color :yellow 112)
;;=> [255.0 255.0 0.0 112.0]
(color 1 2 3)
;;=> [1.0 2.0 3.0 255.0]
(color 6 5 4 11)
;;=> [6.0 5.0 4.0 11.0]

Usage

(color 88 55 44 200)

[#58372cc8] #vec4 [88.0, 55.0, 44.0, 200.0]

color-converter

(color-converter cs ch1-scale ch2-scale ch3-scale ch4-scale) (color-converter cs ch1-scale ch2-scale ch3-scale) (color-converter cs ch-scale) (color-converter cs)

Create function which converts provided color from cs color space using ch-scale as maximum value. (to simulate Processing colorMode fn).

Arity:

Examples

When you pass only color space, returns normalized from-XXX* function.

(color-converter :YUV)
;;=> clojure2d.color$from_YUV_STAR_@240a5e03
((color-converter :YUV) [158 94 85])
;;=> [98.41664563604795 199.87300611584595 98.66638916508842 255.0]

You can set maximum value for all channels or individually.

((color-converter :HCL 1.0) [0.5 0.5 0.5 0.5])
;;=> [135.01981120332636 7.989282785560203 7.7392236592269334 127.5]
((color-converter :HCL 100.0) [50 50 50 50])
;;=> [135.01981120332636 7.989282785560203 7.7392236592269334 127.5]
((color-converter :HCL 10 20 30) [5 10 15 127.5])
;;=> [135.01981120332636 7.989282785560203 7.7392236592269334 127.5]
((color-converter :HCL 10 20 30 40) [5 10 15 20])
;;=> [135.01981120332636 7.989282785560203 7.7392236592269334 127.5]

You can set maximum value for each channel separately. Here makes conversion from HSL color space where hue is from range 0-360, saturation and lightness from 0-100. Alpha is from range 0-255.

((color-converter :HCL 360.0 100.0 100.0) [240 50 50])

[#878708] #vec4 [134.93629417694882, 135.01981120332636, 7.7392236592269334, 255.0]

color-themes

colorspaces

Map of all color spaces functions.

Examples

Example conversion

(let [[to from] (colorspaces :Cubehelix)] (mapv m/approx (from (to [100 200 50]))))

[#64c832] [100.0 200.0 50.0 255.0]

colorspaces*

Map of all color spaces functions (normalized).

Examples

Example conversion

(let [[to from] (colorspaces* :Cubehelix)] (mapv m/approx (from (to [100 200 50]))))

[#64c832] [100.0 200.0 50.0 255.0]

colorspaces-list

List of all color space names.

Examples

List of color spaces

colorspaces-list
;;=> (:CMY
;;=>  :Cubehelix :DIN99
;;=>  :DIN99b :DIN99c
;;=>  :DIN99d :DIN99o
;;=>  :GLHS :Gray
;;=>  :HCL :HSB
;;=>  :HSI :HSL
;;=>  :HSV :HWB
;;=>  :HunterLAB :IPT
;;=>  :IgPgTg :JAB
;;=>  :JCH :LAB
;;=>  :LCH :LCHuv
;;=>  :LMS :LUV
;;=>  :OHTA :OSA
;;=>  :Okhsl :Okhsv
;;=>  :Okhwb :Oklab
;;=>  :Oklch :PalettonHSV
;;=>  :RGB :RYB
;;=>  :UCS :UVW
;;=>  :XYB :XYZ
;;=>  :XYZ1 :YCbCr
;;=>  :YCgCo :YDbDr
;;=>  :YIQ :YPbPr
;;=>  :YUV :Yxy
;;=>  :linearRGB :sRGB)

complementary

(complementary c) (complementary c colorspace)

Create complementary color. Possible colorspaces are:

contrast

(contrast amount)

contrast-ratio

(contrast-ratio c1 c2)

WCAG contrast ratio.

Based on YUV luma.

Examples

Contrast ratio

(contrast-ratio :pink :hotpink)
;;=> 1.721333484484812

Contrast ratio

(contrast-ratio :pink :purple)
;;=> 6.124032763373899

correct-luma

(correct-luma palette-or-gradient) (correct-luma palette-or-gradient gradient-params)

Create palette or gradient with corrected luma to be linear.

See here

Examples

Before correction

(gradient [:black :red :yellow :white])

After correction

(correct-luma (gradient [:black :red :yellow :white]))

No correction

(palette [:lightyellow :orangered :deeppink :darkred] 9)

B-Spline interpolation

(palette [:lightyellow :orangered :deeppink :darkred] 9 {:colorspace :LAB, :interpolation :b-spline})

Lightness correction

(correct-luma (palette [:lightyellow :orangered :deeppink :darkred] 9))

Both

(correct-luma (palette [:lightyellow :orangered :deeppink :darkred] 9 {:colorspace :LAB, :interpolation :b-spline}))

darken

(darken col) (darken col amt)

Change luma for givent color by given amount.

Works in LAB color space. Default amount is 1.0 and means change luma in LAB of -18.0.

See brighten.

Examples

Make palette

(take 10 (iterate (fn [c] (darken c 0.5)) :amber))

Given color

:khaki

[#f0e68c] :khaki

Darken

(darken :khaki 2.0)

[#8a8530] #vec4 [138.03857911998404, 132.60589663161204, 47.6473866116511, 255.0]

delta-c

deprecated in Use delta-C*

delta-C*

(delta-C* c1 c2)

ΔC*_ab difference, chroma difference in LAB color space, CIE 1976

delta-C-RGB

(delta-C-RGB c1 c2)

delta-D-HCL

(delta-D-HCL c1 c2)

Color difference in HCL (Sarifuddin and Missaou) color space

delta-E*

(delta-E* c1 c2)

ΔE*_ab difference, CIE 1976

delta-E*-2000

(delta-E*-2000 c1 c2) (delta-E*-2000 c1 c2 l c h)

delta-E*-94

(delta-E*-94 c1 c2)

delta-E*-CMC

(delta-E*-CMC c1 c2) (delta-E*-CMC c1 c2 l c)

ΔE* CMC difference

Parameters l and c defaults to 1.0. Other common settings is l=2.0 and c=1.0.

delta-E*-euclidean

(delta-E*-euclidean c1 c2) (delta-E*-euclidean c1 c2 colorspace)

delta-e-cie

deprecated in Use delta-E*

Delta E CIE distance (euclidean in LAB colorspace.

delta-e-cmc

deprecated in Use delta-E*-CMC

delta-E-HyAB

(delta-E-HyAB c1 c2)

delta-e-jab

deprecated in Use delta-e-jab

delta-E-z

(delta-E-z c1 c2)

ΔE* calculated in JAB color space.

delta-h

deprecated in Use delta-H*

delta-H*

(delta-H* c1 c2)

ΔH* difference, hue difference in LAB, CIE 1976

desaturate

(desaturate col) (desaturate col amt)

Change color saturation in LCH color space.

Examples

Make palette

(take 10 (iterate desaturate (from-HSL (color 300 1.0 0.5))))

deuteranomaly

deuteranopia

exposure

(exposure amount)

fe-color-matrix

(fe-color-matrix [r1 r2 r3 r4 r5 g1 g2 g3 g4 g5 b1 b2 b3 b4 b5 a1 a2 a3 a4 a5])

Create a feColorMatrix operator.

find-gradient

find-palette

format-hex

(format-hex c)

Convert color to hex string (css).

When alpha is lower than 255.0, #rgba is returned.

Examples

Usage

(format-hex :maroon)
;;=> #800000
(format-hex (color 4 55 222))
;;=> #0437de
(format-hex (color 4 55 222 127.5))
;;=> #0437de80

from-CMY

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-CMY (to-CMY "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-CMY*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-CMY* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Cubehelix

(from-Cubehelix c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Cubehelix (to-Cubehelix "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-Cubehelix*

(from-Cubehelix* c)

Cubehelix -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Cubehelix* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-DIN99

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-DIN99 (to-DIN99 "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-DIN99*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-DIN99* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-DIN99b

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-DIN99b (to-DIN99b "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-DIN99b*

DIN99b -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-DIN99b* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-DIN99c

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-DIN99c (to-DIN99c "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-DIN99c*

DIN99c -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-DIN99c* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-DIN99d

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-DIN99d (to-DIN99d "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-DIN99d*

DIN99d -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-DIN99d* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-DIN99o

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-DIN99o (to-DIN99o "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-DIN99o*

DIN99o -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-DIN99o* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-GLHS

(from-GLHS c)

GLHS -> RGB

For ranges, see to-GLHS.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-GLHS (to-GLHS "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-GLHS*

(from-GLHS* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-GLHS* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Gray

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Gray (to-Gray "#7a03fe")))

[#2e2e2e] #vec4 [46.0, 46.0, 46.0, 255.0]

from-Gray*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Gray* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-HCL

(from-HCL c)

HCL -> RGB, by Sarifuddin and Missaou.

For accepted ranges, see to-HCL.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-HCL (to-HCL "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-HCL*

(from-HCL* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-HCL* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-HSB

HSB(V) -> RGB, normalized (see from-HSV)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-HSB (to-HSB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-HSB*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-HSB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-HSI

(from-HSI c)

HSI -> RGB

For ranges, see to-HSI.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-HSI (to-HSI "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-HSI*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-HSI* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-HSL

(from-HSL c)

HSL -> RGB

For ranges, see to-HSL.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-HSL (to-HSL "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-HSL*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-HSL* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-HSV

(from-HSV c)

HSV -> RGB

Same as HSB.

For ranges, see to-HSV.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-HSV (to-HSV "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-HSV*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-HSV* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-HunterLAB

(from-HunterLAB c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-HunterLAB (to-HunterLAB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-HunterLAB*

(from-HunterLAB* c)

HunterLAB -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-HunterLAB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-HWB

(from-HWB c)

HWB -> RGB

For ranges, see to-HWB.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-HWB (to-HWB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-HWB*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-HWB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-IgPgTg

(from-IgPgTg c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-IgPgTg (to-IgPgTg "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-IgPgTg*

(from-IgPgTg* c)

IgPgTg -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-IgPgTg* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-IPT

(from-IPT c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-IPT (to-IPT "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-IPT*

(from-IPT* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-IPT* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-JAB

(from-JAB c)

JzAzBz -> RGB

For ranges, see to-JAB.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-JAB (to-JAB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-JAB*

(from-JAB* c)

JzAzBz -> RGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-JAB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-JCH

(from-JCH c)

JCH -> RGB

For ranges, see to-JCH.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-JCH (to-JCH "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-JCH*

(from-JCH* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-JCH* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-LAB

(from-LAB c)

LAB -> RGB,

For ranges, see to-LAB

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-LAB (to-LAB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-LAB*

(from-LAB* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-LAB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-LCH

(from-LCH c)

LCH -> RGB

For ranges, see to-LCH.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-LCH (to-LCH "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-LCH*

(from-LCH* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-LCH* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-LCHuv

(from-LCHuv c)

LCHuv -> RGB

For ranges, see to-LCH.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-LCHuv (to-LCHuv "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-LCHuv*

(from-LCHuv* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-LCHuv* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-linear

(from-linear v)

Gamma correction (gamma=1/2.4), lighten

Examples

Gamma correction

(from-linear 0.5)
;;=> 0.7353569830524495

from-linearRGB

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-linearRGB (to-linearRGB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-linearRGB*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-linearRGB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-LMS

(from-LMS c)

LMS -> RGB, D65

Ranges: 0.0 - 100.0

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-LMS (to-LMS "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-LMS*

(from-LMS* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-LMS* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-luma-color-hue

(from-luma-color-hue from c)

For given color space convert from polar representation of the color

from-LUV

(from-LUV c)

LUV -> RGB

For ranges, see to-LUV

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-LUV (to-LUV "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-LUV*

(from-LUV* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-LUV* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-OHTA

(from-OHTA c)

OHTA -> RGB

For ranges, see to-OHTA.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-OHTA (to-OHTA "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-OHTA*

(from-OHTA* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-OHTA* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Okhsl

(from-Okhsl c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Okhsl (to-Okhsl "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-Okhsl*

(from-Okhsl* c)

Okhsl -> sRGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Okhsl* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Okhsv

(from-Okhsv c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Okhsv (to-Okhsv "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-Okhsv*

(from-Okhsv* c)

Okhsv -> sRGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Okhsv* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Okhwb

(from-Okhwb c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Okhwb (to-Okhwb "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-Okhwb*

(from-Okhwb* c)

Okhwb -> sRGB, normalized

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Okhwb* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Oklab

(from-Oklab c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Oklab (to-Oklab "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-Oklab*

(from-Oklab* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Oklab* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Oklch

(from-Oklch c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Oklch (to-Oklch "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-Oklch*

(from-Oklch* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Oklch* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-OSA

(from-OSA c)

RGB -> OSA-UCS

For ranges, see to-OSA.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-OSA (to-OSA "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-OSA*

(from-OSA* c)

OSA-UCS -> RGB, normalized

Note that due to some extreme outliers, normalization is triple cubic power for g and j.

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-OSA* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-PalettonHSV

(from-PalettonHSV c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-PalettonHSV (to-PalettonHSV "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-PalettonHSV*

(from-PalettonHSV* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-PalettonHSV* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-RGB

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-RGB (to-RGB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-RGB*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-RGB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-RYB

(from-RYB c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-RYB (to-RYB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-RYB*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-RYB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-sRGB

(from-sRGB c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-sRGB (to-sRGB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-sRGB*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-sRGB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-UCS

(from-UCS c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-UCS (to-UCS "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-UCS*

(from-UCS* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-UCS* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-UVW

(from-UVW c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-UVW (to-UVW "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-UVW*

(from-UVW* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-UVW* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-XYB

(from-XYB c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-XYB (to-XYB "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-XYB*

(from-XYB* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-XYB* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-XYZ

(from-XYZ c)

XYZ -> sRGB

For ranges, see to-XYZ

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-XYZ (to-XYZ "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-XYZ*

(from-XYZ* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-XYZ* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-XYZ1

(from-XYZ1 c)

XYZ -> sRGB, from range 0-1

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-XYZ1 (to-XYZ1 "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-XYZ1*

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-XYZ1* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-YCbCr

(from-YCbCr c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-YCbCr (to-YCbCr "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-YCbCr*

(from-YCbCr* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-YCbCr* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-YCgCo

(from-YCgCo c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-YCgCo (to-YCgCo "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-YCgCo*

(from-YCgCo* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-YCgCo* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-YDbDr

(from-YDbDr c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-YDbDr (to-YDbDr "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-YDbDr*

(from-YDbDr* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-YDbDr* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-YIQ

(from-YIQ c)

YIQ -> RGB

For ranges, see to-YIQ.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-YIQ (to-YIQ "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-YIQ*

(from-YIQ* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-YIQ* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-YPbPr

(from-YPbPr c)

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-YPbPr (to-YPbPr "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-YPbPr*

(from-YPbPr* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-YPbPr* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-YUV

(from-YUV c)

YUV -> RGB

For ranges, see to-YUV.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-YUV (to-YUV "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-YUV*

(from-YUV* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-YUV* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

from-Yxy

(from-Yxy c)

Yxy -> sRGB

For ranges, see to-Yxy.

Examples

Converting to and from given color space should yield almost the same color.

(clojure2d.color/lclamp (from-Yxy (to-Yxy "#7a03fe")))

[#7a03fe] #vec4 [122.0, 3.0, 254.0, 255.0]

from-Yxy*

(from-Yxy* c)

Examples

Gradient generated from given color space.

(clojure.core/fn [v]
  (from-Yxy* (clojure2d.color/lerp [255 255 255] [0 0 0] v)))

get-channel

(get-channel col colorspace channel) (get-channel col channel)

Get chosen channel. Works with any color space.

Examples

Usage

(get-channel :green 1)
;;=> 128.0

Get first channel from LAB representation of green.

(get-channel :green :LAB 0)
;;=> 46.227430171917774

gradient

(gradient) (gradient palette-or-gradient-name) (gradient palette-or-gradient-name options)

Return gradient function.

Grandient function accepts value from 0 to 1 and returns interpolated color.

Parameters;

When called without parameters random gradient is returned.

Examples

Named gradient

(gradient :rainbow2)

Linear, RGB

(gradient (palette 5))

Linear, HSL

(gradient (palette 5) {:colorspace :HSL})

Linear, Yxy

(gradient (palette 5) {:colorspace :Yxy})

Cubic, Yxy

(gradient (palette 5) {:colorspace :Yxy, :interpolation :cubic-spline})

Loess, Yxy

(gradient (palette 5) {:colorspace :Yxy, :interpolation :loess})

RBF, Yxy

(gradient (palette 5)
          {:colorspace :Yxy,
           :interpolation (partial i/rbf (rbf/rbf :thin-plate))})

B-Spline for smoother colors in LAB

(gradient (palette 5) {:colorspace :LAB, :interpolation :b-spline})

Shepard, Yxy, irregular spacing

(gradient (palette 5)
          {:colorspace :Yxy,
           :interpolation :shepard,
           :domain [0 0.1 0.15 0.8 1.0]})

Easing functions as interpolator

(gradient [[-120 0.1 0.2] [120 0.3 1.0]]
          {:interpolation :bounce-in-out, :to? false, :colorspace :HSL})

Easy way to create palette from gradient

(palette (gradient [:blue :green] {:colorspace :HSL, :interpolation :cubic-spline}) 10)

Random predefined gradient

(gradient)

Cubehelix

(gradient :cubehelix)

gradient-cubehelix

Cubehelix gradient generator from two colors.

Examples

Cubehelix gradient

(gradient-cubehelix [[300 0.2 0.2] [200 0.8 0.9]])

gray

(gray v) (gray v a)

Create grayscale color based on intensity v. Optional parameter alpha a.

See also color

Examples

Usage

(gray 123)

[#7b7b7b] #vec4 [123.0, 123.0, 123.0, 255.0]

grayscale

(grayscale amount)

green

(green c)

Returns green (second channel) value.

Examples

Usage

(green 1385781)
;;=> 37.0
(green :khaki)
;;=> 230.0

hue

(hue c)

Hue value of color (any representation). Returns angle (0-360).

Uses hexagonal transformation. See also hue-polar.

Examples

Usage

(hue :red)
;;=> 0.0
(hue :green)
;;=> 120.0
(hue :blue)
;;=> 240.0
(hue "#12f5e6")
;;=> 176.0352422907489
(hue-polar "#12f5e6")
;;=> 176.61308941261146
(hue-paletton "#4455f6")
;;=> 251.00297936547298

hue-paletton

(hue-paletton r g b) (hue-paletton c)

Convert color to paletton HUE (which is different than hexagon or polar conversion).

Examples

Convert RGB to paletton hue.

(hue :amber)
;;=> 47.19101123595505
(hue-polar :amber)
;;=> 48.30634125595805
(hue-paletton :amber)
;;=> 82.00581517567336
(hue-paletton 22 33 123)
;;=> 250.38350628797656

hue-polar

(hue-polar c)

Hue value of color (any representation). Returns angle (0-360).

Uses polar transformation. See also hue.

Examples

Usage

(hue-polar "#4455f6")
;;=> 235.0358615462941
(hue "#4455f6")
;;=> 234.26966292134833
(hue-paletton "#4455f6")
;;=> 251.00297936547298

hue-rotate

(hue-rotate angle-degrees)

iq-gradient

(iq-gradient c1 c2) (iq-gradient a b c d)

Examples

Create gradient from 4 coeffs

(iq-gradient [0.5 0.5 0.5] [0.4 0.5 0.6] [0.2 0.2 1.0] [1.0 0.1 1.0])

Create gradient from two colors

(iq-gradient :red :blue)

lclamp

(lclamp c)

Clamp all color channels to [0-255] range. Round if necessary.

Examples

Usage

(lclamp (color 304 -123 3.4 22.9))
;;=> [255.0 0.0 3.0 23.0]

lerp

(lerp c1 c2 colorspace t) (lerp c1 c2) (lerp c1 c2 t)

Examples

Usage

[(lerp :red :blue 0) (lerp :red :blue 0.5) (lerp :red :blue 1.0)]

As gradient

(partial lerp :red :blue)

lerp+

(lerp+ c1 c2 colorspace amount) (lerp+ c1 c2) (lerp+ c1 c2 amount)

Linear interpolation of two colors conserving luma of the second color.

Amount: strength of the blend (defaults to 0.5).

See also lerp-.

Examples

Usage

[(lerp+ :red :blue 0) (lerp+ :red :blue 0.5) (lerp+ :red :blue 1.0)]

As gradient

(partial lerp+ :red :blue)

lerp-

(lerp- c1 c2 colorspace amount) (lerp- c1 c2) (lerp- c1 c2 amount)

Linear interpolation of two colors conserving luma of the first color.

Amount: strength of the blend (defaults to 0.5)

See also lerp+.

Examples

Usage

[(lerp- :red :blue 0) (lerp- :red :blue 0.5) (lerp- :red :blue 1.0)]

As gradient

(partial lerp- :red :blue)

luma

(luma c)

Examples

Usage

(luma 1385781)
;;=> 34.751968
(luma :red)
;;=> 54.231105

make-LCH

(make-LCH cs)

Create LCH conversion functions pair from any luma based color space.

merge-gradients

(merge-gradients g1 g2 midpoint) (merge-gradients g1 g2)

Combine two gradients, optionally select midpoint (0.5 by default).

Resulting gradient has colors from g1 for values lower than midpoint and from g2 for values higher than midpoint

mix

(mix c1 c2 colorspace t) (mix c1 c2) (mix c1 c2 t)

Mix colors in given optional colorspace (default: :RGB) and optional ratio (default: 0.5).

chroma.js way

Examples

Mix

(mix :red :blue)

[#b400b4] #vec4 [180.31222920256963, 0.0, 180.31222920256963, 255.0]

As gradient

(partial mix :red :blue)

Mix, different ratio

(mix :red :blue 0.25)

[#dd0080] #vec4 [220.83647796503186, 0.0, 127.5, 255.0]

Mix in LAB

(mix :red :blue :LAB 0.5)

[#d90052] #vec4 [217.32276724142096, -71.75486055938082, 82.18494583171135, 255.0]

Mix in HSI

(mix :red :blue :HSI 0.5)

[#008b74] #vec4 [0.0, 139.46413097289692, 115.5358690271031, 255.0]

mixbox

(mixbox col1 col2) (mixbox col1 col2 t)

mixsub

(mixsub c1 c2 colorspace t) (mixsub c1 c2) (mixsub c1 c2 t)

Subtractive color mix in given optional colorspace (default: :RGB) and optional ratio (default: 0.5)

modulate

(modulate col colorspace channel amount) (modulate col channel amount)

Modulate (multiply) chosen channel by given amount. Works with any color space.

Examples

More red

(modulate [123 22 233] 0 1.2)

[#9416e9] #vec4 [147.6, 22.0, 233.0, 255.0]

More saturation

(modulate [123 22 233] :HSL 1 1.2)

[#7a01fe] #vec4 [122.09999999999981, 0.9000000000000166, 254.09999999999997, 255.0]

Decrease luma

(mapv (fn* [p1__23250#] (modulate p1__23250# :LAB 0 0.8)) (palette 0))

named-colors-list

(named-colors-list)

Return list of the named colors.

Examples

List of color names

(named-colors-list)
;;=> (:aquamarine
;;=>  :medium-violetred
;;=>  :docc/green :lime
;;=>  :deep-skyblue :deepskyblue
;;=>  :medium-slateblue :docc/burnt-sienna
;;=>  :docc/apricot-yellow :darksalmon
;;=>  :antiquewhite :docc/vinaceous-cinnamon
;;=>  :mediumturquoise :docc/ochraceous-salmon
;;=>  :slategrey :docc/salvia-blue
;;=>  :docc/golden-yellow :docc/jasper-red
;;=>  :sandy-brown :docc/pistachio-green
;;=>  :slategray :docc/olive-yellow
;;=>  :sienna :docc/cinnamon-rufous
;;=>  :orange :navajowhite
;;=>  :docc/dull-violet-black :docc/light-grayish-olive
;;=>  :medium-turquoise :docc/naples-yellow
;;=>  :lavenderblush :docc/venice-green
;;=>  :rosy-brown :yellow-green
;;=>  :firebrick :docc/vinaceous-tawny
;;=>  :alice-blue :orangered
;;=>  :docc/olympic-blue :docc/warm-gray
;;=>  :orange-red :palevioletred
;;=>  :lawngreen :docc/mineral-gray
;;=>  :docc/cotinga-purple :docc/yellow-orange
;;=>  :docc/red-violet :docc/helvetia-blue
;;=>  :docc/lilac :docc/cream-yellow
;;=>  :medium-aquamarine :seashell
;;=>  :lightpink :darkolivegreen
;;=>  :aliceblue :deep-pink
;;=>  :docc/vandar-poel-s-blue :blue-violet
;;=>  :docc/purple-drab :dark-orange
;;=>  :gray :lightsteelblue
;;=>  :whitesmoke :sea-green
;;=>  :light-pink :docc/deep-violet---plumbeous
;;=>  :green-yellow :darkgoldenrod
;;=>  :dark-seagreen :docc/pale-king-s-blue
;;=>  :tan :docc/light-porcelain-green
;;=>  :docc/cobalt-green :docc/maple
;;=>  :light-salmon :docc/sulpher-yellow
;;=>  :bisque :white
;;=>  :midnight-blue :peach-puff
;;=>  :lavender-blush :slate-gray
;;=>  :docc/hay-s-russet :docc/light-green-yellow
;;=>  :lightgreen :docc/red-orange
;;=>  :dark-orchid :darkseagreen
;;=>  :crimson :darkslategray
;;=>  :docc/brick-red :pale-violetred
;;=>  :docc/rainette-green :mistyrose
;;=>  :antique-white :chocolate
;;=>  :yellow :docc/dusky-green
;;=>  :floral-white :docc/violet-blue
;;=>  :docc/dull-viridian-green :medium-purple
;;=>  :docc/light-glaucous-blue :indian-red
;;=>  :docc/light-brown-drab :cadetblue
;;=>  :docc/spectrum-red :navy
;;=>  :old-lace :ghostwhite
;;=>  :docc/eugenia-red---a :dimgrey
;;=>  :docc/olive :docc/rosolanc-purple
;;=>  :docc/vandyke-brown :rebeccapurple
;;=>  :seagreen :docc/peacock-blue
;;=>  :docc/dusky-madder-violet :green
;;=>  :dark-goldenrod :mediumseagreen
;;=>  :indigo :dark-slateblue
;;=>  :docc/neutral-gray :olivedrab
;;=>  :docc/benzol-green :cyan
;;=>  :peachpuff :limegreen
;;=>  :docc/eosine-pink :docc/grenadine-pink
;;=>  :docc/citron-yellow :docc/light-mauve
;;=>  :saddle-brown :burly-wood
;;=>  :mediumslateblue :violet
;;=>  :docc/lemon-yellow :light-coral
;;=>  :sandybrown :spring-green
;;=>  :docc/taupe-brown :docc/turquoise-green
;;=>  :docc/deep-indigo :docc/ivory-buff
;;=>  :docc/black :white-smoke
;;=>  :yellowgreen :docc/sudan-brown
;;=>  :mediumspringgreen :docc/olive-buff
;;=>  :dark-red :docc/old-rose
;;=>  :docc/yellow-green :docc/krongbergs-green
;;=>  :steelblue :docc/deep-slate-green
;;=>  :rosybrown :cornflowerblue
;;=>  :ivory :lightgoldenrodyellow
;;=>  :docc/cameo-pink :docc/indian-lake
;;=>  :docc/english-red :salmon
;;=>  :docc/grayish-lavender---b :docc/citrine
;;=>  :darkcyan :dark-violet
;;=>  :docc/lincoln-green :peru
;;=>  :cornsilk :lightslategray
;;=>  :docc/glaucous-green :blueviolet
;;=>  :forestgreen :docc/dull-blue-violet
;;=>  :docc/olive-green :dark-gray
;;=>  :navajo-white :docc/pale-raw-umber
;;=>  :lightseagreen :docc/corinthian-pink
;;=>  :misty-rose :docc/cinnamon-buff
;;=>  :docc/ecru :gold
;;=>  :docc/dark-tyrian-blue :gainsboro
;;=>  :darkorchid :docc/grayish-lavender---a
;;=>  :burlywood :lightskyblue
;;=>  :chartreuse :lemon-chiffon
;;=>  :docc/laelia-pink :snow
;;=>  :docc/dark-slate-purple :medium-seagreen
;;=>  :moccasin :docc/white
;;=>  :docc/deep-slate-olive :honeydew
;;=>  :aqua :darkred
;;=>  :docc/oil-green :docc/fresh-color
;;=>  :docc/green-blue :mediumorchid
;;=>  :lightsalmon :dodger-blue
;;=>  :dim-gray :saddlebrown
;;=>  :wheat :springgreen
;;=>  :hot-pink :docc/sepia
;;=>  :lightslategrey :docc/apricot-orange
;;=>  :darkblue :powderblue
;;=>  :docc/yellow-ocher :light-grey
;;=>  :turquoise :blanchedalmond
;;=>  :docc/carmine-red :papayawhip
;;=>  :slateblue :lightblue
;;=>  :light-seagreen :royal-blue
;;=>  :docc/nile-blue :docc/madder-brown
;;=>  :docc/dark-soft-violet :skyblue
;;=>  :light-skyblue :light-slategray
;;=>  :red :lightyellow
;;=>  :docc/eugenia-red---b :blue
;;=>  :mint-cream :medium-blue
;;=>  :palegreen :docc/diamine-green
;;=>  :greenyellow :docc/calamine-blue
;;=>  :docc/night-green :khaki
;;=>  :maroon :docc/scarlet
;;=>  :cornflower-blue :dark-magenta
;;=>  :darkgrey :midnightblue
;;=>  :floralwhite :deeppink
;;=>  :docc/violet-red :paleturquoise
;;=>  :docc/light-brownish-olive :dark-green
;;=>  :docc/pansy-purple :darkkhaki
;;=>  :azure :medium-orchid
;;=>  :indianred :darkviolet
;;=>  :mediumpurple :fuchsia
;;=>  :docc/isabella-color :fire-brick
;;=>  :coral :docc/peach-red
;;=>  :docc/slate-color :dark-blue
;;=>  :mediumvioletred :lemonchiffon
;;=>  :mediumblue :docc/seashell-pink
;;=>  :docc/brown :docc/olive-ocher
;;=>  :darkmagenta :goldenrod
;;=>  :darkorange :orchid
;;=>  :plum :pink
;;=>  :teal :docc/dark-citrine
;;=>  :lawn-green :magenta
;;=>  :amber :forest-green
;;=>  :docc/sea-green :light-green
;;=>  :docc/pyrite-yellow :dark-cyan
;;=>  :lightgrey :dark-turquoise
;;=>  :dark-slategray :light-blue
;;=>  :light-steelblue :docc/veronia-purple
;;=>  :pale-goldenrod :slate-blue
;;=>  :docc/artemesia-green :powder-blue
;;=>  :docc/vistoris-lake :docc/chromium-green
;;=>  :purple :olive-drab
;;=>  :docc/light-pinkish-cinnamon :ghost-white
;;=>  :dodgerblue :docc/blackish-olive
;;=>  :steel-blue :docc/andover-green
;;=>  :darkturquoise :cadet-blue
;;=>  :mintcream :docc/orange-rufous
;;=>  :pale-green :docc/hermosa-pink
;;=>  :docc/violet-carmine :hotpink
;;=>  :docc/orange-citrine :docc/orange
;;=>  :docc/vandyke-red :thistle
;;=>  :docc/pale-burnt-lake :docc/khaki
;;=>  :docc/dark-greenish-glaucous :light-goldenrodyellow
;;=>  :docc/mars-brown-tobacco :docc/sulphine-yellow
;;=>  :docc/cerulian-blue :royalblue
;;=>  :blanched-almond :docc/pinkish-cinnamon
;;=>  :darkgreen :light-cyan
;;=>  :darkslateblue :docc/deep-lyons-blue
;;=>  :silver :docc/pomegranite-purple
;;=>  :darkgray :docc/spinel-red
;;=>  :grey :docc/hydrangea-red
;;=>  :oldlace :docc/cossack-green
;;=>  :dark-salmon :mediumaquamarine
;;=>  :brown :lightgray
;;=>  :docc/dark-medici-blue :docc/ochre-red
;;=>  :docc/deep-grayish-olive :docc/pompeian-red
;;=>  :docc/pale-lemon-yellow :olive
;;=>  :docc/yellow :lightcoral
;;=>  :docc/orange-yellow :tomato
;;=>  :docc/buffy-citrine :docc/carmine
;;=>  :docc/aconite-violet :docc/antwarp-blue
;;=>  :lightcyan :linen
;;=>  :docc/violet :darkslategrey
;;=>  :lavender :docc/blue-violet
;;=>  :papaya-whip :docc/raw-sienna
;;=>  :docc/blue :docc/fawn
;;=>  :dark-olivegreen :docc/coral-red
;;=>  :docc/eupatorium-purple :docc/red
;;=>  :docc/etruscan-red :dimgray
;;=>  :dark-khaki :palegoldenrod
;;=>  :medium-springgreen :beige
;;=>  :black :light-yellow)

nearest-color

(nearest-color pal c dist-fn) (nearest-color pal c) (nearest-color pal)

Find nearest color from a set. Input: distance function (default euclidean), list of target colors and source color.

Examples

Find nearest color to given color from below palette.

[120 0 80]

[#780050] [120 0 80]

All below examples are using this palette

some-palette

With Delta C

(nearest-color some-palette [120 0 80] delta-c)

[#5c68c3] #vec4 [91.88783821894172, 104.00236957918251, 195.37991511635713, 255.0]

With Delta H

(nearest-color some-palette [120 0 80] delta-h)

[#0a166b] #vec4 [10.469422197801668, 21.711850993058505, 106.51129709945782, 255.0]

With Delta E CIE

(nearest-color some-palette [120 0 80] delta-e-cie)

[#0a166b] #vec4 [10.469422197801668, 21.711850993058505, 106.51129709945782, 255.0]

With Delta E CMC

(nearest-color some-palette [120 0 80] delta-e-cmc)

[#111f88] #vec4 [16.788395487095283, 30.69119283998515, 135.5572797261189, 255.0]

With euclidean

(nearest-color some-palette [120 0 80])

[#0a166b] #vec4 [10.469422197801668, 21.711850993058505, 106.51129709945782, 255.0]

negate

(negate c) (negate c alpha?)

Negate color (subract from 255.0)

not-black?

(not-black? c)

Check if color is not black

noticable-different?

(noticable-different? c1 c2) (noticable-different? c1 c2 s p)

Examples

Contrast ratio

(noticable-different? :pink :hotpink)
;;=> true

Contrast ratio

(noticable-different? "00aabb" "00baba")
;;=> false

p25_7

const

pack

(pack c)

Pack color to ARGB 32bit integer.

Examples

Pack colors into 32 bit int.

(pack :green)
;;=> -16744448
(pack (color 12 33 255))
;;=> -15982081

See the difference about treating alpha when packing raw integer.

(pack 1123071)
;;=> 1123071
(pack (to-color 1123071))
;;=> -15654145

palette

(palette) (palette p) (palette p number-of-colors) (palette p number-of-colors gradient-params)

Get palette.

If argument is a keyword, returns one from palette presets. If argument is a number, returns one from colourlovers palettes. If argument is a gradient, returns 5 or number-of-colors samples.

If called without argument, random palette is returned

Optionally you can pass number of requested colors and other parameters as in resample

Examples

Named palette

(palette :set3)

Colourlovers palette

(palette 0)

Resampled palette

(palette 0 10)

Resampled palette with interpolation and color space

(palette 0 10 {:colorspace :LUV, :interpolation :loess})

Sampled from gradient

(palette (gradient :cyan-magenta))

Sampled from gradient with number of colors

(palette (gradient :cyan-magenta) 10)

Random predefined palette

(palette)

paletton

multimethod

Create paletton palette.

Input:

Configuration consist:

Examples

Monochromatic dark-neon palette

(paletton :monochromatic 140 {:preset :dark-neon})

Monochromatic full (default) palette

(paletton :monochromatic 140)

Monochromatic shiny palette with complementary color

(paletton :monochromatic 300 {:preset :shiny, :compl true})

Triad full palette, angle 30

(paletton :triad 120)

Triad palette, angle 10 with complementary

(paletton :triad 120 {:preset :pastels-dark, :angle 10, :compl true})

Triad palette, angle 10 with complementary, not adjacent version

(paletton :triad 120 {:adj false, :preset :pastels-dark, :angle 10, :compl true})

Tetrad palette

(paletton :tetrad 20 {:preset :pastels-darkest})

Tetrad palette, bigger angle

(paletton :tetrad 20 {:angle 100, :preset :pastels-darkest})

paletton-presets-list

Examples

List of all paletton presets

paletton-presets-list
;;=> (:pastels :pastels-bright
;;=>           :pastels-med :pastels-lightest
;;=>           :full :pastels-dark
;;=>           :shiny :darkest
;;=>           :pastels-light :pastels-very-dark
;;=>           :almost-gray-darker :pale-light
;;=>           :pastels-darkest :dark
;;=>           :pastels-very-light :pastels-mid-pale
;;=>           :almost-gray-mid :almost-gray-dark
;;=>           :pastels-mid-dark :dark-neon
;;=>           :almost-black :darker
;;=>           :almost-gray-lighter :almost-gray-light)

possible-color?

(possible-color? c)

Check if given argument can be considered as color.

Check is done by analyzing type of the argument.

See also valid-color?.

Examples

Usage

(possible-color? :blue)
;;=> true
(possible-color? :not-a-color)
;;=> true
(possible-color? [1 2 3 255])
;;=> true
(possible-color? [:red :green :blue])
;;=> false
(possible-color? (gradient [:red :blue]))
;;=> false

possible-palette?

(possible-palette? c)

Check if given argument can be considered as palette.

Check is done by analyzing type of the argument.

Examples

Usage

(possible-palette? :blue)
;;=> false
(possible-palette? [1 2 3 255])
;;=> false
(possible-palette? [:red :green :blue])
;;=> true
(possible-palette? (gradient [:red :blue]))
;;=> false

protanomaly

protanopia

quil

Convert color to quil color type (ie. ARGB Integer). Alias to pack.

r30

const

r6

const

r63

const

random-color

(random-color color-theme alpha) (random-color alpha-or-color-theme) (random-color)

Generate random color.

Optionally color theme or alpha can be provided.

List of possible color themes is stored in color-themes var. These are taken from thi.ng and paletton.

Examples

Random color

(random-color)

[#bf5892] :docc/eupatorium-purple

Random color (with alpha set)

(random-color 180)

[#6a5acdb4] #vec4 [106.0, 90.0, 205.0, 180.0]

random-gradient

(random-gradient)

Generate random gradient function.

Examples

Randomly generated gradient

(random-gradient)

Randomly generated gradient

(random-gradient)

Randomly generated gradient

(random-gradient)

random-palette

(random-palette)

Generate random palette from all collections defined in clojure2d.color namespace.

Examples

Randomly generated palette

(random-palette)

Randomly generated palette

(random-palette)

Randomly generated palette

(random-palette)

red

(red c)

Returns red (first channel) value.

Examples

Usage

(red 1385781)
;;=> 21.0
(red :khaki)
;;=> 240.0

reduce-colors

(reduce-colors xs number-of-colors) (reduce-colors xs number-of-colors colorspace-or-dist)

Reduce colors using x-means clustering in given colorspace (default :RGB).

Use for long sequences (for example to generate palette from image).

Examples

Reduce cockatoo image palette (2 colors)

(reduce-colors i1 2)

Reduce cockatoo image palette in LAB (2 colors)

(reduce-colors i1 2 :LAB)

Reduce cockatoo image palette (6 colors)

(reduce-colors i1 6)

Reduce cockatoo image palette in LAB (6 colors)

(reduce-colors i1 6 :LAB)

Reduce cockatoo image palette (15 colors)

(reduce-colors i1 15)

Reduce cockatoo image palette in LAB (15 colors)

(reduce-colors i1 15 :LAB)

relative-luma

(relative-luma c)

Returns relative luminance

Examples

Usage

(relative-luma 1385781)
;;=> 4.43566261779254
(relative-luma :red)
;;=> 54.231105

resample

(resample pal number-of-colors) (resample pal number-of-colors gradient-params)

Resample palette.

Internally it’s done by creating gradient and sampling back to colors. You can pass gradient parameters like colorspace, interpolator name and domain.

Examples

Input palette

(palette 12)

Resample one of the colourlovers palette.

(resample (palette 12) 16)

Resample one of the colourlovers palette. Different gradient settings.

(resample (palette 12) 16 {:colorspace :LUV, :interpolation :cubic-spline})

saturate

(saturate col) (saturate col amt)

Change color saturation in LCH color space.

Examples

Make palette

(take 10 (iterate saturate (from-HSL (color 300 0.0 0.5))))

saturation

(saturation amount)

scale

(scale c v) (scale c v alpha?)

Multiply color channels by given value, do not change alpha channel by default

scale-down

(scale-down c) (scale-down c alpha?)

Divide color channels by 255.0

scale-up

(scale-up c) (scale-up c alpha?)

Multiply color channels by 255.0

set-alpha

(set-alpha c a)

Set alpha channel and return new color

Examples

Usage

(set-alpha :khaki 200)

[#f0e68cc8] #vec4 [240.0, 230.0, 140.0, 200.0]

set-awt-alpha

(set-awt-alpha c a)

Set alpha channel and return Color representation.

Examples

Usage

(set-awt-alpha :khaki 200)

[#f0e68cc8] java.awt.Color[r=240,g=230,b=140]

set-blue

(set-blue c val)

Set blue channel and return new color

Examples

Usage

(set-blue :khaki 11)

[#f0e60b] #vec4 [240.0, 230.0, 11.0, 255.0]

set-ch0

(set-ch0 c val)

Set red channel and return new color.

Examples

Usage

(set-ch0 :khaki 11)

[#0be68c] #vec4 [11.0, 230.0, 140.0, 255.0]

set-ch1

(set-ch1 c val)

Set green channel and return new color.

Examples

Usage

(set-ch1 :khaki 11)

[#f00b8c] #vec4 [240.0, 11.0, 140.0, 255.0]

set-ch2

(set-ch2 c val)

Set blue channel and return new color

Examples

Usage

(set-ch2 :khaki 11)

[#f0e60b] #vec4 [240.0, 230.0, 11.0, 255.0]

set-channel

(set-channel col colorspace channel val) (set-channel col channel val)

Set chosen channel with given value. Works with any color space.

set-green

(set-green c val)

Set green channel and return new color.

Examples

Usage

(set-green :khaki 11)

[#f00b8c] #vec4 [240.0, 11.0, 140.0, 255.0]

set-red

(set-red c val)

Set red channel and return new color.

Examples

Usage

(set-red :khaki 11)

[#0be68c] #vec4 [11.0, 230.0, 140.0, 255.0]

temperature

(temperature t)

Color representing given black body temperature t in Kelvins (or name as keyword).

Reference: CIE 1964 10 degree CMFs

Using improved interpolation functions.

Possible temperature names: :candle, :sunrise, :sunset, :lightbulb, :morning, :moonlight, :midday, :cloudy-sky, :blue-sky, :warm, :cool, :white, :sunlight

Examples

Warm

(temperature :warm)

[#ffb165] #vec4 [255.0, 176.72614289160697, 100.85156825287878, 255.0]

Blue sky

(temperature :blue-sky)

[#ccdbff] #vec4 [203.92568056580265, 219.30626754966096, 255.0, 255.0]

3000K

(temperature 3000)

[#ffb46b] #vec4 [255.0, 180.23679378180316, 107.44230365747522, 255.0]

temperature-names

thing-presets-list

tinter

(tinter tint-color)

Creates fn to tint color using other color(s).

tint-color

Examples

Input palette

(palette [:red :yellow] 10)

Make any color red

(map (tinter [255 55 55]) (palette [:red :yellow] 10))

to-awt-color

(to-awt-color c)

Convert any color representation to java.awt.Color.

Examples

Various conversions

(to-awt-color :khaki)
;;=> java.awt.Color[r=240,g=230,b=140]
(to-awt-color 2853249587)
;;=> java.awt.Color[r=17,g=34,b=51]

to-CMY

(to-CMY c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :CMY})

Convert into color space value

(to-CMY :peru)
;;=> [50.0 122.0 192.0 255.0]

to-CMY*

Examples

Convert into color space value

(to-CMY* :peru)
;;=> [50.0 122.0 192.0 255.0]

to-color

(to-color c)

Convert any color representation to Vec4 vector.

Examples

Various conversions

(to-color :khaki)
;;=> [240.0 230.0 140.0 255.0]
(to-color "abcc12")
;;=> [171.0 204.0 18.0 255.0]
(to-color "#1234af")
;;=> [18.0 52.0 175.0 255.0]
(to-color "#1234af80")
;;=> [18.0 52.0 175.0 128.0]
(to-color "a")
;;=> [170.0 170.0 170.0 255.0]
(to-color "4a")
;;=> [74.0 74.0 74.0 255.0]
(to-color "fac")
;;=> [255.0 170.0 204.0 255.0]
(to-color (v/vec2 120 120))
;;=> [120.0 120.0 120.0 120.0]
(to-color (v/vec3 144 133.3 122))
;;=> [144.0 133.3 122.0 255.0]
(to-color (v/vec4 111 122 133 44))
;;=> [111.0 122.0 133.0 44.0]
(to-color [30 40 50])
;;=> [30.0 40.0 50.0 255.0]
(to-color (range 200 220 5))
;;=> [200.0 205.0 210.0 215.0]
(to-color 2868903659)
;;=> [255.0 254.0 235.0 170.0]

to-Cubehelix

(to-Cubehelix c)

RGB -> Cubehelix

D3 version

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Cubehelix})

Convert into color space value

(to-Cubehelix :peru)
;;=> [25.666885833319213 0.8269520406177997 0.5760783984025756 255.0]

to-Cubehelix*

(to-Cubehelix* c)

RGB -> Cubehelix, normalized

Examples

Convert into color space value

(to-Cubehelix* :peru)
;;=> [18.18105013622813 45.69897938512506 146.89999159265676 255.0]

to-DIN99

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :DIN99})

Convert into color space value

(to-DIN99 :peru)
;;=> [71.84453824167862 18.635053777666155 15.512419941341172 255.0]

to-DIN99*

Examples

Convert into color space value

(to-DIN99* :peru)
;;=> [183.20300148703927 184.70175859642342 193.20544693282423 255.0]

to-DIN99b

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :DIN99b})

Convert into color space value

(to-DIN99b :peru)
;;=> [65.52906131541887 17.306064069097136 30.962381838009414 255.0]

to-DIN99b*

RGB -> DIN99b, normalized

Examples

Convert into color space value

(to-DIN99b* :peru)
;;=> [167.09965962999127 170.97253910584988 214.72047048070252 255.0]

to-DIN99c

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :DIN99c})

Convert into color space value

(to-DIN99c :peru)
;;=> [65.36819954639269 14.373825440228915 30.260644749408627 255.0]

to-DIN99c*

RGB -> DIN99c, normalized

Examples

Convert into color space value

(to-DIN99c* :peru)
;;=> [166.68952307721386 164.0144544839051 214.70835553612187 255.0]

to-DIN99d

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :DIN99d})

Convert into color space value

(to-DIN99d :peru)
;;=> [65.28705111878932 12.045888870714975 29.866044941857794 255.0]

to-DIN99d*

RGB -> DIN99d, normalized

Examples

Convert into color space value

(to-DIN99d* :peru)
;;=> [166.48169058814776 158.0962213067943 215.05000111884405 255.0]

to-DIN99o

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :DIN99o})

Convert into color space value

(to-DIN99o :peru)
;;=> [65.52906131541887 29.11304566099543 20.232209198269828 255.0]

to-DIN99o*

RGB -> DIN99o, normalized

Examples

Convert into color space value

(to-DIN99o* :peru)
;;=> [167.09965962999127 195.21849337998404 186.91100026409774 255.0]

to-GLHS

(to-GLHS c)

RGB -> GLHS

Color Theory and Modeling for Computer Graphics, Visualization, and Multimedia Applications (The Springer International Series in Engineering and Computer Science) by Haim Levkowitz

Weights: 0.2 (min), 0.1 (mid), 0.7 (max).

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :GLHS})

Convert into color space value

(to-GLHS :peru)
;;=> [0.6643137254901961 29.577464788732396 0.628099173553719 255.0]

to-GLHS*

(to-GLHS* c)

Examples

Convert into color space value

(to-GLHS* :peru)
;;=> [169.4 20.96440645179119 160.16528925619835 255.0]

to-Gray

(to-Gray c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Gray})

Convert into color space value

(to-Gray :peru)
;;=> [143.26048200000002 143.26048200000002 143.26048200000002 255.0]

to-Gray*

Examples

Convert into color space value

(to-Gray* :peru)
;;=> [143.26048200000002 143.26048200000002 143.26048200000002 255.0]

to-HCL

(to-HCL c)

RGB -> HCL, by Sarifuddin and Missaou.

lambda = 3.0

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :HCL})

Convert into color space value

(to-HCL :peru)
;;=> [29.462047029931753 95.5434828525016 103.74112713628747 255.0]

to-HCL*

(to-HCL* c)

Examples

Convert into color space value

(to-HCL* :peru)
;;=> [148.32438865897458 143.3152242787524 195.5702524834639 255.0]

to-HSB

RGB -> HSB(V), normalized (see to-HSV)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :HSB})

Convert into color space value

(to-HSB :peru)
;;=> [29.577464788732396 0.6926829268292682 0.803921568627451 255.0]

to-HSB*

Examples

Convert into color space value

(to-HSB* :peru)
;;=> [20.950704225352116 176.6341463414634 205.0 255.0]

to-HSI

(to-HSI c)

RGB -> HSI

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :HSI})

Convert into color space value

(to-HSI :peru)
;;=> [29.577464788732396 0.5286783042394014 0.5241830065359476 255.0]

to-HSI*

Examples

Convert into color space value

(to-HSI* :peru)
;;=> [20.950704225352116 134.81296758104736 133.66666666666666 255.0]

to-HSL

(to-HSL c)

RGB -> HSL

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :HSL})

Convert into color space value

(to-HSL :peru)
;;=> [29.577464788732396 0.5867768595041323 0.5254901960784314 255.0]

to-HSL*

Examples

Convert into color space value

(to-HSL* :peru)
;;=> [20.950704225352116 149.62809917355372 134.0 255.0]

to-HSV

(to-HSV c)

RGB -> HSV

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :HSV})

Convert into color space value

(to-HSV :peru)
;;=> [29.577464788732396 0.6926829268292682 0.803921568627451 255.0]

to-HSV*

Examples

Convert into color space value

(to-HSV* :peru)
;;=> [20.950704225352116 176.6341463414634 205.0 255.0]

to-HunterLAB

(to-HunterLAB c)

RGB -> HunterLAB

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :HunterLAB})

Convert into color space value

(to-HunterLAB :peru)
;;=> [54.87829800912775 19.29580944925891 27.029354768991347 255.0]

to-HunterLAB*

(to-HunterLAB* c)

RGB -> HunterLAB, normalized

Examples

Convert into color space value

(to-HunterLAB* :peru)
;;=> [139.93965992327574 126.20758021200928 226.3654714042049 255.0]

to-HWB

(to-HWB c)

RGB -> HWB

HWB - A More Intuitive Hue-Based Color Model by Alvy Ray Smitch and Eric Ray Lyons, 1995-1996

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :HWB})

Convert into color space value

(to-HWB :peru)
;;=> [29.577464788732396 0.2470588235294118 0.196078431372549 255.0]

to-HWB*

Examples

Convert into color space value

(to-HWB* :peru)
;;=> [20.950704225352116 63.00000000000001 49.99999999999999 255.0]

to-IgPgTg

(to-IgPgTg c)

RGB -> IgPgTg

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :IgPgTg})

Convert into color space value

(to-IgPgTg :peru)
;;=> [0.5987969785076355 0.06217862208955094 0.1907217617100152 255.0]

to-IgPgTg*

(to-IgPgTg* c)

RGB -> IgPgTg*, normalized

Examples

Convert into color space value

(to-IgPgTg* :peru)
;;=> [1.5674468689687595E-13 141.85555954119678 181.06105439757565 255.0]

to-IPT

(to-IPT c)

RGB -> IPT

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :IPT})

Convert into color space value

(to-IPT :peru)
;;=> [0.5491769879221229 0.17297511906722254 0.3212682187571702 255.0]

to-IPT*

(to-IPT* c)

Examples

Convert into color space value

(to-IPT* :peru)
;;=> [140.0418304648625 143.14408677431155 194.85434984340569 255.0]

to-JAB

(to-JAB c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :JAB})

Convert into color space value

(to-JAB :peru)
;;=> [0.10317194697677418 0.028509975958337486 0.07046479892219948 255.0]

to-JAB*

(to-JAB* c)

RGB -> JzAzBz, normalized

Examples

Convert into color space value

(to-JAB* :peru)
;;=> [157.37343827965992 153.302308229718 212.9609396378997 255.0]

to-JCH

(to-JCH c)

RGB -> JCH

Hue based color space derived from JAB

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :JCH})

Convert into color space value

(to-JCH :peru)
;;=> [0.10317194697677418 0.07601385805424551 67.97180120076064 255.0]

to-JCH*

(to-JCH* c)

Examples

Convert into color space value

(to-JCH* :peru)
;;=> [157.37343827965992 121.64437718235972 48.146692030245426 255.0]

to-LAB

(to-LAB c)

RGB -> LAB

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :LAB})

Convert into color space value

(to-LAB :peru)
;;=> [61.75441860963714 21.39555930166154 47.91832193892602 255.0]

to-LAB*

(to-LAB* c)

Examples

Convert into color space value

(to-LAB* :peru)
;;=> [157.4737674545747 148.73736828111535 196.31906771299217 255.0]

to-LCH

(to-LCH c)

RGB -> LCH

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :LCH})

Convert into color space value

(to-LCH :peru)
;;=> [61.75441860963714 52.47795284949171 65.93920971405248 255.0]

to-LCH*

(to-LCH* c)

Examples

Convert into color space value

(to-LCH* :peru)
;;=> [157.4737674545747 100.00218042163684 46.70694711308562 255.0]

to-LCHuv

(to-LCHuv c)

RGB -> LCHuv

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :LCHuv})

Convert into color space value

(to-LCHuv :peru)
;;=> [61.75441860963714 75.16079522246727 40.44454926371432 255.0]

to-LCHuv*

(to-LCHuv* c)

Examples

Convert into color space value

(to-LCHuv* :peru)
;;=> [157.4737674545747 107.04786648153501 28.648227060534108 255.0]

to-linear

(to-linear v)

Gamma correction (gamma=2.4), darken

Examples

Gamma correction

(to-linear 0.5)
;;=> 0.21404114048223255

to-linearRGB

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :linearRGB})

Convert into color space value

(to-linearRGB :peru)
;;=> [155.6763705560055 59.81039845105634 12.675174325952446 255.0]

to-linearRGB*

Examples

Convert into color space value

(to-linearRGB* :peru)
;;=> [155.6763705560055 59.81039845105634 12.675174325952446 255.0]

to-LMS

(to-LMS c)

RGB -> LMS, D65

Ranges: 0.0 - 100.0

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :LMS})

Convert into color space value

(to-LMS :peru)
;;=> [34.40118955835184 27.693435499312162 7.988162235761204 255.0]

to-LMS*

(to-LMS* c)

Examples

Convert into color space value

(to-LMS* :peru)
;;=> [87.7207500026746 70.61902673968613 20.37100377523162 255.0]

to-luma-color-hue

(to-luma-color-hue to c)

For given color space return polar representation of the color

to-LUV

(to-LUV c)

RGB -> LUV

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :LUV})

Convert into color space value

(to-LUV :peru)
;;=> [61.75441860963714 57.199931444133895 48.75769663612137 255.0]

to-LUV*

(to-LUV* c)

Examples

Convert into color space value

(to-LUV* :peru)
;;=> [157.4737674545747 138.577201230143 193.08258609954436 255.0]

to-OHTA

(to-OHTA c)

RGB -> OHTA

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :OHTA})

Convert into color space value

(to-OHTA :peru)
;;=> [133.66666666666666 71.0 -0.5 255.0]

to-OHTA*

(to-OHTA* c)

Examples

Convert into color space value

(to-OHTA* :peru)
;;=> [133.66666666666666 198.5 127.0 255.0]

to-Okhsl

(to-Okhsl c)

sRGB -> Okhsl

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Okhsl})

Convert into color space value

(to-Okhsl :peru)
;;=> [0.17272662114397214 0.7218843480887962 0.626125151457773 255.0]

to-Okhsl*

(to-Okhsl* c)

Examples

Convert into color space value

(to-Okhsl* :peru)
;;=> [44.04529061139646 181.83605885313455 159.66191483577114 255.0]

to-Okhsv

(to-Okhsv c)

sRGB -> Okhsv

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Okhsv})

Convert into color space value

(to-Okhsv :peru)
;;=> [0.17272662114397214 0.7404456518525188 0.8179960560123283 255.0]

to-Okhsv*

(to-Okhsv* c)

Examples

Convert into color space value

(to-Okhsv* :peru)
;;=> [44.04529061139642 186.57864001358828 208.5889876168066 255.0]

to-Okhwb

(to-Okhwb c)

sRGB -> Okhwb

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Okhwb})

Convert into color space value

(to-Okhwb :peru)
;;=> [0.17272662114397214 0.21231443310549042 0.18200394398767172 255.0]

to-Okhwb*

(to-Okhwb* c)

Examples

Convert into color space value

(to-Okhwb* :peru)
;;=> [44.04529061139642 56.502771002982385 46.41101238319341 255.0]

to-Oklab

(to-Oklab c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Oklab})

Convert into color space value

(to-Oklab :peru)
;;=> [0.6781925733062264 0.05728325697060138 0.10856276795622277 255.0]

to-Oklab*

(to-Oklab* c)

Examples

Convert into color space value

(to-Oklab* :peru)
;;=> [172.9391073217668 145.55564012374913 210.00514410562116 255.0]

to-Oklch

(to-Oklch c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Oklch})

Convert into color space value

(to-Oklch :peru)
;;=> [0.6781925733062264 0.12274871125790536 62.181583611829986 255.0]

to-Oklch*

(to-Oklch* c)

Examples

Convert into color space value

(to-Oklch* :peru)
;;=> [172.9391073217668 97.0598397774908 44.045302411486276 255.0]

to-OSA

(to-OSA c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :OSA})

Convert into color space value

(to-OSA :peru)
;;=> [0.14507376477927938 6.789218136248248 -3.7349405564701708 255.0]

to-OSA*

(to-OSA* c)

OSA-UCS -> RGB, normalized

Note that due to some extreme outliers, normalization is triple cubic root for g and j.

Examples

Convert into color space value

(to-OSA* :peru)
;;=> [168.62897129000868 223.52938004706834 32.13216364770619 255.0]

to-PalettonHSV

(to-PalettonHSV c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :PalettonHSV})

Convert into color space value

(to-PalettonHSV :peru)
;;=> [34.56653534340593 0.6926829268292682 0.803921568627451 255.0]

to-PalettonHSV*

(to-PalettonHSV* c)

Examples

Convert into color space value

(to-PalettonHSV* :peru)
;;=> [24.484629201579203 88.3170731707317 102.5 255.0]

to-RGB

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :RGB})

Convert into color space value

(to-RGB :peru)
;;=> [205.0 133.0 63.0 255.0]

to-RGB*

Examples

Convert into color space value

(to-RGB* :peru)
;;=> [205.0 133.0 63.0 255.0]

to-RYB

(to-RYB c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :RYB})

Convert into color space value

(to-RYB :peru)
;;=> [205.0 201.05555555555557 63.0 255.0]

to-RYB*

Examples

Convert into color space value

(to-RYB* :peru)
;;=> [205.0 201.05555555555557 63.0 255.0]

to-sRGB

(to-sRGB c)

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :sRGB})

Convert into color space value

(to-sRGB :peru)
;;=> [231.6145767094841 191.09393296112452 136.21749733111375 255.0]

to-sRGB*

Examples

Convert into color space value

(to-sRGB* :peru)
;;=> [231.6145767094841 191.09393296112452 136.21749733111375 255.0]

to-UCS

(to-UCS c)

sRGB -> UCS

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :UCS})

Convert into color space value

(to-UCS :peru)
;;=> [0.2297609560411064 0.30116275923786345 0.3229215063577835 255.0]

to-UCS*

(to-UCS* c)

Examples

Convert into color space value

(to-UCS* :peru)
;;=> [92.463271524323 76.79650360565518 52.476442550398836 255.0]

to-UVW

(to-UVW c)

sRGB -> UVW

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :UVW})

Convert into color space value

(to-UVW :peru)
;;=> [56.30610204355539 32.00137465257972 60.781043358307215 255.0]

to-UVW*

(to-UVW* c)

Examples

Convert into color space value

(to-UVW* :peru)
;;=> [139.02320684769478 192.3380677883153 170.92566159877146 255.0]

to-XYB

(to-XYB c)

sRGB -> XYB

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :XYB})

Convert into color space value

(to-XYB :peru)
;;=> [0.0093091237938977 0.5304308692924428 0.45483081731562586 255.0]

to-XYB*

(to-XYB* c)

Examples

Convert into color space value

(to-XYB* :peru)
;;=> [144.81114286768258 160.01242357654883 137.20653455380022 255.0]

to-XYZ

(to-XYZ c)

sRGB -> XYZ

Returned ranges (D65):

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :XYZ})

Convert into color space value

(to-XYZ :peru)
;;=> [34.46414340616597 30.116275923786347 8.699616906363621 255.0]

to-XYZ*

(to-XYZ* c)

Examples

Convert into color space value

(to-XYZ* :peru)
;;=> [92.46327152432293 76.79650360565518 20.37418431823814 255.0]

to-XYZ1

(to-XYZ1 c)

sRGB -> XYZ, scaled to range 0-1

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :XYZ1})

Convert into color space value

(to-XYZ1 :peru)
;;=> [0.34464143406165965 0.30116275923786345 0.08699616906363622 255.0]

to-XYZ1*

Examples

Convert into color space value

(to-XYZ1* :peru)
;;=> [92.46327152432293 76.79650360565518 20.37418431823814 255.0]

to-YCbCr

(to-YCbCr c)

RGB -> YCbCr

Used in JPEG. BT-601

Ranges;

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :YCbCr})

Convert into color space value

(to-YCbCr :peru)
;;=> [146.511908 -47.14899199999999 41.69184 255.0]

to-YCbCr*

(to-YCbCr* c)

Examples

Convert into color space value

(to-YCbCr* :peru)
;;=> [146.511908 80.35100800000001 169.19184 255.0]

to-YCgCo

(to-YCgCo c)

RGB -> YCgCo

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :YCgCo})

Convert into color space value

(to-YCgCo :peru)
;;=> [133.5 -0.5 71.0 255.0]

to-YCgCo*

(to-YCgCo* c)

Examples

Convert into color space value

(to-YCgCo* :peru)
;;=> [133.5 127.0 198.5 255.0]

to-YDbDr

(to-YDbDr c)

RGB -> YDbDr

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :YDbDr})

Convert into color space value

(to-YDbDr :peru)
;;=> [146.54799999999997 -125.71000000000002 -111.16599999999997 255.0]

to-YDbDr*

(to-YDbDr* c)

Examples

Convert into color space value

(to-YDbDr* :peru)
;;=> [146.54799999999997 80.34696174043509 85.80232558139537 255.0]

to-YIQ

(to-YIQ c)

RGB -> YIQ

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :YIQ})

Convert into color space value

(to-YIQ :peru)
;;=> [146.511908 65.37996199999999 -6.554618000000001 255.0]

to-YIQ*

(to-YIQ* c)

Examples

Convert into color space value

(to-YIQ* :peru)
;;=> [146.511908 182.37510995172195 121.22873049861172 255.0]

to-YPbPr

(to-YPbPr c)

RGB -> YPbPr

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :YPbPr})

Convert into color space value

(to-YPbPr :peru)
;;=> [143.2532 -80.25319999999999 61.74680000000001 255.0]

to-YPbPr*

(to-YPbPr* c)

Examples

Convert into color space value

(to-YPbPr* :peru)
;;=> [143.2532 84.25080836387153 166.70929641859286 255.0]

to-YUV

(to-YUV c)

RGB -> YUV

Ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :YUV})

Convert into color space value

(to-YUV :peru)
;;=> [146.511908 -41.104 51.28 255.0]

to-YUV*

(to-YUV* c)

Examples

Convert into color space value

(to-YUV* :peru)
;;=> [146.511908 80.36238532110092 169.19105691056913 255.0]

to-Yxy

(to-Yxy c)

sRGB -> Yxy

Returned ranges:

Examples

Gradient between four colors using given color space.

(clojure2d.color/gradient [:maroon :white :black :lightcyan]
                          {:colorspace :Yxy})

Convert into color space value

(to-Yxy :peru)
;;=> [30.116275923786347 0.4703074012548907 0.41097517783242304 255.0]

to-Yxy*

(to-Yxy* c)

Examples

Convert into color space value

(to-Yxy* :peru)
;;=> [76.79650360565518 187.36629473878304 174.66445057877976 255.0]

tritanomaly

tritanopia

valid-color?

(valid-color? c)

Check if given argument is valid color.

Check is done by trying to convert to color representation.

Returns color when valid.

See also possible-color?

Examples

Usage

(valid-color? :blue)
;;=> [0.0 0.0 255.0 255.0]
(valid-color? :not-a-color)
;;=> nil
(valid-color? [1 2 3 255])
;;=> [1.0 2.0 3.0 255.0]
(valid-color? [:red :green :blue])
;;=> false
(valid-color? (gradient [:red :blue]))
;;=> false

wavelength

(wavelength lambda)

Returns color from given wavelength in nm

weighted-average

(weighted-average cs weights colorspace) (weighted-average cs weights)

Average colors with weights in given colorspace (default: :sRGB)

whiten

(whiten col) (whiten col amt)

Change color towards white.

Works in HSB color space. Default amount is set to 0.2 and changes W channel by this amount.

See blacken.