From 6be02aac93513d3b88d72630cb4ff105f1255311 Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Mon, 7 Aug 2023 18:47:41 +0800 Subject: [PATCH] fix(components): overlap bitmap test will intercept invalid range metioned in #265 --- .../fix-issue-265_2023-08-07-10-37.json | 10 ++++++++++ .../vrender-components/src/label/overlap/bitmap.ts | 8 +++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 common/changes/@visactor/vrender-components/fix-issue-265_2023-08-07-10-37.json diff --git a/common/changes/@visactor/vrender-components/fix-issue-265_2023-08-07-10-37.json b/common/changes/@visactor/vrender-components/fix-issue-265_2023-08-07-10-37.json new file mode 100644 index 000000000..a10d6997f --- /dev/null +++ b/common/changes/@visactor/vrender-components/fix-issue-265_2023-08-07-10-37.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@visactor/vrender-components", + "comment": "fix(components): overlap bitmap test will intercept invalid range, fix #265", + "type": "patch" + } + ], + "packageName": "@visactor/vrender-components" +} \ No newline at end of file diff --git a/packages/vrender-components/src/label/overlap/bitmap.ts b/packages/vrender-components/src/label/overlap/bitmap.ts index 42ef29e1e..299591331 100644 --- a/packages/vrender-components/src/label/overlap/bitmap.ts +++ b/packages/vrender-components/src/label/overlap/bitmap.ts @@ -1,4 +1,4 @@ -import { IBoundsLike } from '@visactor/vutils'; +import type { IBoundsLike } from '@visactor/vutils'; /** * 防重叠逻辑参考 https://github.com/vega/vega/ @@ -78,6 +78,9 @@ export function bitmap(w: number, h: number) { * @returns boolean */ getRange: ({ x1, y1, x2, y2 }: IBoundsLike) => { + if (x2 < 0 || y2 < 0 || x1 > w || y1 > h) { + return true; + } let r = y2; let start; let end; @@ -110,6 +113,9 @@ export function bitmap(w: number, h: number) { }, setRange: ({ x1, y1, x2, y2 }: IBoundsLike) => { + if (x2 < 0 || y2 < 0 || x1 > w || y1 > h) { + return; + } let start; let end; let indexStart;