From 3fce96a9bf6de0c9ff9d92af441416f05637ae8e Mon Sep 17 00:00:00 2001 From: Lgf <2246221508@qq.com> Date: Sat, 25 Apr 2026 17:10:40 +0800 Subject: [PATCH] =?UTF-8?q?refactor(hooks):=20=E7=AE=80=E5=8C=96=E6=B0=B4?= =?UTF-8?q?=E5=8D=B0=E9=A2=9C=E8=89=B2=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除 HSL 转 RGB 的复杂转换逻辑,直接使用 CSS 变量中的 HSL 值 --- packages/effects/hooks/src/use-watermark.ts | 35 ++------------------- 1 file changed, 3 insertions(+), 32 deletions(-) diff --git a/packages/effects/hooks/src/use-watermark.ts b/packages/effects/hooks/src/use-watermark.ts index 875f9f511..4a271b574 100644 --- a/packages/effects/hooks/src/use-watermark.ts +++ b/packages/effects/hooks/src/use-watermark.ts @@ -9,48 +9,19 @@ const activeInstances = ref(0); const CSS_VAR_FOREGROUND = '--foreground'; -function hslToRgb(h: number, s: number, l: number): [number, number, number] { - s /= 100; - l /= 100; - const k = (n: number) => (n + h / 30) % 12; - const a = s * Math.min(l, 1 - l); - const f = (n: number) => - l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1))); - return [Math.round(255 * f(0)), Math.round(255 * f(8)), Math.round(255 * f(4))]; -} - -function parseHslValue(hslStr: string): { h: number; s: number; l: number } | null { - const trimmed = hslStr.trim(); - - const match = trimmed.match(/^(\d+(?:\.\d+)?)(?:deg)?\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%$/); - if (match) { - return { - h: parseFloat(match[1]), - s: parseFloat(match[2]), - l: parseFloat(match[3]), - }; - } - - return null; -} - function getForegroundColorFromCSS(): string { try { const computedStyle = getComputedStyle(document.documentElement); const foregroundValue = computedStyle.getPropertyValue(CSS_VAR_FOREGROUND).trim(); if (foregroundValue) { - const hsl = parseHslValue(foregroundValue); - if (hsl) { - const [r, g, b] = hslToRgb(hsl.h, hsl.s, hsl.l); - return `rgba(${r}, ${g}, ${b}, 1)`; - } + return `hsl(${foregroundValue})`; } } catch (e) { - console.warn('Failed to parse CSS variable for watermark color:', e); + console.warn('Failed to get CSS variable for watermark color:', e); } - return 'rgba(128, 128, 128, 1)'; + return 'hsl(0 0% 50%)'; } function getColorStops(): { color: string; offset: number }[] {