From 117da08bb777ae662e73fc117a98554c667ad61c Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 27 Aug 2024 14:03:00 +0800 Subject: [PATCH 1/3] feat: support `inside-center` arc label --- packages/vrender-components/src/label/arc.ts | 17 ++++++----------- packages/vrender-components/src/label/type.ts | 2 +- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/vrender-components/src/label/arc.ts b/packages/vrender-components/src/label/arc.ts index b1e747eed..3fdbabd57 100644 --- a/packages/vrender-components/src/label/arc.ts +++ b/packages/vrender-components/src/label/arc.ts @@ -11,17 +11,9 @@ import { } from '@visactor/vutils'; import { LabelBase } from './base'; import type { ArcLabelAttrs, IPoint, Quadrant, BaseLabelAttrs, LabelItem, IArcLabelLineSpec } from './type'; -import type { ILineGraphicAttribute, IRichTextAttribute } from '@visactor/vrender-core'; +import type { IRichTextAttribute } from '@visactor/vrender-core'; // eslint-disable-next-line no-duplicate-imports -import { - type IRichText, - type IText, - type IArcGraphicAttribute, - type IGraphic, - type ILine, - graphicCreator, - CustomPath2D -} from '@visactor/vrender-core'; +import { type IRichText, type IText, type IArcGraphicAttribute, type IGraphic } from '@visactor/vrender-core'; import { isQuadrantRight, isQuadrantLeft, lineCirclePoints, connectLineRadian, checkBoundsOverlap } from './util'; import type { ComponentOptions } from '../interface'; import { registerLabelComponent } from './data-label-register'; @@ -286,6 +278,7 @@ export class ArcLabel extends LabelBase { case 'inside': case 'inside-inner': case 'inside-outer': + case 'inside-center': arcs.push(...this._layoutInsideLabels(rightArcs, attribute, currentMarks)); arcs.push(...this._layoutInsideLabels(leftArcs, attribute, currentMarks)); break; @@ -339,6 +332,8 @@ export class ArcLabel extends LabelBase { let labelRadius; if (position === 'inside-inner') { labelRadius = innerRadius - offsetRadius + alignOffset; + } else if (position === 'inside-center') { + labelRadius = innerRadius + (outerRadius - innerRadius) / 2; } else { labelRadius = outerRadius + offsetRadius - alignOffset; } @@ -966,7 +961,7 @@ export class ArcLabel extends LabelBase { } protected _canPlaceInside(textBound: IBoundsLike, shapeBound: IAABBBounds) { - return this.attribute.position === 'inside'; + return this.attribute.position === 'inside' || this.attribute.position === 'inside-center'; } private computeLayoutOuterRadius(r: number, width: number, height: number) { diff --git a/packages/vrender-components/src/label/type.ts b/packages/vrender-components/src/label/type.ts index 0e176d9c0..40797fa98 100644 --- a/packages/vrender-components/src/label/type.ts +++ b/packages/vrender-components/src/label/type.ts @@ -357,7 +357,7 @@ export interface ArcLabelAttrs extends BaseLabelAttrs { * 标签位置 * @default 'outside' */ - position?: Functional<'inside' | 'outside' | 'inside-inner' | 'inside-outer'>; + position?: 'inside' | 'outside' | 'inside-inner' | 'inside-outer' | 'inside-center'; // 画布宽度 width?: number; From 907dbf9c24a5edda01baeae1a6b9f9b76b4d7ae5 Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 27 Aug 2024 14:04:29 +0800 Subject: [PATCH 2/3] docs: update change log --- .../feat-arc-inside-center-label_2024-08-27-06-03.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@visactor/vrender-components/feat-arc-inside-center-label_2024-08-27-06-03.json diff --git a/common/changes/@visactor/vrender-components/feat-arc-inside-center-label_2024-08-27-06-03.json b/common/changes/@visactor/vrender-components/feat-arc-inside-center-label_2024-08-27-06-03.json new file mode 100644 index 000000000..c1a32c418 --- /dev/null +++ b/common/changes/@visactor/vrender-components/feat-arc-inside-center-label_2024-08-27-06-03.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@visactor/vrender-components", + "comment": "feat: support position `inside-center` of arc label", + "type": "none" + } + ], + "packageName": "@visactor/vrender-components" +} \ No newline at end of file From 8763f8f45ab7bdd27182083a8f8fc17fb5060997 Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Tue, 27 Aug 2024 14:33:32 +0800 Subject: [PATCH 3/3] docs: add version comment --- packages/vrender-components/src/label/type.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vrender-components/src/label/type.ts b/packages/vrender-components/src/label/type.ts index 40797fa98..0c06d0546 100644 --- a/packages/vrender-components/src/label/type.ts +++ b/packages/vrender-components/src/label/type.ts @@ -356,6 +356,7 @@ export interface ArcLabelAttrs extends BaseLabelAttrs { /** * 标签位置 * @default 'outside' + * @since 0.20.1 support 'inside-center' */ position?: 'inside' | 'outside' | 'inside-inner' | 'inside-outer' | 'inside-center';