import { BaseDrawService } from '../../../core/draw/baseDraw'; import type { LetterTracingData } from '../generators/letter-tracing-generator'; import singleLetterDraw from './singleLetterDraw'; import CasePairingDraw from './casePairingDraw'; import TwoColumnDraw from './twoColumnDraw'; import UpperLowerDraw from './upperLowerDraw'; import SingleLineDraw from './singleLineDraw'; import TripleDraw from './tripleDraw'; /** * 字母描红绘制分发层。 * 根据 data.mode 委托给对应的独立 DrawService 完成实际绘制。 */ export default class LetterTracingDraw extends BaseDrawService { async draw(data: LetterTracingData) { const DrawClass = { 'letter-tracing-single': singleLetterDraw, 'letter-tracing-upper-lower': UpperLowerDraw, 'letter-tracing-case-pairing': CasePairingDraw, 'letter-tracing-two-column': TwoColumnDraw, 'letter-tracing-half': SingleLineDraw, 'letter-tracing-three': TripleDraw, }[data.mode]; const delegate = new DrawClass(this.canvas, this.ctx, this.options); await delegate.draw(data as any); } }