fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 3.73 kB
Source Map (JSON)
{"version":3,"file":"util.min.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":"AAQO,MAAMA,EAAUA,CAACC,EAAWC,EAAWC,KACxCA,EAAI,IACNA,GAAK,GAEHA,EAAI,IACNA,GAAK,GAEHA,EAAI,EAAI,EACHF,EAAc,GAATC,EAAID,GAASE,EAEvBA,EAAI,GACCD,EAELC,EAAI,EAAI,EACHF,GAAKC,EAAID,IAAM,EAAI,EAAIE,GAAK,EAE9BF,GAWIG,EAAUA,CACrBC,EACAC,EACAC,EACAC,KAEAH,GAAK,IACLC,GAAK,IACLC,GAAK,IACL,MAAME,EAAWC,KAAKC,IAAIN,EAAGC,EAAGC,GAC9BK,EAAWF,KAAKG,IAAIR,EAAGC,EAAGC,GAE5B,IAAIO,EAAYC,EAChB,MAAMC,GAAKP,EAAWG,GAAY,EAElC,GAAIH,IAAaG,EACfE,EAAIC,EAAI,MACH,CACL,MAAME,EAAIR,EAAWG,EAErB,OADAG,EAAIC,EAAI,GAAMC,GAAK,EAAIR,EAAWG,GAAYK,GAAKR,EAAWG,GACtDH,GACN,KAAKJ,EACHS,GAAKR,EAAIC,GAAKU,GAAKX,EAAIC,EAAI,EAAI,GAC/B,MACF,KAAKD,EACHQ,GAAKP,EAAIF,GAAKY,EAAI,EAClB,MACF,KAAKV,EACHO,GAAKT,EAAIC,GAAKW,EAAI,EAGtBH,GAAK,CACP,CAEA,MAAO,CAACJ,KAAKQ,MAAU,IAAJJ,GAAUJ,KAAKQ,MAAU,IAAJH,GAAUL,KAAKQ,MAAU,IAAJF,GAAUR,EAAE,EAG9DW,EAAmB,WAAA,IAACC,EAAKC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAG,OAC1CG,WAAWJ,IAAUA,EAAMK,SAAS,KAAO,IAAM,EAAE,EAKxCC,EAAUN,GACrBV,KAAKG,IAAIH,KAAKQ,MAAME,GAAQ,KAAKO,SAAS,IAAIC,cAAcC,SAAS,EAAG,KAK7DC,EAAcC,IAKe,IAJxC1B,EACAC,EACAC,EACAC,EAAI,GACauB,EACjB,MAAMC,EAAMtB,KAAKQ,MAAU,GAAJb,EAAc,IAAJC,EAAe,IAAJC,GAC5C,MAAO,CAACyB,EAAKA,EAAKA,EAAKxB,EAAE"}