copper3d 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +197 -875
- package/dist/Utils/segmentation/CanvasState.d.ts +31 -0
- package/dist/Utils/segmentation/CanvasState.js +167 -0
- package/dist/Utils/segmentation/CanvasState.js.map +1 -0
- package/dist/Utils/segmentation/DragOperator.d.ts +10 -2
- package/dist/Utils/segmentation/DragOperator.js +16 -8
- package/dist/Utils/segmentation/DragOperator.js.map +1 -1
- package/dist/Utils/segmentation/DrawToolCore.d.ts +64 -35
- package/dist/Utils/segmentation/DrawToolCore.js +332 -584
- package/dist/Utils/segmentation/DrawToolCore.js.map +1 -1
- package/dist/Utils/segmentation/NrrdTools.d.ts +117 -353
- package/dist/Utils/segmentation/NrrdTools.js +622 -1081
- package/dist/Utils/segmentation/NrrdTools.js.map +1 -1
- package/dist/Utils/segmentation/RenderingUtils.d.ts +73 -0
- package/dist/Utils/segmentation/RenderingUtils.js +180 -0
- package/dist/Utils/segmentation/RenderingUtils.js.map +1 -0
- package/dist/Utils/segmentation/core/MaskVolume.js +23 -2
- package/dist/Utils/segmentation/core/MaskVolume.js.map +1 -1
- package/dist/Utils/segmentation/core/UndoManager.d.ts +1 -1
- package/dist/Utils/segmentation/core/UndoManager.js +1 -1
- package/dist/Utils/segmentation/core/index.d.ts +1 -3
- package/dist/Utils/segmentation/core/index.js +0 -1
- package/dist/Utils/segmentation/core/index.js.map +1 -1
- package/dist/Utils/segmentation/core/types.d.ts +384 -0
- package/dist/Utils/segmentation/core/types.js +25 -24
- package/dist/Utils/segmentation/core/types.js.map +1 -1
- package/dist/Utils/segmentation/coreTools/GuiState.d.ts +22 -0
- package/dist/Utils/segmentation/coreTools/GuiState.js +48 -0
- package/dist/Utils/segmentation/coreTools/GuiState.js.map +1 -0
- package/dist/Utils/segmentation/coreTools/NrrdState.d.ts +25 -0
- package/dist/Utils/segmentation/coreTools/NrrdState.js +85 -0
- package/dist/Utils/segmentation/coreTools/NrrdState.js.map +1 -0
- package/dist/Utils/segmentation/coreTools/divControlTools.d.ts +1 -1
- package/dist/Utils/segmentation/coreTools/divControlTools.js +1 -1
- package/dist/Utils/segmentation/coreTools/divControlTools.js.map +1 -1
- package/dist/Utils/segmentation/coreTools/gui.d.ts +12 -12
- package/dist/Utils/segmentation/coreTools/gui.js +81 -107
- package/dist/Utils/segmentation/coreTools/gui.js.map +1 -1
- package/dist/Utils/segmentation/eventRouter/EventRouter.d.ts +2 -1
- package/dist/Utils/segmentation/eventRouter/EventRouter.js +15 -10
- package/dist/Utils/segmentation/eventRouter/EventRouter.js.map +1 -1
- package/dist/Utils/segmentation/eventRouter/types.d.ts +3 -3
- package/dist/Utils/segmentation/tools/BaseTool.d.ts +8 -5
- package/dist/Utils/segmentation/tools/BaseTool.js +1 -2
- package/dist/Utils/segmentation/tools/BaseTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/ContrastTool.d.ts +3 -6
- package/dist/Utils/segmentation/tools/ContrastTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/CrosshairTool.d.ts +11 -1
- package/dist/Utils/segmentation/tools/CrosshairTool.js +50 -25
- package/dist/Utils/segmentation/tools/CrosshairTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/DataLoader.d.ts +33 -0
- package/dist/Utils/segmentation/tools/DataLoader.js +159 -0
- package/dist/Utils/segmentation/tools/DataLoader.js.map +1 -0
- package/dist/Utils/segmentation/tools/DragSliceTool.d.ts +3 -10
- package/dist/Utils/segmentation/tools/DragSliceTool.js +63 -53
- package/dist/Utils/segmentation/tools/DragSliceTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/DrawingTool.d.ts +85 -0
- package/dist/Utils/segmentation/tools/DrawingTool.js +270 -0
- package/dist/Utils/segmentation/tools/DrawingTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/EraserTool.js +8 -8
- package/dist/Utils/segmentation/tools/EraserTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/ImageStoreHelper.d.ts +13 -33
- package/dist/Utils/segmentation/tools/ImageStoreHelper.js +39 -82
- package/dist/Utils/segmentation/tools/ImageStoreHelper.js.map +1 -1
- package/dist/Utils/segmentation/tools/LayerChannelManager.d.ts +52 -0
- package/dist/Utils/segmentation/tools/LayerChannelManager.js +175 -0
- package/dist/Utils/segmentation/tools/LayerChannelManager.js.map +1 -0
- package/dist/Utils/segmentation/tools/PanTool.d.ts +47 -0
- package/dist/Utils/segmentation/tools/PanTool.js +90 -0
- package/dist/Utils/segmentation/tools/PanTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/SliceRenderPipeline.d.ts +80 -0
- package/dist/Utils/segmentation/tools/SliceRenderPipeline.js +355 -0
- package/dist/Utils/segmentation/tools/SliceRenderPipeline.js.map +1 -0
- package/dist/Utils/segmentation/tools/SphereTool.d.ts +223 -10
- package/dist/Utils/segmentation/tools/SphereTool.js +512 -47
- package/dist/Utils/segmentation/tools/SphereTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/ToolHost.d.ts +74 -0
- package/dist/Utils/segmentation/tools/ToolHost.js +10 -0
- package/dist/Utils/segmentation/tools/ToolHost.js.map +1 -0
- package/dist/Utils/segmentation/tools/ZoomTool.d.ts +2 -6
- package/dist/Utils/segmentation/tools/ZoomTool.js +3 -3
- package/dist/Utils/segmentation/tools/ZoomTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/index.d.ts +8 -6
- package/dist/Utils/segmentation/tools/index.js +10 -1
- package/dist/Utils/segmentation/tools/index.js.map +1 -1
- package/dist/Utils/workers/reformatSaveDataWorker.d.ts +1 -1
- package/dist/bundle.esm.js +3729 -3017
- package/dist/bundle.umd.js +3729 -3017
- package/dist/index.d.ts +6 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/Utils/segmentation/CanvasState.d.ts +31 -0
- package/dist/types/Utils/segmentation/DragOperator.d.ts +10 -2
- package/dist/types/Utils/segmentation/DrawToolCore.d.ts +64 -35
- package/dist/types/Utils/segmentation/NrrdTools.d.ts +117 -353
- package/dist/types/Utils/segmentation/RenderingUtils.d.ts +73 -0
- package/dist/types/Utils/segmentation/core/UndoManager.d.ts +1 -1
- package/dist/types/Utils/segmentation/core/index.d.ts +1 -3
- package/dist/types/Utils/segmentation/core/types.d.ts +384 -0
- package/dist/types/Utils/segmentation/coreTools/GuiState.d.ts +22 -0
- package/dist/types/Utils/segmentation/coreTools/NrrdState.d.ts +25 -0
- package/dist/types/Utils/segmentation/coreTools/divControlTools.d.ts +1 -1
- package/dist/types/Utils/segmentation/coreTools/gui.d.ts +12 -12
- package/dist/types/Utils/segmentation/eventRouter/EventRouter.d.ts +2 -1
- package/dist/types/Utils/segmentation/eventRouter/types.d.ts +3 -3
- package/dist/types/Utils/segmentation/tools/BaseTool.d.ts +8 -5
- package/dist/types/Utils/segmentation/tools/ContrastTool.d.ts +3 -6
- package/dist/types/Utils/segmentation/tools/CrosshairTool.d.ts +11 -1
- package/dist/types/Utils/segmentation/tools/DataLoader.d.ts +33 -0
- package/dist/types/Utils/segmentation/tools/DragSliceTool.d.ts +3 -10
- package/dist/types/Utils/segmentation/tools/DrawingTool.d.ts +85 -0
- package/dist/types/Utils/segmentation/tools/ImageStoreHelper.d.ts +13 -33
- package/dist/types/Utils/segmentation/tools/LayerChannelManager.d.ts +52 -0
- package/dist/types/Utils/segmentation/tools/PanTool.d.ts +47 -0
- package/dist/types/Utils/segmentation/tools/SliceRenderPipeline.d.ts +80 -0
- package/dist/types/Utils/segmentation/tools/SphereTool.d.ts +223 -10
- package/dist/types/Utils/segmentation/tools/ToolHost.d.ts +74 -0
- package/dist/types/Utils/segmentation/tools/ZoomTool.d.ts +2 -6
- package/dist/types/Utils/segmentation/tools/index.d.ts +8 -6
- package/dist/types/Utils/workers/reformatSaveDataWorker.d.ts +1 -1
- package/dist/types/index.d.ts +6 -3
- package/package.json +1 -1
- package/dist/Utils/segmentation/CommToolsData.d.ts +0 -177
- package/dist/Utils/segmentation/CommToolsData.js +0 -548
- package/dist/Utils/segmentation/CommToolsData.js.map +0 -1
- package/dist/Utils/segmentation/core/MigrationUtils.d.ts +0 -97
- package/dist/Utils/segmentation/core/MigrationUtils.js +0 -163
- package/dist/Utils/segmentation/core/MigrationUtils.js.map +0 -1
- package/dist/Utils/segmentation/coreTools/coreType.d.ts +0 -363
- package/dist/Utils/segmentation/coreTools/coreType.js +0 -3
- package/dist/Utils/segmentation/coreTools/coreType.js.map +0 -1
- package/dist/types/Utils/segmentation/CommToolsData.d.ts +0 -177
- package/dist/types/Utils/segmentation/core/MigrationUtils.d.ts +0 -97
- package/dist/types/Utils/segmentation/coreTools/coreType.d.ts +0 -363
|
@@ -66,7 +66,7 @@ export class UndoManager {
|
|
|
66
66
|
var _a, _b;
|
|
67
67
|
return ((_b = (_a = this.redoStacks.get(this.activeLayer)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0;
|
|
68
68
|
}
|
|
69
|
-
/** Clear undo and redo stacks for a specific layer (called on
|
|
69
|
+
/** Clear undo and redo stacks for a specific layer (called on clearActiveLayer). */
|
|
70
70
|
clearLayer(layer) {
|
|
71
71
|
const undo = this.undoStacks.get(layer);
|
|
72
72
|
const redo = this.redoStacks.get(layer);
|
|
@@ -67,10 +67,8 @@
|
|
|
67
67
|
* const legacy = convertVolumeToIPaintImages(volume);
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
|
-
export type { Dimensions, RGBAColor, ChannelColorMap, SliceRenderOptions, LayerId, ChannelValue, } from './types';
|
|
70
|
+
export type { Dimensions, RGBAColor, ChannelColorMap, SliceRenderOptions, LayerId, ChannelValue, ICommXYZ, ICommXY, ISkipSlicesDictType, ToolMode, IDragPrameters, IDrawingEvents, IContrastEvents, IPaintImages, IPaintImage, ILayerRenderTarget, IDownloadImageConfig, INewMaskData, IMaskData, IProtected, IToolModeState, IDrawingConfig, IViewConfig, ILayerChannelState, IGUIStates, IGuiMeta, IGuiParameterSettings, IImageMetadata, IViewState, IInteractionState, ISphereState, IInternalFlags, INrrdStates, IAnnotationCallbacks, IConvertObjType, ICursorPage, IDragOpts, IDrawOpts, IKeyBoardSettings, } from './types';
|
|
71
71
|
export { RenderMode, MASK_CHANNEL_COLORS, MASK_CHANNEL_CSS_COLORS, CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss, } from './types';
|
|
72
72
|
export { MaskVolume } from './MaskVolume';
|
|
73
|
-
export type { IPaintImage, IPaintImages } from './MigrationUtils';
|
|
74
|
-
export { convertIPaintImagesToVolume, convertVolumeToIPaintImages, } from './MigrationUtils';
|
|
75
73
|
export type { MaskDelta } from './UndoManager';
|
|
76
74
|
export { UndoManager } from './UndoManager';
|
|
@@ -70,6 +70,5 @@
|
|
|
70
70
|
export { RenderMode, MASK_CHANNEL_COLORS, MASK_CHANNEL_CSS_COLORS, CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss, } from './types';
|
|
71
71
|
// ── Core volume ────────────────────────────────────────────────────────────
|
|
72
72
|
export { MaskVolume } from './MaskVolume';
|
|
73
|
-
export { convertIPaintImagesToVolume, convertVolumeToIPaintImages, } from './MigrationUtils';
|
|
74
73
|
export { UndoManager } from './UndoManager';
|
|
75
74
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AA8CH,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -104,3 +104,387 @@ export declare function rgbaToHex(color: RGBAColor): string;
|
|
|
104
104
|
* Convert an RGBAColor to a CSS rgba() string, e.g. 'rgba(255,0,0,1.00)'.
|
|
105
105
|
*/
|
|
106
106
|
export declare function rgbaToCss(color: RGBAColor): string;
|
|
107
|
+
import type { MaskVolume } from './MaskVolume';
|
|
108
|
+
export interface ICommXYZ {
|
|
109
|
+
x: any;
|
|
110
|
+
y: any;
|
|
111
|
+
z: any;
|
|
112
|
+
}
|
|
113
|
+
export interface ICommXY {
|
|
114
|
+
x: any;
|
|
115
|
+
y: any;
|
|
116
|
+
}
|
|
117
|
+
export interface ISkipSlicesDictType {
|
|
118
|
+
[key: string]: any;
|
|
119
|
+
}
|
|
120
|
+
/** Tool mode types for segmentation tools */
|
|
121
|
+
export type ToolMode = "pencil" | "brush" | "eraser" | "sphere" | "calculator";
|
|
122
|
+
export interface IDragPrameters {
|
|
123
|
+
move: number;
|
|
124
|
+
y: number;
|
|
125
|
+
h: number;
|
|
126
|
+
sensivity: number;
|
|
127
|
+
handleOnDragMouseUp: (ev: MouseEvent) => void;
|
|
128
|
+
handleOnDragMouseDown: (ev: MouseEvent) => void;
|
|
129
|
+
handleOnDragMouseMove: (ev: MouseEvent) => void;
|
|
130
|
+
}
|
|
131
|
+
export interface IDrawingEvents {
|
|
132
|
+
handleOnDrawingMouseDown: (ev: MouseEvent) => void;
|
|
133
|
+
handleOnDrawingMouseMove: (ev: MouseEvent) => void;
|
|
134
|
+
handleOnPanMouseMove: (ev: MouseEvent) => void;
|
|
135
|
+
handleOnDrawingMouseUp: (ev: MouseEvent) => void;
|
|
136
|
+
handleOnDrawingMouseLeave: (ev: MouseEvent) => void;
|
|
137
|
+
handleOnDrawingBrushCricleMove: (ev: MouseEvent) => void;
|
|
138
|
+
handleMouseZoomSliceWheel: (e: WheelEvent) => void;
|
|
139
|
+
handleSphereWheel: (e: WheelEvent) => void;
|
|
140
|
+
}
|
|
141
|
+
export interface IContrastEvents {
|
|
142
|
+
move_x: number;
|
|
143
|
+
move_y: number;
|
|
144
|
+
x: number;
|
|
145
|
+
y: number;
|
|
146
|
+
w: number;
|
|
147
|
+
h: number;
|
|
148
|
+
handleOnContrastMouseDown: (ev: MouseEvent) => void;
|
|
149
|
+
handleOnContrastMouseMove: (ev: MouseEvent) => void;
|
|
150
|
+
handleOnContrastMouseUp: (ev: MouseEvent) => void;
|
|
151
|
+
handleOnContrastMouseLeave: (ev: MouseEvent) => void;
|
|
152
|
+
}
|
|
153
|
+
export interface IPaintImages {
|
|
154
|
+
x: Array<IPaintImage>;
|
|
155
|
+
y: Array<IPaintImage>;
|
|
156
|
+
z: Array<IPaintImage>;
|
|
157
|
+
}
|
|
158
|
+
export interface IPaintImage {
|
|
159
|
+
index: number;
|
|
160
|
+
image: ImageData;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* A paired canvas + 2D context for a single annotation layer.
|
|
164
|
+
* Stored atomically in IProtected.layerTargets to prevent canvas/ctx desync.
|
|
165
|
+
*/
|
|
166
|
+
export interface ILayerRenderTarget {
|
|
167
|
+
canvas: HTMLCanvasElement;
|
|
168
|
+
ctx: CanvasRenderingContext2D;
|
|
169
|
+
}
|
|
170
|
+
export interface IDownloadImageConfig {
|
|
171
|
+
axis: "x" | "y" | "z";
|
|
172
|
+
currentSliceIndex: number;
|
|
173
|
+
drawingCanvas: HTMLCanvasElement;
|
|
174
|
+
originWidth: number;
|
|
175
|
+
originHeight: number;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* New mask data structure using MaskVolume for true 3D storage.
|
|
179
|
+
* Dynamic N-layer support: keyed by layer id (e.g. 'layer1', 'layer2', ...).
|
|
180
|
+
*/
|
|
181
|
+
export type INewMaskData = Record<string, MaskVolume>;
|
|
182
|
+
/**
|
|
183
|
+
* Mask data storage using volumetric MaskVolume (Phase 3)
|
|
184
|
+
*
|
|
185
|
+
* Phase 2 legacy ImageData storage has been removed.
|
|
186
|
+
* All mask data now stored in 3D volumes for memory efficiency.
|
|
187
|
+
*/
|
|
188
|
+
export type IMaskData = {
|
|
189
|
+
volumes: INewMaskData;
|
|
190
|
+
};
|
|
191
|
+
export interface IProtected {
|
|
192
|
+
container: HTMLElement;
|
|
193
|
+
mainAreaContainer: HTMLElement;
|
|
194
|
+
allSlicesArray: Array<ICommXYZ>;
|
|
195
|
+
displaySlices: Array<any>;
|
|
196
|
+
backUpDisplaySlices: Array<any>;
|
|
197
|
+
skipSlicesDic: ISkipSlicesDictType;
|
|
198
|
+
currentShowingSlice: any;
|
|
199
|
+
mainPreSlices: any;
|
|
200
|
+
isDrawing: boolean;
|
|
201
|
+
axis: "x" | "y" | "z";
|
|
202
|
+
maskData: IMaskData;
|
|
203
|
+
/** Dynamic per-layer canvas+ctx pairs. Replaces hardcoded LayerOne/Two/Three fields. */
|
|
204
|
+
layerTargets: Map<string, ILayerRenderTarget>;
|
|
205
|
+
canvases: {
|
|
206
|
+
originCanvas: HTMLCanvasElement | any;
|
|
207
|
+
drawingCanvas: HTMLCanvasElement;
|
|
208
|
+
displayCanvas: HTMLCanvasElement;
|
|
209
|
+
drawingCanvasLayerMaster: HTMLCanvasElement;
|
|
210
|
+
drawingSphereCanvas: HTMLCanvasElement;
|
|
211
|
+
emptyCanvas: HTMLCanvasElement;
|
|
212
|
+
};
|
|
213
|
+
ctxes: {
|
|
214
|
+
displayCtx: CanvasRenderingContext2D;
|
|
215
|
+
drawingCtx: CanvasRenderingContext2D;
|
|
216
|
+
emptyCtx: CanvasRenderingContext2D;
|
|
217
|
+
drawingSphereCtx: CanvasRenderingContext2D;
|
|
218
|
+
drawingLayerMasterCtx: CanvasRenderingContext2D;
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/** Tool mode flags — which tool is currently active */
|
|
222
|
+
export interface IToolModeState {
|
|
223
|
+
pencil: boolean;
|
|
224
|
+
eraser: boolean;
|
|
225
|
+
sphere: boolean;
|
|
226
|
+
activeSphereType: "tumour" | "skin" | "nipple" | "ribcage";
|
|
227
|
+
}
|
|
228
|
+
/** Drawing configuration — brush/pencil appearance and behavior */
|
|
229
|
+
export interface IDrawingConfig {
|
|
230
|
+
globalAlpha: number;
|
|
231
|
+
lineWidth: number;
|
|
232
|
+
color: string;
|
|
233
|
+
fillColor: string;
|
|
234
|
+
brushColor: string;
|
|
235
|
+
brushAndEraserSize: number;
|
|
236
|
+
}
|
|
237
|
+
/** View configuration — UI layout and interaction parameters */
|
|
238
|
+
export interface IViewConfig {
|
|
239
|
+
mainAreaSize: number;
|
|
240
|
+
dragSensitivity: number;
|
|
241
|
+
cursor: string;
|
|
242
|
+
defaultPaintCursor: string;
|
|
243
|
+
max_sensitive: number;
|
|
244
|
+
readyToUpdate: boolean;
|
|
245
|
+
}
|
|
246
|
+
/** Layer/channel state — active layer, channel, and visibility */
|
|
247
|
+
export interface ILayerChannelState {
|
|
248
|
+
layer: string;
|
|
249
|
+
/** Currently active channel (1-8). Channel 0 is transparent/erased. */
|
|
250
|
+
activeChannel: number;
|
|
251
|
+
/** Layer visibility state: { layer1: true, layer2: true, layer3: true } */
|
|
252
|
+
layerVisibility: Record<string, boolean>;
|
|
253
|
+
/** Per-layer channel visibility: { layer1: { 1: true, ..., 8: true }, ... } */
|
|
254
|
+
channelVisibility: Record<string, Record<number, boolean>>;
|
|
255
|
+
}
|
|
256
|
+
export interface IGUIStates extends IToolModeState, IDrawingConfig, IViewConfig, ILayerChannelState {
|
|
257
|
+
}
|
|
258
|
+
/** Metadata for a GUI slider/control — used by Vue components to configure slider UI */
|
|
259
|
+
export interface IGuiMeta {
|
|
260
|
+
min: number;
|
|
261
|
+
max: number;
|
|
262
|
+
step: number;
|
|
263
|
+
value: number;
|
|
264
|
+
}
|
|
265
|
+
export interface IGuiParameterSettings {
|
|
266
|
+
globalAlpha: {
|
|
267
|
+
name: "Opacity";
|
|
268
|
+
min: number;
|
|
269
|
+
max: number;
|
|
270
|
+
step: number;
|
|
271
|
+
};
|
|
272
|
+
pencil: {
|
|
273
|
+
name: "Pencil";
|
|
274
|
+
onChange: () => void;
|
|
275
|
+
};
|
|
276
|
+
sphere: {
|
|
277
|
+
name: "Sphere";
|
|
278
|
+
onChange: () => void;
|
|
279
|
+
};
|
|
280
|
+
brushAndEraserSize: {
|
|
281
|
+
name: "BrushAndEraserSize";
|
|
282
|
+
min: number;
|
|
283
|
+
max: number;
|
|
284
|
+
step: number;
|
|
285
|
+
onChange: () => void;
|
|
286
|
+
};
|
|
287
|
+
eraser: {
|
|
288
|
+
name: "Eraser";
|
|
289
|
+
onChange: () => void;
|
|
290
|
+
};
|
|
291
|
+
activeSphereType: {
|
|
292
|
+
name: "CalculatorDistance";
|
|
293
|
+
onChange: (val: "tumour" | "skin" | "ribcage" | "nipple") => void;
|
|
294
|
+
};
|
|
295
|
+
clear: {
|
|
296
|
+
name: "Clear";
|
|
297
|
+
};
|
|
298
|
+
clearAll: {
|
|
299
|
+
name: "ClearAll";
|
|
300
|
+
};
|
|
301
|
+
undo: {
|
|
302
|
+
name: "Undo";
|
|
303
|
+
};
|
|
304
|
+
redo: {
|
|
305
|
+
name: "Redo";
|
|
306
|
+
};
|
|
307
|
+
resetZoom: {
|
|
308
|
+
name: "ResetZoom";
|
|
309
|
+
};
|
|
310
|
+
windowHigh: {
|
|
311
|
+
name: "ImageContrast";
|
|
312
|
+
value: null;
|
|
313
|
+
min: number;
|
|
314
|
+
max: number;
|
|
315
|
+
step: number;
|
|
316
|
+
onChange: (value: number) => void;
|
|
317
|
+
onFinished: () => void;
|
|
318
|
+
};
|
|
319
|
+
windowLow: {
|
|
320
|
+
name: "WindowLow";
|
|
321
|
+
value: null;
|
|
322
|
+
min: number;
|
|
323
|
+
max: number;
|
|
324
|
+
step: number;
|
|
325
|
+
onChange: (value: number) => void;
|
|
326
|
+
onFinished: () => void;
|
|
327
|
+
};
|
|
328
|
+
advance: {
|
|
329
|
+
layer: {
|
|
330
|
+
name: "Layer";
|
|
331
|
+
value: string[];
|
|
332
|
+
};
|
|
333
|
+
cursor: {
|
|
334
|
+
name: "CursorIcon";
|
|
335
|
+
value: ["crosshair", "pencil", "dot"];
|
|
336
|
+
};
|
|
337
|
+
mainAreaSize: {
|
|
338
|
+
name: "Zoom";
|
|
339
|
+
min: number;
|
|
340
|
+
max: number;
|
|
341
|
+
step: number;
|
|
342
|
+
onFinished: null;
|
|
343
|
+
};
|
|
344
|
+
dragSensitivity: {
|
|
345
|
+
name: "DragSensitivity";
|
|
346
|
+
min: number;
|
|
347
|
+
max: number;
|
|
348
|
+
step: number;
|
|
349
|
+
};
|
|
350
|
+
pencilSettings: {
|
|
351
|
+
lineWidth: {
|
|
352
|
+
name: "OuterLineWidth";
|
|
353
|
+
min: number;
|
|
354
|
+
max: number;
|
|
355
|
+
step: number;
|
|
356
|
+
};
|
|
357
|
+
color: {
|
|
358
|
+
name: "Color";
|
|
359
|
+
};
|
|
360
|
+
fillColor: {
|
|
361
|
+
name: "FillColor";
|
|
362
|
+
};
|
|
363
|
+
};
|
|
364
|
+
BrushSettings: {
|
|
365
|
+
brushColor: {
|
|
366
|
+
name: "BrushColor";
|
|
367
|
+
};
|
|
368
|
+
};
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
/** Image metadata — set once during NRRD loading, read-only at runtime */
|
|
372
|
+
export interface IImageMetadata {
|
|
373
|
+
originWidth: number;
|
|
374
|
+
originHeight: number;
|
|
375
|
+
nrrd_x_mm: number;
|
|
376
|
+
nrrd_y_mm: number;
|
|
377
|
+
nrrd_z_mm: number;
|
|
378
|
+
nrrd_x_pixel: number;
|
|
379
|
+
nrrd_y_pixel: number;
|
|
380
|
+
nrrd_z_pixel: number;
|
|
381
|
+
dimensions: number[];
|
|
382
|
+
voxelSpacing: number[];
|
|
383
|
+
spaceOrigin: number[];
|
|
384
|
+
RSARatio: number;
|
|
385
|
+
ratios: ICommXYZ;
|
|
386
|
+
layers: string[];
|
|
387
|
+
}
|
|
388
|
+
/** View state — runtime display/navigation state */
|
|
389
|
+
export interface IViewState {
|
|
390
|
+
changedWidth: number;
|
|
391
|
+
changedHeight: number;
|
|
392
|
+
currentSliceIndex: number;
|
|
393
|
+
preSliceIndex: number;
|
|
394
|
+
maxIndex: number;
|
|
395
|
+
minIndex: number;
|
|
396
|
+
contrastNum: number;
|
|
397
|
+
sizeFactor: number;
|
|
398
|
+
showContrast: boolean;
|
|
399
|
+
switchSliceFlag: boolean;
|
|
400
|
+
previousPanelL: number;
|
|
401
|
+
previousPanelT: number;
|
|
402
|
+
}
|
|
403
|
+
/** Interaction state — mouse/cursor tracking */
|
|
404
|
+
export interface IInteractionState {
|
|
405
|
+
mouseOverX: number;
|
|
406
|
+
mouseOverY: number;
|
|
407
|
+
mouseOver: boolean;
|
|
408
|
+
cursorPageX: number;
|
|
409
|
+
cursorPageY: number;
|
|
410
|
+
isCursorSelect: boolean;
|
|
411
|
+
drawStartPos: ICommXY;
|
|
412
|
+
}
|
|
413
|
+
/** Sphere state — SphereTool-specific data */
|
|
414
|
+
export interface ISphereState {
|
|
415
|
+
sphereOrigin: ICommXYZ;
|
|
416
|
+
tumourSphereOrigin: ICommXYZ | null;
|
|
417
|
+
skinSphereOrigin: ICommXYZ | null;
|
|
418
|
+
ribSphereOrigin: ICommXYZ | null;
|
|
419
|
+
nippleSphereOrigin: ICommXYZ | null;
|
|
420
|
+
/** Dedicated MaskVolume for SphereTool 3D sphere data. Type is `any` to avoid circular deps. */
|
|
421
|
+
sphereMaskVolume: any;
|
|
422
|
+
sphereRadius: number;
|
|
423
|
+
}
|
|
424
|
+
/** Internal flags — transient operational flags */
|
|
425
|
+
export interface IInternalFlags {
|
|
426
|
+
stepClear: number;
|
|
427
|
+
clearAllFlag: boolean;
|
|
428
|
+
loadingMaskData: boolean;
|
|
429
|
+
}
|
|
430
|
+
/** Legacy flat interface — kept for backward compatibility during migration */
|
|
431
|
+
export interface INrrdStates extends IImageMetadata, IViewState, IInteractionState, ISphereState, IInternalFlags {
|
|
432
|
+
}
|
|
433
|
+
/** Callbacks for external notification of annotation data changes */
|
|
434
|
+
export interface IAnnotationCallbacks {
|
|
435
|
+
onMaskChanged(sliceData: Uint8Array, layerId: string, channelId: number, sliceIndex: number, axis: "x" | "y" | "z", width: number, height: number, clearFlag: boolean): void;
|
|
436
|
+
onSphereChanged(sphereOrigin: number[], sphereRadius: number): void;
|
|
437
|
+
onCalculatorPositionsChanged(tumour: ICommXYZ | null, skin: ICommXYZ | null, rib: ICommXYZ | null, nipple: ICommXYZ | null, axis: "x" | "y" | "z"): void;
|
|
438
|
+
onLayerVolumeCleared(layerId: string): void;
|
|
439
|
+
onChannelColorChanged(layerId: string, channel: number, color: {
|
|
440
|
+
r: number;
|
|
441
|
+
g: number;
|
|
442
|
+
b: number;
|
|
443
|
+
a: number;
|
|
444
|
+
}): void;
|
|
445
|
+
}
|
|
446
|
+
export interface IConvertObjType {
|
|
447
|
+
currentNewSliceIndex: number;
|
|
448
|
+
preSliceIndex: number;
|
|
449
|
+
convertCursorNumX: number;
|
|
450
|
+
convertCursorNumY: number;
|
|
451
|
+
}
|
|
452
|
+
export interface ICursorPage {
|
|
453
|
+
x: {
|
|
454
|
+
cursorPageX: number;
|
|
455
|
+
cursorPageY: number;
|
|
456
|
+
index: number;
|
|
457
|
+
updated: boolean;
|
|
458
|
+
};
|
|
459
|
+
y: {
|
|
460
|
+
cursorPageX: number;
|
|
461
|
+
cursorPageY: number;
|
|
462
|
+
index: number;
|
|
463
|
+
updated: boolean;
|
|
464
|
+
};
|
|
465
|
+
z: {
|
|
466
|
+
cursorPageX: number;
|
|
467
|
+
cursorPageY: number;
|
|
468
|
+
index: number;
|
|
469
|
+
updated: boolean;
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
export interface IDragOpts {
|
|
473
|
+
showNumber?: boolean;
|
|
474
|
+
getSliceNum?: (index: number, contrastNum: number) => void;
|
|
475
|
+
}
|
|
476
|
+
export interface IDrawOpts {
|
|
477
|
+
getMaskData?: (sliceData: Uint8Array, layerId: string, channelId: number, sliceIndex: number, axis: "x" | "y" | "z", width: number, height: number, clearFlag?: boolean) => void;
|
|
478
|
+
onClearLayerVolume?: (layerId: string) => void;
|
|
479
|
+
getSphereData?: (sphereOrigin: number[], sphereRadius: number) => void;
|
|
480
|
+
getCalculateSpherePositionsData?: (tumourSphereOrigin: ICommXYZ | null, skinSphereOrigin: ICommXYZ | null, ribSphereOrigin: ICommXYZ | null, nippleSphereOrigin: ICommXYZ | null, aixs: "x" | "y" | "z") => void;
|
|
481
|
+
}
|
|
482
|
+
export interface IKeyBoardSettings {
|
|
483
|
+
draw: string;
|
|
484
|
+
undo: string;
|
|
485
|
+
redo: string;
|
|
486
|
+
contrast: string[];
|
|
487
|
+
crosshair: string;
|
|
488
|
+
sphere: string;
|
|
489
|
+
mouseWheel: "Scroll:Zoom" | "Scroll:Slice";
|
|
490
|
+
}
|
|
@@ -37,28 +37,28 @@ export var RenderMode;
|
|
|
37
37
|
*/
|
|
38
38
|
export const MASK_CHANNEL_COLORS = {
|
|
39
39
|
0: { r: 0, g: 0, b: 0, a: 0 },
|
|
40
|
-
1: { r:
|
|
41
|
-
2: { r:
|
|
42
|
-
3: { r:
|
|
43
|
-
4: { r:
|
|
44
|
-
5: { r:
|
|
45
|
-
6: { r:
|
|
46
|
-
7: { r:
|
|
47
|
-
8: { r:
|
|
40
|
+
1: { r: 16, g: 185, b: 129, a: 255 },
|
|
41
|
+
2: { r: 244, g: 63, b: 94, a: 255 },
|
|
42
|
+
3: { r: 59, g: 130, b: 246, a: 255 },
|
|
43
|
+
4: { r: 251, g: 191, b: 36, a: 255 },
|
|
44
|
+
5: { r: 217, g: 70, b: 239, a: 255 },
|
|
45
|
+
6: { r: 6, g: 182, b: 212, a: 255 },
|
|
46
|
+
7: { r: 249, g: 115, b: 22, a: 255 },
|
|
47
|
+
8: { r: 139, g: 92, b: 246, a: 255 }, // Violet / Purple — Extended
|
|
48
48
|
};
|
|
49
49
|
/**
|
|
50
50
|
* CSS color strings for the default channel palette (for reference / UI).
|
|
51
51
|
*/
|
|
52
52
|
export const MASK_CHANNEL_CSS_COLORS = {
|
|
53
53
|
0: 'rgba(0,0,0,0)',
|
|
54
|
-
1: 'rgba(
|
|
55
|
-
2: 'rgba(
|
|
56
|
-
3: 'rgba(
|
|
57
|
-
4: 'rgba(
|
|
58
|
-
5: 'rgba(
|
|
59
|
-
6: 'rgba(
|
|
60
|
-
7: 'rgba(
|
|
61
|
-
8: 'rgba(
|
|
54
|
+
1: 'rgba(16,185,129,1)',
|
|
55
|
+
2: 'rgba(244,63,94,1)',
|
|
56
|
+
3: 'rgba(59,130,246,1)',
|
|
57
|
+
4: 'rgba(251,191,36,1)',
|
|
58
|
+
5: 'rgba(217,70,239,1)',
|
|
59
|
+
6: 'rgba(6,182,212,1)',
|
|
60
|
+
7: 'rgba(249,115,22,1)',
|
|
61
|
+
8: 'rgba(139,92,246,1)', // Violet
|
|
62
62
|
};
|
|
63
63
|
/**
|
|
64
64
|
* Convenience alias for MASK_CHANNEL_CSS_COLORS.
|
|
@@ -70,14 +70,14 @@ export const CHANNEL_COLORS = MASK_CHANNEL_CSS_COLORS;
|
|
|
70
70
|
*/
|
|
71
71
|
export const CHANNEL_HEX_COLORS = {
|
|
72
72
|
0: '#000000',
|
|
73
|
-
1: '#
|
|
74
|
-
2: '#
|
|
75
|
-
3: '#
|
|
76
|
-
4: '#
|
|
77
|
-
5: '#
|
|
78
|
-
6: '#
|
|
79
|
-
7: '#
|
|
80
|
-
8: '#
|
|
73
|
+
1: '#10b981',
|
|
74
|
+
2: '#f43f5e',
|
|
75
|
+
3: '#3b82f6',
|
|
76
|
+
4: '#fbbf24',
|
|
77
|
+
5: '#d946ef',
|
|
78
|
+
6: '#06b6d4',
|
|
79
|
+
7: '#f97316',
|
|
80
|
+
8: '#8b5cf6', // Violet
|
|
81
81
|
};
|
|
82
82
|
// ── Color Conversion Utilities ──────────────────────────────────────────
|
|
83
83
|
/**
|
|
@@ -95,4 +95,5 @@ export function rgbaToHex(color) {
|
|
|
95
95
|
export function rgbaToCss(color) {
|
|
96
96
|
return `rgba(${color.r},${color.g},${color.b},${(color.a / 255).toFixed(2)})`;
|
|
97
97
|
}
|
|
98
|
+
;
|
|
98
99
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH;;GAEG;AACH,MAAM,CAAN,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,uDAAuD;IACvD,qCAAuB,CAAA;IAEvB,4CAA4C;IAC5C,+CAAiC,CAAA;IAEjC,wEAAwE;IACxE,6CAA+B,CAAA;IAE/B,uCAAuC;IACvC,iCAAmB,CAAA;AACrB,CAAC,EAZW,UAAU,KAAV,UAAU,QAYrB;AAsBD,2EAA2E;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA8B;IAC5D,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,CAAC,EAAE,EAAE,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GuiState — Grouped state management for GUI configuration.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the flat IGUIStates object with 4 semantic sub-groups:
|
|
5
|
+
* - mode: Tool mode flags (pencil/eraser/sphere)
|
|
6
|
+
* - drawing: Brush/pencil appearance and behavior
|
|
7
|
+
* - viewConfig: UI layout and interaction parameters
|
|
8
|
+
* - layerChannel: Active layer, channel, and visibility
|
|
9
|
+
*/
|
|
10
|
+
import type { IToolModeState, IDrawingConfig, IViewConfig, ILayerChannelState } from "../core/types";
|
|
11
|
+
export declare class GuiState {
|
|
12
|
+
readonly mode: IToolModeState;
|
|
13
|
+
readonly drawing: IDrawingConfig;
|
|
14
|
+
readonly viewConfig: IViewConfig;
|
|
15
|
+
readonly layerChannel: ILayerChannelState;
|
|
16
|
+
constructor(options?: {
|
|
17
|
+
defaultPaintCursor?: string;
|
|
18
|
+
defaultFillColor?: string;
|
|
19
|
+
defaultBrushColor?: string;
|
|
20
|
+
layers?: string[];
|
|
21
|
+
});
|
|
22
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GuiState — Grouped state management for GUI configuration.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the flat IGUIStates object with 4 semantic sub-groups:
|
|
5
|
+
* - mode: Tool mode flags (pencil/eraser/sphere)
|
|
6
|
+
* - drawing: Brush/pencil appearance and behavior
|
|
7
|
+
* - viewConfig: UI layout and interaction parameters
|
|
8
|
+
* - layerChannel: Active layer, channel, and visibility
|
|
9
|
+
*/
|
|
10
|
+
export class GuiState {
|
|
11
|
+
constructor(options) {
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
|
+
const opts = options !== null && options !== void 0 ? options : {};
|
|
14
|
+
const layers = (_a = opts.layers) !== null && _a !== void 0 ? _a : ["layer1", "layer2", "layer3"];
|
|
15
|
+
this.mode = {
|
|
16
|
+
pencil: true,
|
|
17
|
+
eraser: false,
|
|
18
|
+
sphere: false,
|
|
19
|
+
activeSphereType: "tumour",
|
|
20
|
+
};
|
|
21
|
+
this.drawing = {
|
|
22
|
+
globalAlpha: 0.6,
|
|
23
|
+
lineWidth: 2,
|
|
24
|
+
color: "#f50a33",
|
|
25
|
+
fillColor: (_b = opts.defaultFillColor) !== null && _b !== void 0 ? _b : "#f50a33",
|
|
26
|
+
brushColor: (_c = opts.defaultBrushColor) !== null && _c !== void 0 ? _c : "#f50a33",
|
|
27
|
+
brushAndEraserSize: 10,
|
|
28
|
+
};
|
|
29
|
+
this.viewConfig = {
|
|
30
|
+
mainAreaSize: 3,
|
|
31
|
+
dragSensitivity: 75,
|
|
32
|
+
cursor: "dot",
|
|
33
|
+
defaultPaintCursor: (_d = opts.defaultPaintCursor) !== null && _d !== void 0 ? _d : "",
|
|
34
|
+
max_sensitive: 100,
|
|
35
|
+
readyToUpdate: true,
|
|
36
|
+
};
|
|
37
|
+
this.layerChannel = {
|
|
38
|
+
layer: "layer1",
|
|
39
|
+
activeChannel: 1,
|
|
40
|
+
layerVisibility: Object.fromEntries(layers.map((l) => [l, true])),
|
|
41
|
+
channelVisibility: Object.fromEntries(layers.map((l) => [
|
|
42
|
+
l,
|
|
43
|
+
{ 1: true, 2: true, 3: true, 4: true, 5: true, 6: true, 7: true, 8: true },
|
|
44
|
+
])),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=GuiState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuiState.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/coreTools/GuiState.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,OAAO,QAAQ;IAMnB,YAAY,OAKX;;QACC,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE7D,IAAI,CAAC,IAAI,GAAG;YACV,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,gBAAgB,EAAE,QAAQ;SAC3B,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG;YACb,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,MAAA,IAAI,CAAC,gBAAgB,mCAAI,SAAS;YAC7C,UAAU,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,SAAS;YAC/C,kBAAkB,EAAE,EAAE;SACvB,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG;YAChB,YAAY,EAAE,CAAC;YACf,eAAe,EAAE,EAAE;YACnB,MAAM,EAAE,KAAK;YACb,kBAAkB,EAAE,MAAA,IAAI,CAAC,kBAAkB,mCAAI,EAAE;YACjD,aAAa,EAAE,GAAG;YAClB,aAAa,EAAE,IAAI;SACpB,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG;YAClB,KAAK,EAAE,QAAQ;YACf,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACjE,iBAAiB,EAAE,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAChB,CAAC;gBACD,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;aAC3E,CAAC,CACH;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NrrdState — Grouped state management for NRRD annotation data.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the flat INrrdStates object with 5 semantic sub-groups:
|
|
5
|
+
* - image: Read-mostly metadata set during NRRD loading
|
|
6
|
+
* - view: Runtime display/navigation state
|
|
7
|
+
* - interaction: Mouse/cursor tracking
|
|
8
|
+
* - sphere: SphereTool-specific data
|
|
9
|
+
* - flags: Internal operational flags
|
|
10
|
+
*
|
|
11
|
+
* Phase 4 of the State Management Refactor.
|
|
12
|
+
*/
|
|
13
|
+
import type { IImageMetadata, IViewState, IInteractionState, ISphereState, IInternalFlags } from "../core/types";
|
|
14
|
+
export declare class NrrdState {
|
|
15
|
+
readonly image: IImageMetadata;
|
|
16
|
+
readonly view: IViewState;
|
|
17
|
+
readonly interaction: IInteractionState;
|
|
18
|
+
readonly sphere: ISphereState;
|
|
19
|
+
readonly flags: IInternalFlags;
|
|
20
|
+
constructor(baseCanvasesSize?: number, layers?: string[]);
|
|
21
|
+
/** Set zoom factor with clamping [1, 8] */
|
|
22
|
+
setZoomFactor(factor: number): void;
|
|
23
|
+
/** Reset all sphere state to defaults */
|
|
24
|
+
resetSphereState(): void;
|
|
25
|
+
}
|