import { Group, Scene } from "spritejs"; import { IActiveToolsDataType, IActiveWorkDataType, IBatchMainMessage, ICameraOpt, ILayerOptionType, IOffscreenCanvasOptionType, IRectType, IWorkerMessage } from "../types"; import { VNodeManager } from "../vNodeManager"; import { type ECanvasContextType, ECanvasShowType, EDataType, EventWorkState } from "../enum"; import { BaseShapeOptions, BaseShapeTool } from "../tools/base"; import { ServiceWorkForFullWorker } from "./fullWorkerService"; import { LocalWorkForFullWorker } from "./fullWorkerLocal"; import { LocalWorkForSubWorker } from "./subWorkerLocal"; import { EWorkThreadType, type WorkThreadEngineForFullWorker, type WorkThreadEngineForSubWorker, type WorkThreadEngineForSimpleWorker } from "./workerManager"; import { EmitEventType } from "../../plugin/types"; export interface IWorkerInitOption { dpr: number; offscreenCanvasOpt: IOffscreenCanvasOptionType; layerOpt: ILayerOptionType; combineUnitTime?: number; syncUnitTime?: number; maxCombineEraserTime?: number; isUseSimple?: boolean; } export interface ISimpleWorkerInitOption extends IWorkerInitOption { offscreenCanvas?: { localCanvas: OffscreenCanvas; bgCanvas: OffscreenCanvas; serviceCanvas: OffscreenCanvas; }; } export interface ISubWorkerInitOption { thread: WorkThreadEngineForFullWorker | WorkThreadEngineForSubWorker | WorkThreadEngineForSimpleWorker; viewId: string; vNodes: VNodeManager; fullLayer: Group; topLayer?: Group; drawLayer?: Group; } export declare abstract class WorkThreadEngineBase { readonly viewId: string; readonly type: EWorkThreadType; scene: Scene; fullLayer: Group; readonly vNodes: VNodeManager; dpr: number; readonly contextType?: ECanvasContextType; protected opt: IWorkerInitOption; protected cameraOpt?: ICameraOpt; abstract localWork: LocalWorkForFullWorker | LocalWorkForSubWorker; abstract serviceWork?: ServiceWorkForFullWorker; protected isSafari: boolean; protected abstract _post: (msg: IBatchMainMessage) => void; combinePostMsg: Set; protected workerTaskId?: number | undefined; protected protectedTask?: { isProtected: boolean; workName: EmitEventType; workState: EventWorkState; }; protected delayPostDoneResolve?: (bol: boolean) => void; protected cacheImages: Map; protected imageResolveMap: Map void; }>; protected taskUpdateCameraId?: number; protected debounceUpdateCameraId?: number; constructor(viewId: string, opt: IWorkerInitOption, workerType: EWorkThreadType); protected createRenderLayer(scene: Scene, opt: IWorkerInitOption): void; updateDpr(dpr: number): Promise; getCachedImages(imageSrc: string): ImageBitmap | undefined; getCachedImagesByWorkId(workId: string): ImageBitmap | undefined; deleteCachedImagesByWorkId(workId: string, filter?: string): void; clearCacheImages(): void; clearImageResolveMap(): void; setIsSafari(isSafari: boolean): void; on(msg: IWorkerMessage): Promise; private getIconSize; loadImageBitMap(msg: Pick): Promise; protected createLocalWork(data: IWorkerMessage): void; protected updateScene(scene: Scene, offscreenCanvasOpt: IOffscreenCanvasOptionType, targetLayer?: Group): void; protected updateLayer(layerOpt: ILayerOptionType, targetLayer?: Group): void; private getSupportContextType; protected createScene(opt: IWorkerInitOption): Scene; protected createLayer(name: string, scene: Scene, opt: ILayerOptionType, offscreenCanvas?: OffscreenCanvas): Group; protected clearAll(): Promise; protected setToolsOpt(opt: IActiveToolsDataType): void; protected setWorkOpt(opt: Partial): void; protected destroy(): void; post(msg: IBatchMainMessage): Promise; private runBatchPostData; protected combinePostData(): IBatchMainMessage; getSceneRect(): IRectType; abstract combinePost(): Promise; protected abstract getLayer(workLayer: ECanvasShowType): Group | undefined; abstract setCameraOpt(cameraOpt: ICameraOpt): void; abstract consumeDraw(type: EDataType, data: IWorkerMessage): Promise; abstract consumeDrawAll(type: EDataType, data: IWorkerMessage): Promise; abstract updateCamera(msg: IWorkerMessage): Promise; } export declare abstract class LocalWork { readonly viewId: string; readonly vNodes?: VNodeManager; readonly thread: WorkThreadEngineForFullWorker | WorkThreadEngineForSubWorker; fullLayer: Group; drawLayer?: Group; readonly _post: (msg: IBatchMainMessage) => Promise; protected tmpOpt?: IActiveToolsDataType; workShapes: Map; protected drawCount: number; protected consumeCount: number; protected syncUnitTime: number; protected combineUnitTime: number; protected maxCombineEraserTime: number; setmaxCombineEraserTime(maxCombineEraserTime: number): void; setCombineUnitTime(combineUnitTime: number): void; setSyncUnitTime(syncUnitTime: number): void; constructor(opt: ISubWorkerInitOption); destroy(): void; getWorkShapes(): Map; getWorkShape(workId: string): BaseShapeTool | undefined; createWorkShape(workId: string, opt?: BaseShapeOptions): void; setWorkOptions(workId: string, opt: BaseShapeOptions): void; createWorkShapeNode(opt: IActiveToolsDataType & { workId: string; }): import("../tools").ArrowShape | import("../tools").PencilShape | import("../tools/straight").StraightShape | import("../tools").EllipseShape | import("../tools").PolygonShape | import("../tools").StarShape | import("../tools").RectangleShape | import("../tools").SpeechBalloonShape | import("../tools/text").TextShape | import("../tools").LaserPenShape | import("../tools").EraserShape | import("../tools/pencilEraser").PencilEraserShape | import("../tools").BitMapEraserShape | import("../tools").SelectorShape | import("../tools").ImageShape | import("../tools/shadowSvg").ISvgShadowShape | undefined; setToolsOpt(opt: IActiveToolsDataType): void; getToolsOpt(): IActiveToolsDataType | undefined; clearWorkShapeNodeCache(workId: string): void; clearAllWorkShapesCache(): void; setFullWork(data: Pick): BaseShapeTool | undefined; }