/** * ToolHost — Unified host interface for all tools. * * Replaces the 10 individual *Callbacks interfaces with a single definition. * Each tool picks only the methods it needs via `Pick`. * * @see issue3_unify_callbacks_plan.md */ import type { MaskVolume, MaskDelta } from "../core"; import type { RGBAColor } from "../core"; /** * Unified host interface — all methods that tools may call back into. * * Each tool picks only the methods it needs via `Pick`. */ export interface ToolHost { setEmptyCanvasSize(axis?: "x" | "y" | "z"): void; drawImageOnEmptyImage(canvas: HTMLCanvasElement): void; compositeAllLayers(): void; renderSliceToCanvas(layer: string, axis: "x" | "y" | "z", sliceIndex: number, buffer: ImageData, targetCtx: CanvasRenderingContext2D, scaledWidth: number, scaledHeight: number): void; getOrCreateSliceBuffer(axis: "x" | "y" | "z"): ImageData | null; flipDisplayImageByAxis(): void; redrawDisplayCanvas(): void; refreshSphereOverlay(): void; reloadMasksFromVolume(): void; getVolumeForLayer(layer: string): MaskVolume; setIsDrawFalse(target: number): void; setSyncsliceNum(): void; resetPaintAreaUIPosition(l?: number, t?: number): void; resizePaintArea(moveDistance: number): void; resetZoom(): void; invalidateSliceBuffer(): void; clearUndoHistory(): void; setCurrentLayer(): { ctx: CanvasRenderingContext2D; canvas: HTMLCanvasElement; }; syncLayerSliceData(index: number, layer: string): void; filterDrawedImage(axis: "x" | "y" | "z", index: number): { image: ImageData; } | undefined; pushUndoDelta(delta: MaskDelta): void; pushUndoGroup(deltas: MaskDelta[]): void; enableCrosshair(): void; setUpSphereOrigins(mouseX: number, mouseY: number, sliceIndex: number): void; zoomActionAfterDrawSphere(): void; setDisplaySlicesBaseOnAxis(): void; afterLoadSlice(): void; syncGuiParameterSettings(): void; repraintCurrentContrastSlice(): void; updateShowNumDiv(contrastNum: number): void; updateCurrentContrastSlice(): void; onChannelColorChanged(layerId: string, channel: number, color: RGBAColor): void; } /** ImageStoreHelper host dependencies */ export type ImageStoreHostDeps = Pick; /** PanTool host dependencies */ export type PanHostDeps = Pick; /** ContrastTool host dependencies */ export type ContrastHostDeps = Pick; /** ZoomTool host dependencies */ export type ZoomHostDeps = Pick; /** SphereTool host dependencies */ export type SphereHostDeps = Pick; /** DrawingTool host dependencies */ export type DrawingHostDeps = Pick; /** DragSliceTool host dependencies */ export type DragSliceHostDeps = Pick; /** LayerChannelManager host dependencies */ export type LayerChannelHostDeps = Pick; /** SliceRenderPipeline host dependencies */ export type SliceRenderHostDeps = Pick; /** DataLoader host dependencies */ export type DataLoaderHostDeps = Pick; /** SphereBrushTool host dependencies */ export type SphereBrushHostDeps = Pick;