First Commit

This commit is contained in:
2024-07-15 15:57:41 +03:00
commit 2f7b948cda
2137 changed files with 402438 additions and 0 deletions

26
node_modules/culori/src/hwb/convertHwbToRgb.js generated vendored Normal file
View File

@@ -0,0 +1,26 @@
/*
HWB to RGB converter
--------------------
References:
* https://drafts.csswg.org/css-color/#hwb-to-rgb
* https://en.wikipedia.org/wiki/HWB_color_model
* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf
*/
import convertHsvToRgb from '../hsv/convertHsvToRgb.js';
export default function convertHwbToRgb({ h, w, b, alpha }) {
// normalize w + b to 1
if (w + b > 1) {
let s = w + b;
w /= s;
b /= s;
}
return convertHsvToRgb({
h: h,
s: b === 1 ? 1 : 1 - w / (1 - b),
v: 1 - b,
alpha: alpha
});
}

24
node_modules/culori/src/hwb/convertRgbToHwb.js generated vendored Normal file
View File

@@ -0,0 +1,24 @@
/*
RGB to HWB converter
--------------------
References:
* https://drafts.csswg.org/css-color/#hwb-to-rgb
* https://en.wikipedia.org/wiki/HWB_color_model
* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf
*/
import convertRgbToHsv from '../hsv/convertRgbToHsv.js';
export default function convertRgbToHwb(rgba) {
let hsv = convertRgbToHsv(rgba);
if (hsv === undefined) return undefined;
let res = {
mode: 'hwb',
w: (1 - hsv.s) * hsv.v,
b: 1 - hsv.v
};
if (hsv.h !== undefined) res.h = hsv.h;
if (hsv.alpha !== undefined) res.alpha = hsv.alpha;
return res;
}

51
node_modules/culori/src/hwb/definition.js generated vendored Normal file
View File

@@ -0,0 +1,51 @@
import convertHwbToRgb from './convertHwbToRgb.js';
import convertRgbToHwb from './convertRgbToHwb.js';
import parseHwb from './parseHwb.js';
import { fixupHueShorter } from '../fixup/hue.js';
import { fixupAlpha } from '../fixup/alpha.js';
import { interpolatorLinear } from '../interpolate/linear.js';
import { differenceHueNaive } from '../difference.js';
import { averageAngle } from '../average.js';
const definition = {
mode: 'hwb',
toMode: {
rgb: convertHwbToRgb
},
fromMode: {
rgb: convertRgbToHwb
},
channels: ['h', 'w', 'b', 'alpha'],
ranges: {
h: [0, 360]
},
gamut: 'rgb',
parse: [parseHwb],
serialize: c =>
`hwb(${c.h || 0} ${c.w * 100}% ${c.b * 100}%${
c.alpha < 1 ? ` / ${c.alpha}` : ''
})`,
interpolate: {
h: { use: interpolatorLinear, fixup: fixupHueShorter },
w: interpolatorLinear,
b: interpolatorLinear,
alpha: { use: interpolatorLinear, fixup: fixupAlpha }
},
difference: {
h: differenceHueNaive
},
average: {
h: averageAngle
}
};
export default definition;

38
node_modules/culori/src/hwb/parseHwb.js generated vendored Normal file
View File

@@ -0,0 +1,38 @@
import { Tok } from '../parse.js';
function ParseHwb(color, parsed) {
if (!parsed || parsed[0] !== 'hwb') {
return undefined;
}
const res = { mode: 'hwb' };
const [, h, w, b, alpha] = parsed;
if (h.type !== Tok.None) {
if (h.type === Tok.Percentage) {
return undefined;
}
res.h = h.value;
}
if (w.type !== Tok.None) {
if (w.type === Tok.Hue) {
return undefined;
}
res.w = w.type === Tok.Number ? w.value : w.value / 100;
}
if (b.type !== Tok.None) {
if (b.type === Tok.Hue) {
return undefined;
}
res.b = b.type === Tok.Number ? b.value : b.value / 100;
}
if (alpha.type !== Tok.None) {
res.alpha = alpha.type === Tok.Number ? alpha.value : alpha.value / 100;
}
return res;
}
export default ParseHwb;