25 lines
932 B
TypeScript
25 lines
932 B
TypeScript
import { BaseDrawService } from '../../../core/draw/baseDraw';
|
|
import type { LetterTracingData } from '../generators/letter-tracing-generator';
|
|
import PictureTracingDraw from './pictureTracingDraw';
|
|
import CasePairingDraw from './casePairingDraw';
|
|
import ColumnCompareDraw from './columnCompareDraw';
|
|
import OverviewDraw from './overviewDraw';
|
|
|
|
/**
|
|
* 字母描红绘制分发层。
|
|
* 根据 data.mode 委托给对应的独立 DrawService 完成实际绘制。
|
|
*/
|
|
export default class LetterTracingDraw extends BaseDrawService {
|
|
async draw(data: LetterTracingData) {
|
|
const DrawClass = {
|
|
'picture-tracing': PictureTracingDraw,
|
|
'case-pairing': CasePairingDraw,
|
|
'column-compare': ColumnCompareDraw,
|
|
overview: OverviewDraw,
|
|
}[data.mode];
|
|
|
|
const delegate = new DrawClass(this.canvas, this.ctx, this.options);
|
|
await delegate.draw(data as any);
|
|
}
|
|
}
|