Skip to content

Releases: facelessuser/coloraide

2.2

16 Apr 02:21
6cab72a
Compare
Choose a tag to compare
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

14 Apr 02:30
Compare
Choose a tag to compare
2.1

2.1

  • NEW: Add new color averaging method.
  • FIX: Interpolation should not modify any input colors.

2.0.2

04 Apr 15:24
Compare
Choose a tag to compare

2.0.2

  • FIX: Consistent normalization of HWB hue.
  • FIX: Consistent normalization of color in harmony monochromatic.

2.0.1

02 Apr 15:16
Compare
Choose a tag to compare

2.0.1

  • FIX: Incorrect result when interpolating from a cylindrical space to a rectangular space and using out_space.

2.0

01 Apr 20:46
aa7b3e2
Compare
Choose a tag to compare
2.0

2.0

  • BREAK: interpolate, steps, mix, filter, compose, and harmony 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 desired out_space if the
    working space does not match the desired output.

  • BREAK: Achromatic and undefined color channel handling has been rewritten. Color space objects no longer utilize
    the normalize() or achromatic_hue() method and instead now use a new is_achromatic() and resolve_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, and harmony all now support the out_space parameter.

  • NEW: All <space>ish mixin classes now give access to normalized names and indexes as names() and indexes()
    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, and HSVish 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 new nans parameter that when set to False will prevent achromatic hue
    normalization and will just force all channels to be defined.

  • NEW: Color.coords() and Color.alpha(), which used to be available during the alpha/beta period have been
    re-added. coords() accesses just the color channels (no alpha channel) while alpha() gets the alpha channel.

  • NEW: Coordinate access functions: get(), set(), coords(), and alpha() functions now have a nans
    parameter that when set to False 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 to convert and update. When set to False, 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

08 Mar 23:30
5c2b88b
Compare
Choose a tag to compare

1.8.2

  • FIX: Ensure Brettel CVD approach uses Judd-Vos CMFs
  • FIX: Fix some exception messages.

1.8.1

07 Mar 03:02
Compare
Choose a tag to compare

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

05 Mar 15:08
Compare
Choose a tag to compare
1.8

1.8.0

  • NEW: Modern sRGB, HSL, and HWB should allow mixed percentage and numbers. HSL and HWB percentages in the hsl()
    and hwb() 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 as color(srgb 1 -0.5 0.4).
  • FIX: Ensure that COLOR_FORMAT is respected.

1.7.1

09 Feb 02:13
Compare
Choose a tag to compare

1.7.1

  • FIX: Ensure CAM16 spaces mirrors positive and negative percentages for a and b 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 and none are enabled it could make undefined alpha values show up as none in legacy CSS
    format.
  • FIX: Sane handling of inverse lightness in DIN99o.

1.7

06 Feb 02:03
Compare
Choose a tag to compare
1.7

1.7

  • NEW: Add support for CAM16 Jab and JMh: cam16 and cam16-jmh respectively.
  • NEW: Add support for CAM16 UCS (Jab forms): cam16-ucs, cam16-scd, and cam16-lcd.
  • NEW: Add support for the HCT color space (hct) which combines the colorfulness and hue from CAM16 JMh and the
    lightness from CIELab.
  • NEW: Gamut mapping classes derived from fit_lch_chroma can set DE_OPTIONS to pass ∆E parameters.
  • NEW: While rare, some cylindrical color spaces have an algorithm such that achromatic colors convert best with a
    very specific hue. Internally, this is now handled during conversions, but there can be reasons where knowing the hue
    can be useful such as plotting. Cylindrical spaces now expose a method called achromatic_hue() which will
    return this specific hue if needed.
  • FIX: Fix rec2100-hlg transform.
  • FIX: Some color transformation improvements.
  • FIX: Relax some achromatic detection logic for sRGB cylindrical models. Improves achromatic hue detection results
    when converting to and from various non-sRGB color spaces.