31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
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';
|
|
import DailyCheckinDraw from './dailyCheckinDraw';
|
|
|
|
/**
|
|
* 字母描红绘制分发层。
|
|
* 根据 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,
|
|
'letter-tracing-daily-checkin': DailyCheckinDraw,
|
|
}[data.mode];
|
|
|
|
const delegate = new DrawClass(this.canvas, this.ctx, this.options);
|
|
await delegate.draw(data as any);
|
|
}
|
|
}
|