0.2.2 • Published 9 years ago
inkdrop v0.2.2
InkDrop
Javascript (TypeScript) color manipulation and conversion library.
Motivation
This library doesn't perform any implicit conversions between different color models and implemented in a way so that js compilers with dead code elimination could easily remove unused code.
Installation
Npm package inkdrop provides umd modules, es6 modules at jsnext:main and TypeScript typings.
$ npm install inkdropColor models
All color models are using values with a range [0, 1] for all properties.
RgbColorHsvColorHslColorHwbColorCmykColorXyzColorXyyColorLabColorLchColor
Converters
rgbLinearize(rgb: RgbColor): RgbColorrgbDelinearize(lrgb: RgbColor): RgbColorrgbToHsl(rgb: RgbColor): HslColorhslToRgb(hsl: HslColor): RgbColorrgbToHsv(rgb: RgbColor): HsvColorhsvToRgb(hsv: HsvColor): RgbColorrgbToHwb(rgb: RgbColor): HwbColorhwbToRgb(hwb: HwbColor): RgbColorrgbToCmyk(rgb: RgbColor): CmykColorcmykToRgb(cmyk: CmykColor): RgbColorrgbToHex(rgb: RgbColor): stringhexToRgb(hex: string): RgbColorlinearRgbToXyz(lrgb: RgbColor): XyzColorxyzToLinearRgb(xyz: XyzColor): RgbColorxyzToXyy(xyz: XyzColor): XyyColorxyyToXyz(xyy: XyyColor): XyzColorxyzToLab(xyz: XyzColor): LabColorlabToXyz(lab: LabColor): XyzColorlabToLch(lab: LabColor): LchColorlchToLab(lch: LchColor): LabColorrgbToLab(rgb: RgbColor): LabColorlabToRgb(lab: LabColor): RgbColorrgbToLch(rgb: RgbColor): LchColorlchToRgb(lch: LchColor): RgbColor
Utils
luminance(rgb: RgbColor): numbercontrast(a: RgbColor, b: RgbColor): numbercontrastLevel(contrastRatio: number): numberfindBestContrast(a: RgbColor, bs: RgbColor[]): RgbColor | undefinedbrightness(rgb: RgbColor): numberisDark(rgb: RgbColor): booleanisLight(rgb: RgbColor): booleanlabDistanceCIE76(lab: LabColor): numberlabDistanceCIE94(lab: LabColor): numberclampRgb(rgb: RgbColor): RgbColor
Transformation functions
absDesaturate(hsl: HslColor, amount = 0.1): HslColorabsSaturate(hsl: HslColor, amount = 0.1): HslColorabsLighten(hsl: HslColor, amount = 0.1): HslColorabsDarken(hsl: HslColor, amount = 0.1): HslColorabsFadeIn(hsl: HslColor, amount = 0.1): HslColorabsFadeOut(hsl: HslColor, amount = 0.1): HslColorabsWhiten(hwb: HwbColor, amount = 0.1): HwbColorabsBlacken(hwb: HwbColor, amount = 0.1): HwbColorrelDesaturate(hsl: HslColor, ratio = 0.1): HslColorrelSaturate(hsl: HslColor, ratio = 0.1): HslColorrelLighten(hsl: HslColor, ratio = 0.1): HslColorrelDarken(hsl: HslColor, ratio = 0.1): HslColorrelFadeIn(hsl: HslColor, ratio = 0.1): HslColorrelFadeOut(hsl: HslColor, ratio = 0.1): HslColorrelWhiten(hwb: HwbColor, ratio = 0.1): HwbColorrelBlacken(hwb: HwbColor, ratio = 0.1): HwbColorspin(hsl: HslColor, amount: number): HslColormix(a: RgbColor, b: RgbColor, amount = 0.5): RgbColortint(rgb: RgbColor, amount = 0.5): RgbColorshade(rgb: RgbColor, amount = 0.5): RgbColornegate(rgb: RgbColor): RgbColorgreyscale(rgb: RgbColor): RgbColor
Blend functions
blend(c1: RgbColor, c2: RgbColor, mode: (a: number, b: number) => number): RgbColorblendMultiply(a: RgbColor, b: RgbColor): RgbColorblendScreen(a: RgbColor, b: RgbColor): RgbColorblendOverlay(a: RgbColor, b: RgbColor): RgbColorblendSoftlight(a: RgbColor, b: RgbColor): RgbColorblendHardlight(a: RgbColor, b: RgbColor): RgbColorblendDifference(a: RgbColor, b: RgbColor): RgbColorblendExclusion(a: RgbColor, b: RgbColor): RgbColorblendAverage(a: RgbColor, b: RgbColor): RgbColorblendNegation(a: RgbColor, b: RgbColor): RgbColor
Combination functions
complement(hsl: HslColor): HslColortriad(hsl: HslColor): [HslColor, HslColor, HslColor]tetrad(hsl: HslColor): [HslColor, HslColor, HslColor, HslColor]splitComplement(hsl: HslColor): [HslColor, HslColor, HslColor]analogous(hsl: HslColor, results = 6, slices = 30): HslColor[]monochromatic(hsv: HsvColor, results = 6): HsvColor[]
Text formatting functions
formatRgbToHex(rgb: RgbColor): stringformatRgbToString(rgb: RgbColor): stringformatHslToString(hsl: HslColor): stringformatHsvToString(hsv: HsvColor): string
Compare functions
Epsilon:
alpha = 1 / 100
rgb colors = 1 / 255
hue = 1 / 360
saturation, lightness, value, whiteness, blackness, cyan, magenta, yellow, black = 1 / 100almostEqualRgb(a: RgbColor, b: RgbColor): booleanalmostEqualHsl(a: HslColor, b: HslColor): booleanalmostEqualHsv(a: HsvColor, b: HsvColor): booleanalmostEqualHwb(a: HwbColor, b: HwbColor): booleanalmostEqualCmyk(a: CmykColor, b: CmykColor): boolean