Input custom color

This commit is contained in:
2024-04-23 18:34:21 +02:00
parent 4083e4fb4e
commit b3dd2ba74b

View File

@ -27,6 +27,22 @@
return [c || 0, m || 0, y || 0, Math.round(k * 100)];
}
function stringToRgb(input: string): number[] | undefined {
if (input.startsWith("#")) {
let parts = input.match(/([0-f0-F]){2}/g);
if (!parts || parts.length != 3) return undefined;
return parts.map((e) => parseInt(e, 16));
} else if (input.startsWith("rgb(")) {
let parts = input.match(/[0-9]{1,3}/g);
if (!parts || parts.length != 3) return undefined;
return parts.map((e) => parseInt(e));
} else if (input.startsWith("cmyk(")) {
let parts = input.match(/[0-9]{1,3}/g);
if (!parts || parts.length != 4) return undefined;
return cmykToRgb(parts.map((e) => parseInt(e)));
}
}
enum Mode {
Rgb,
Cmyk,
@ -130,6 +146,17 @@
}
}}
/>
<Button
text="Input custom color"
emoji="🎨"
callback={() => {
let colorString = prompt(
"Color: (eg. `#00ff00` or `rgb(0, 255, 0)` or `cmyk(100, 0, 100, 0)`)"
);
if (!colorString) return;
targetColor = stringToRgb(colorString) || [0, 0, 0];
}}
/>
<Button
text="Change input method"
emoji="🔀"