From 7f784ef1ecdc03b2f6f8c54486dfc9b582ade516 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Sun, 17 May 2026 02:34:41 +0300 Subject: [PATCH] perf(canvas): fast-path solid render colors --- packages/core/src/canvas/renderer/colors.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/core/src/canvas/renderer/colors.ts b/packages/core/src/canvas/renderer/colors.ts index c8e19de6a..9055ac26d 100644 --- a/packages/core/src/canvas/renderer/colors.ts +++ b/packages/core/src/canvas/renderer/colors.ts @@ -1,5 +1,7 @@ import { resolveNodeFillColor, resolveNodeStrokeColor } from '#core/color/management' import type { ResolvedRenderColor } from '#core/color/management' +import { normalizeColor } from '#core/color/normalize' +import { getFillOkHCL, getStrokeOkHCL } from '#core/color/okhcl' import type { Fill, SceneGraph, SceneNode, Stroke } from '#core/scene-graph' import type { Color } from '#core/types' @@ -35,6 +37,8 @@ export function resolveFillColor( node: SceneNode, graph: SceneGraph ): Color { + const varId = node.boundVariables[`fills/${fillIndex}/color`] + if (!varId && !getFillOkHCL(node, fillIndex)) return normalizeColor(fill.color) return resolveFillColorInfo(fill, fillIndex, node, graph).color } @@ -60,5 +64,7 @@ export function resolveStrokeColor( node: SceneNode, graph: SceneGraph ): Color { + const varId = node.boundVariables[`strokes/${strokeIndex}/color`] + if (!varId && !getStrokeOkHCL(node, strokeIndex)) return normalizeColor(stroke.color) return resolveStrokeColorInfo(stroke, strokeIndex, node, graph).color }