fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 5.36 kB
Source Map (JSON)
{"version":3,"file":"util.mjs","sources":["../../../src/color/util.ts"],"sourcesContent":["import type { TRGBAColorSource } from './typedefs';\n\n/**\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number}\n */\nexport const hue2rgb = (p: number, q: number, t: number): number => {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n};\n\n/**\n * Adapted from {@link https://gist.github.com/mjackson/5311256 https://gist.github.com/mjackson}\n * @param {Number} r Red color value\n * @param {Number} g Green color value\n * @param {Number} b Blue color value\n * @param {Number} a Alpha color value pass through\n * @return {TRGBColorSource} Hsl color\n */\nexport const rgb2Hsl = (\n r: number,\n g: number,\n b: number,\n a: number,\n): TRGBAColorSource => {\n r /= 255;\n g /= 255;\n b /= 255;\n const maxValue = Math.max(r, g, b),\n minValue = Math.min(r, g, b);\n\n let h!: number, s: number;\n const l = (maxValue + minValue) / 2;\n\n if (maxValue === minValue) {\n h = s = 0; // achromatic\n } else {\n const d = maxValue - minValue;\n s = l > 0.5 ? d / (2 - maxValue - minValue) : d / (maxValue + minValue);\n switch (maxValue) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100), a];\n};\n\nexport const fromAlphaToFloat = (value = '1') =>\n parseFloat(value) / (value.endsWith('%') ? 100 : 1);\n\n/**\n * Convert a value in the inclusive range [0, 255] to hex\n */\nexport const hexify = (value: number) =>\n Math.min(Math.round(value), 255).toString(16).toUpperCase().padStart(2, '0');\n\n/**\n * Calculate the grey average value for rgb and pass through alpha\n */\nexport const greyAverage = ([\n r,\n g,\n b,\n a = 1,\n]: TRGBAColorSource): TRGBAColorSource => {\n const avg = Math.round(r * 0.3 + g * 0.59 + b * 0.11);\n return [avg, avg, avg, a];\n};\n"],"names":["hue2rgb","p","q","t","rgb2Hsl","r","g","b","a","maxValue","Math","max","minValue","min","h","s","l","d","round","fromAlphaToFloat","value","arguments","length","undefined","parseFloat","endsWith","hexify","toString","toUpperCase","padStart","greyAverage","_ref","avg"],"mappings":"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"}