Releases: facelessuser/coloraide
2.2.1
2.2.1
- FIX: Averaging of a channel set with only undefined values should return an undefined value.
- FIX: Averaging should be done in linear light by default for a sane default. Default is now
srgb-linear
.
2.2
2.2
- NEW: Add XYB color space.
- ENHANCE: More efficient averaging.
- FIX: Fix issue where if all colors have the same channel undefined that a divide by zero can occur.
2.1
2.1
- NEW: Add new color averaging method.
- FIX: Interpolation should not modify any input colors.
2.0.2
2.0.2
- FIX: Consistent normalization of HWB hue.
- FIX: Consistent normalization of color in harmony monochromatic.
2.0.1
2.0.1
- FIX: Incorrect result when interpolating from a cylindrical space to a rectangular space and using
out_space
.
2.0
2.0
-
BREAK:
interpolate
,steps
,mix
,filter
,compose
, andharmony
will no longer base the output color on
the first input color. Colors will be evaluated in the specified color space and be output in that space unless
out_space
is used to specify a specific output color space. For migration, specify the desiredout_space
if the
workingspace
does not match the desired output. -
BREAK: Achromatic and undefined color channel handling has been rewritten. Color space objects no longer utilize
thenormalize()
orachromatic_hue()
method and instead now use a newis_achromatic()
andresolve_channel()
methods. -
NEW: Expose the new
Color.is_achromatic()
method to tell if colors, even non-cylindrical colors, are achromatic
or reasonably close to achromatic. -
NEW: Color channel definitions can specify a non-zero default for an undefined channel. Use
resolve_channel()
for more advanced handling. -
NEW: CAM16, CAM16 UCS, CAM16 SCD, CAM15 LCD, CAM16 JMh, HCT, Jzazbz, JzCzhz, and IPT all currently require a
dynamic approach to detect achromatic colors. Undefined LCh chroma and hue channels and Lab a and b channels can now
resolve to non-zero values when undefined for better achromatic interpolation. -
NEW (ACEScct) will now resolve undefined color channels (non-alpha) with a non-zero default that represents black
as zero is actually out of gamut for that space. -
NEW:
filter
,compose
, andharmony
all now support theout_space
parameter. -
NEW: All
<space>ish
mixin classes now give access to normalized names and indexes asnames()
andindexes()
opposed to<space>ish_names()
etc. Old methods are still available but are deprecated. -
NEW: All RGB, HSL, and HSV color spaces are now created with a respective
RGBish
,HSLish
, andHSVish
mixin
class. -
NEW: Separable blend modes will now be evaluated in whatever RGB-ish color space is provided.
-
NEW:
compose
will throw an error if a non-RGB-ish color space is provided. -
NEW:
Color.normalize()
added a newnans
parameter that when set toFalse
will prevent achromatic hue
normalization and will just force all channels to be defined. -
NEW:
Color.coords()
andColor.alpha()
, which used to be available during the alpha/beta period have been
re-added.coords()
accesses just the color channels (no alpha channel) whilealpha()
gets the alpha channel. -
NEW: Coordinate access functions:
get()
,set()
,coords()
, andalpha()
functions now have anans
parameter that when set toFalse
will ensure the component(s) is returned as a real number instead of NaN. Set
operations only apply this when passing the current value to a callback for relative modification. -
NEW: A
norm
parameter is now added toconvert
andupdate
. When set toFalse
, it will prevent achromatic
normalization of hues during conversion. If no conversion is needed, the color is returned as is. -
NEW: ColorAide used to gamut map colors such as HSL, HSV, and HWB when interpolating into those spaces. This is no
longer done. It is possible to gamut map wider gamuts with these color spaces, so it will be up to the user to apply
gamut mapping when it is determined they need it. -
NEW:
EXTENDED_RANGE
is no longer needed and is removed from current color space classes. -
NEW: Improved accuracy for Oklab, OkLCh, Okhsl, and Okhsv.
-
NEW: New "continuous" interpolation method.
-
FIX: Fix aliases in IPT and IgPgTg.
-
FIX: Fix some conversion issues with CAM16 based color spaces that was caused due to bad achromatic handling.
1.8.2
1.8.2
- FIX: Ensure Brettel CVD approach uses Judd-Vos CMFs
- FIX: Fix some exception messages.
1.8.1
1.8.1
- FIX: Ensure Judd-Vos correction is applied to linear RGB to LMS conversion for CVD.
- FIX: Fix outdated API information in docs.
1.8
1.8.0
- NEW: Modern sRGB, HSL, and HWB should allow mixed percentage and numbers. HSL and HWB percentages in the
hsl()
andhwb()
formats respectively will resolve to numbers in the range [0, 100]. These changes reflect the latest
changes in the CSS Level 4 Color spec. - NEW: HSL and HWB can serialize to a modern syntax that does not use percentages, but the default still uses
percentages. - NEW: Rework CSS parsing for better performance.
- FIX: Handle some parsing corner cases that are handled by browsers, but not by ColorAide. For example,
color(srgb 1-0.5.4)
should parse ascolor(srgb 1 -0.5 0.4)
. - FIX: Ensure that
COLOR_FORMAT
is respected.
1.7.1
1.7.1
- FIX: Ensure CAM16 spaces mirrors positive and negative percentages for
a
andb
components. - FIX: Since the CAM16 JMh model can not predict achromatic colors with negative lightness and, more importantly,
negative lightness is not useful, limit the lower end of lightness in CAM16 spaces to zero. - FIX: When a CAM16 JMh (or HCT) color's chroma, when not discounting illuminance, has chroma drop below the actual
ideal achromatic chroma threshold, just use the ideal chroma to ensure better conversion back to XYZ. - FIX: Jzazbz and JzCzhz model can never translate a color with a negative lightness, so just clamp negative
lightness while in Jzazbz and JzCzhz. - FIX: Fix a math error in CAM16.
- FIX: Fix CAM16 JMh M limit which was too low.
- FIX: IPT was set to "bound" when it should have an unbounded gamut.
- FIX: When both
comma
andnone
are enabled it could make undefined alpha values show up asnone
in legacy CSS
format. - FIX: Sane handling of inverse lightness in DIN99o.