Skip to content

Releases: Evercoder/culori

v0.20.1

09 Aug 11:04
Compare
Choose a tag to compare

Bug fixes

  • Fixes the values returned by interpolators (linear / spline) when t is outside the [0, 1] interval. This can happen when an easing function returns a value outside [0, 1] (#140)
  • Don't normalize w and b values when hwb() strings provide values whose sum goes over 100%

v0.20.0

05 Aug 10:48
Compare
Choose a tag to compare

New features

  • culori.parse() now accepts the color() notation; this makes Culori understand things like color(display-p3 0.5 0.1 0.2 / 0.75), as well as any string it produces via culori.formatCss().
  • culori.formatCss() produces a CSS-compatible string representation of the color, where color spaces are generally serialized as color(--mode), unless they're predefined (in which case we use their appropriate CSS identifier, e.g. color(display-p3)), or they have their own functional notation (in which case we use that, e.g. lab()).

v0.19.1

30 Jul 10:01
Compare
Choose a tag to compare

Bug fixes:

  • jab/jch color spaces: adjust the PQ transfer function to produce a value of 0 instead of NaN when invoked with a negative value.
  • improvements to clampChroma(): use the appropriate stop condition for the bisection search based on the range of the Chroma for a particular color space; when chroma: 0 is not displayable return the RGB clamping of the achromatic version, which improves the function's perceptual continuity.

v0.19.0

26 Jul 09:29
Compare
Choose a tag to compare

⚠️ Breaking changes

culori.clampChroma() now accepts a second argument mode to control on which color space the chroma-finding algorithm operates (re: #129). This is a potentially breaking change if you were using culori.clampChroma as a callback to array methods:

['red', 'green'].map(culori.clampChroma);

The function's freshly introduced second parameter (mode) vs. the second argument to array method callbacks (index) means this usage will break in [email protected]. Update it to:

['red', 'green'].map(color => culori.clampChroma(color));

New features

  • culori.differenceHyab() — A hybrid Euclidean-city-block-distance formula shown to work better for large color differences than CIEDE2000, while still holding up well for smaller color differences. (#126)
  • culori.formatHsl() — Returns the hsl(…) / hsla(…) string for a color, with values rounded to a precision of two digits. (#124)

Bug fixes

  • culori.clampChroma() always returns a displayable color, rather than a color in the near vicinity of a displayable color (#129);
  • Return undefined on culori.parse(undefined) rather than throwing an error;
  • Use updated matrices for Oklab;
  • Fix transfer functions for negative values in RGB color spaces.

Miscellaneous

  • (docs) Clarified that the sRGB gamut spans a Lightness of approximatively [0, 0.999] in oklab / oklch. (The value l: 1 is not displayable in rgb.)
  • (repo) renamed the default branch to main

v0.18.2

29 Apr 10:37
Compare
Choose a tag to compare

Bug fixes

  • Fixes handling of <alpha-value> in hsl() and hwb() strings, #118

v0.18.1

05 Mar 13:58
Compare
Choose a tag to compare

v0.18.0

24 Dec 16:06
Compare
Choose a tag to compare

New features:

  • Adds Björn Ottosson's Oklab color space in Cartesian (oklab) and cylindrical (oklch) forms.

Bug fixes:

  • Sets the correct mode for D65 Lab / Lch direct conversion pairs.

v0.17.0

02 Sep 17:20
Compare
Choose a tag to compare

⚠️ Breaking changes

  • Make all CIE color difference formulas (differenceCie76, differenceCie94, differenceCmc, differenceCiede2000) use the lab65 (D65) color space instead of the lab (D50) color space.

v0.16.0

02 Sep 17:19
Compare
Choose a tag to compare

New features:

  • Added CIELAB with D65 standard illuminant, in Cartesian (lab65) and cylindrical (lch65) forms;
  • Added interpolatorSplineMonotone2(), a monotone interpolating spline with more sophisticated boundary conditions;

Breaking changes:

  • Switch the DIN99o color spaces (dlab and dlch) to use lab65 (D65 illuminant) rather than lab (D50 illuminant), as designed

v0.15.0

16 Aug 21:42
Compare
Choose a tag to compare

This release adds several new color spaces:

  • A98, compatible with Adobe RGB (1998): a98
  • Display P3: p3
  • Rec. 2020: rec2020
  • ProPhoto RGB: prophoto
  • XYZ with D65 illuminant: xyz65
  • JzAzBz in cartesian (jab) and polar (jch) form (#73)

Bug fixes:

  • Fixes achromatic RGB to Lab conversion