From b3dd2ba74b230f9285896c5989180c8e5e4ebeb0 Mon Sep 17 00:00:00 2001 From: minie4 Date: Tue, 23 Apr 2024 18:34:21 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Input=20custom=20color?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.svelte | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/App.svelte b/src/App.svelte index c86d84d..0c85d92 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -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 @@ } }} /> +