From 788f96aa89766cecf0e835fd0ffe64140bb94e87 Mon Sep 17 00:00:00 2001 From: Herbert He <30955264+HerbertHe@users.noreply.github.com> Date: Thu, 14 Mar 2024 13:13:44 +0800 Subject: [PATCH] refactor: date element renderer #460 --- src/editor/core/draw/Draw.ts | 12 ++++++++++-- .../core/draw/particle/date/DateParticle.ts | 16 ---------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/editor/core/draw/Draw.ts b/src/editor/core/draw/Draw.ts index b29afa6..9680476 100644 --- a/src/editor/core/draw/Draw.ts +++ b/src/editor/core/draw/Draw.ts @@ -1640,8 +1640,16 @@ export class Draw { this._drawRichText(ctx) this.hyperlinkParticle.render(ctx, element, x, y + offsetY) } else if (element.type === ElementType.DATE) { - this._drawRichText(ctx) - this.dateParticle.render(ctx, element, x, y + offsetY) + const nextElement = curRow.elementList[j + 1] + // 释放之前的 + if (!preElement || preElement.dateId !== element.dateId) { + this._drawRichText(ctx) + } + this.textParticle.record(ctx, element, x, y + offsetY) + if (!nextElement || nextElement.dateId !== element.dateId) { + // 手动触发渲染 + this._drawRichText(ctx) + } } else if (element.type === ElementType.SUPERSCRIPT) { this._drawRichText(ctx) this.superscriptParticle.render(ctx, element, x, y + offsetY) diff --git a/src/editor/core/draw/particle/date/DateParticle.ts b/src/editor/core/draw/particle/date/DateParticle.ts index 088e6b6..413e800 100644 --- a/src/editor/core/draw/particle/date/DateParticle.ts +++ b/src/editor/core/draw/particle/date/DateParticle.ts @@ -1,6 +1,5 @@ import { ElementType } from '../../../../dataset/enum/Element' import { IElement, IElementPosition } from '../../../../interface/Element' -import { IRowElement } from '../../../../interface/Row' import { formatElementContext } from '../../../../utils/element' import { RangeManager } from '../../../range/RangeManager' import { Draw } from '../../Draw' @@ -130,19 +129,4 @@ export class DateParticle { startTop }) } - - public render( - ctx: CanvasRenderingContext2D, - element: IRowElement, - x: number, - y: number - ) { - ctx.save() - ctx.font = element.style - if (element.color) { - ctx.fillStyle = element.color - } - ctx.fillText(element.value, x, y) - ctx.restore() - } }