From b3e6a418dd6c64d919bb6e1d4267165572edb88a Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 9 Jan 2024 16:49:46 +0800 Subject: [PATCH 1/3] feat: remove the logic of calculating fill color based on stroke color for labels --- packages/vrender-components/src/label/base.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/vrender-components/src/label/base.ts b/packages/vrender-components/src/label/base.ts index f2b10f5f9..46ca51a85 100644 --- a/packages/vrender-components/src/label/base.ts +++ b/packages/vrender-components/src/label/base.ts @@ -922,21 +922,6 @@ export class LabelBase extends AbstractComponent { continue; } - /** 当label设置stroke时,保留stroke设置的颜色,根据stroke对fill做反色 */ - if (label.attribute.stroke) { - label.setAttributes({ - fill: labelSmartInvert( - label.attribute.fill as IColor, - label.attribute.stroke as IColor, - textType, - contrastRatiosThreshold, - alternativeColors, - mode - ) - }); - continue; - } - /** 当label未设置stroke,且可设置stroke时,正常计算 */ const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor); fill && label.setAttributes({ fill }); From ac0bbeabb1454d8f31644d643aa21c561f0730b1 Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 9 Jan 2024 17:40:55 +0800 Subject: [PATCH 2/3] feat: skip smartInvert when label is not intersects with baseMark --- packages/vrender-components/src/label/base.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/vrender-components/src/label/base.ts b/packages/vrender-components/src/label/base.ts index 46ca51a85..488477b94 100644 --- a/packages/vrender-components/src/label/base.ts +++ b/packages/vrender-components/src/label/base.ts @@ -922,6 +922,13 @@ export class LabelBase extends AbstractComponent { continue; } + const hasIntersect = label.AABBBounds.intersects(baseMark.AABBBounds); + + if (!hasIntersect) { + /** 当 label 与图元完全没有交集的时候,不进行任何反色计算 */ + continue; + } + /** 当label未设置stroke,且可设置stroke时,正常计算 */ const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor); fill && label.setAttributes({ fill }); From 0dcd401868f6d9ce0bbe98a54643a725773f442c Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 9 Jan 2024 18:24:54 +0800 Subject: [PATCH 3/3] feat: optimize logic of stroke smartInvert --- packages/vrender-components/src/label/base.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/vrender-components/src/label/base.ts b/packages/vrender-components/src/label/base.ts index 488477b94..2524dcfbb 100644 --- a/packages/vrender-components/src/label/base.ts +++ b/packages/vrender-components/src/label/base.ts @@ -933,8 +933,18 @@ export class LabelBase extends AbstractComponent { const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor); fill && label.setAttributes({ fill }); - const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor); - stroke && label.setAttributes({ stroke }); + const hasStrokeConfig = isString(label.attribute.stroke); + + if (hasStrokeConfig) { + const accessible = contrastAccessibilityChecker(label.attribute.stroke as IColor, fill); + if (!accessible) { + const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor); + stroke && label.setAttributes({ stroke }); + } + } else { + const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor); + stroke && label.setAttributes({ stroke }); + } } } }