chromatic library

A comprehensive color science library for Dart.

Provides color space conversions, perceptual color difference (Delta E), chromatic adaptation, and more.

import 'package:chromatic/chromatic.dart';

final red = SRgbColor(1.0, 0.0, 0.0);
final lab = red.toLab();
print(lab); // Lab(53.23, 80.11, 67.22)

final other = LabColor(50, 30, -20);
print(deltaE00(lab, other)); // perceptual distance

Classes

AdobeRgbColor
Adobe RGB (1998) color.
AppleRgbColor
Apple RGB color.
BaseRgbColor
Base class for RGB color spaces.
Bt2020Color
ITU-R BT.2020 color.
CmyColor
CMY (Cyan, Magenta, Yellow) color.
CmykColor
CMYK (Cyan, Magenta, Yellow, Key/Black) color.
ColorBase
Base class for all color types.
HslColor
HSL (Hue, Saturation, Lightness) color.
HsvColor
HSV (Hue, Saturation, Value) color.
IptColor
IPT color space (Image Processing Transform).
LabColor
CIE Lab* color.
LchAbColor
CIE LCH(ab) color — cylindrical form of Lab.
LchUvColor
CIE LCH(uv) color — cylindrical form of Luv.
LuvColor
CIE Luv* color.
RgbColorSpaceDef
Defines the properties of an RGB color space.
SRgbColor
sRGB color (IEC 61966-2-1).
XyyColor
CIE 1931 xyY chromaticity color.
XyzColor
CIE 1931 XYZ color.

Constants

adaptationMatrices → const Map<String, List<double>>
3x3 adaptation matrices as flat row-major lists.
adobeRgbDef → const RgbColorSpaceDef
Adobe RGB (1998).
appleRgbDef → const RgbColorSpaceDef
Apple RGB.
bt2020Def → const RgbColorSpaceDef
ITU-R BT.2020.
cieE → const double
CIE epsilon: 216/24389 ≈ 0.008856
cieK → const double
CIE kappa: 24389/27 ≈ 903.3
illuminants → const Map<String, Map<String, List<double>>>
Standard illuminant white-point XYZ values.
sRgbDef → const RgbColorSpaceDef
sRGB color space (IEC 61966-2-1).

Functions

adaptXyzColor(XyzColor color, {required String targetIlluminant, String method = 'bradford'}) XyzColor
Adapts an XyzColor to a new illuminant, returning a new XyzColor.
chromaticAdapt(double x, double y, double z, {required String sourceIlluminant, required String targetIlluminant, String observer = '2', String method = 'bradford'}) → (double, double, double)
Applies chromatic adaptation to XYZ values.
cmykToCmy(CmykColor cmyk) CmyColor
Converts CmykColor to CmyColor.
cmyToCmyk(CmyColor cmy) CmykColor
Converts CmyColor to CmykColor.
cmyToRgb(CmyColor cmy) SRgbColor
Converts CmyColor to SRgbColor.
deltaE00(LabColor c1, LabColor c2, {double kL = 1, double kC = 1, double kH = 1}) double
CIEDE2000 color difference — the gold standard.
deltaE76(LabColor c1, LabColor c2) double
CIE76 color difference — simple Euclidean distance in Lab.
deltaE94(LabColor c1, LabColor c2, {double kL = 1, double kC = 1, double kH = 1, double k1 = 0.045, double k2 = 0.015}) double
CIE94 color difference.
deltaECmc(LabColor c1, LabColor c2, {double pl = 2, double pc = 1}) double
CMC l:c color difference.
hslToRgb(HslColor hsl) SRgbColor
Converts HslColor to SRgbColor.
hsvToRgb(HsvColor hsv) SRgbColor
Converts HsvColor to SRgbColor.
iptToXyz(IptColor ipt) XyzColor
Converts IptColor to XyzColor.
labToLchAb(LabColor lab) LchAbColor
Converts LabColor to LchAbColor.
labToSRgb(LabColor lab) SRgbColor
Converts LabColor directly to SRgbColor.
labToXyz(LabColor lab) XyzColor
Converts LabColor to XyzColor.
lchAbToLab(LchAbColor lch) LabColor
Converts LchAbColor to LabColor.
lchAbToSRgb(LchAbColor lch) SRgbColor
Converts LchAbColor directly to SRgbColor.
lchUvToLuv(LchUvColor lch) LuvColor
Converts LchUvColor to LuvColor.
luvToLchUv(LuvColor luv) LchUvColor
Converts LuvColor to LchUvColor.
luvToXyz(LuvColor luv) XyzColor
Converts LuvColor to XyzColor.
rgbToCmy(BaseRgbColor rgb) CmyColor
Converts BaseRgbColor to CmyColor.
rgbToHsl(BaseRgbColor rgb) HslColor
Converts SRgbColor to HslColor.
rgbToHsv(BaseRgbColor rgb) HsvColor
Converts SRgbColor to HsvColor.
rgbToXyz(BaseRgbColor rgb, {String? targetIlluminant, String observer = '2'}) XyzColor
Converts an BaseRgbColor to XyzColor.
sRgbToHsl(SRgbColor rgb) HslColor
Converts SRgbColor directly to HslColor.
sRgbToHsv(SRgbColor rgb) HsvColor
Converts SRgbColor directly to HsvColor.
sRgbToLab(SRgbColor rgb, {String? illuminant, String observer = '2'}) LabColor
Converts SRgbColor directly to LabColor.
sRgbToLchAb(SRgbColor rgb, {String? illuminant, String observer = '2'}) LchAbColor
Converts SRgbColor directly to LchAbColor.
xyyToXyz(XyyColor xyy) XyzColor
Converts XyyColor to XyzColor.
xyzToAdobeRgb(XyzColor xyz) AdobeRgbColor
Converts XyzColor to AdobeRgbColor.
xyzToAppleRgb(XyzColor xyz) AppleRgbColor
Converts XyzColor to AppleRgbColor.
xyzToBt2020(XyzColor xyz) Bt2020Color
Converts XyzColor to Bt2020Color.
xyzToIpt(XyzColor xyz) IptColor
Converts XyzColor to IptColor. Requires D65 illuminant.
xyzToLab(XyzColor xyz) LabColor
Converts XyzColor to LabColor.
xyzToLuv(XyzColor xyz) LuvColor
Converts XyzColor to LuvColor.
xyzToSRgb(XyzColor xyz) SRgbColor
Converts XyzColor to SRgbColor.
xyzToXyy(XyzColor xyz) XyyColor
Converts XyzColor to XyyColor.