copper3d 3.0.2 → 3.1.1

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.
Files changed (106) hide show
  1. package/README.md +183 -1028
  2. package/dist/Utils/segmentation/CanvasState.d.ts +31 -0
  3. package/dist/Utils/segmentation/CanvasState.js +168 -0
  4. package/dist/Utils/segmentation/CanvasState.js.map +1 -0
  5. package/dist/Utils/segmentation/DragOperator.d.ts +1 -1
  6. package/dist/Utils/segmentation/DragOperator.js +2 -4
  7. package/dist/Utils/segmentation/DragOperator.js.map +1 -1
  8. package/dist/Utils/segmentation/DrawToolCore.d.ts +49 -27
  9. package/dist/Utils/segmentation/DrawToolCore.js +275 -344
  10. package/dist/Utils/segmentation/DrawToolCore.js.map +1 -1
  11. package/dist/Utils/segmentation/NrrdTools.d.ts +92 -467
  12. package/dist/Utils/segmentation/NrrdTools.js +499 -1341
  13. package/dist/Utils/segmentation/NrrdTools.js.map +1 -1
  14. package/dist/Utils/segmentation/RenderingUtils.d.ts +73 -0
  15. package/dist/Utils/segmentation/RenderingUtils.js +186 -0
  16. package/dist/Utils/segmentation/RenderingUtils.js.map +1 -0
  17. package/dist/Utils/segmentation/core/MaskVolume.d.ts +1 -1
  18. package/dist/Utils/segmentation/core/MaskVolume.js +1 -1
  19. package/dist/Utils/segmentation/core/index.d.ts +1 -1
  20. package/dist/Utils/segmentation/core/index.js.map +1 -1
  21. package/dist/Utils/segmentation/core/types.d.ts +386 -0
  22. package/dist/Utils/segmentation/core/types.js +1 -0
  23. package/dist/Utils/segmentation/core/types.js.map +1 -1
  24. package/dist/Utils/segmentation/coreTools/GuiState.d.ts +1 -1
  25. package/dist/Utils/segmentation/coreTools/GuiState.js +1 -0
  26. package/dist/Utils/segmentation/coreTools/GuiState.js.map +1 -1
  27. package/dist/Utils/segmentation/coreTools/NrrdState.d.ts +1 -1
  28. package/dist/Utils/segmentation/coreTools/divControlTools.d.ts +1 -1
  29. package/dist/Utils/segmentation/coreTools/gui.d.ts +1 -1
  30. package/dist/Utils/segmentation/tools/BaseTool.d.ts +1 -1
  31. package/dist/Utils/segmentation/tools/ContrastTool.d.ts +3 -6
  32. package/dist/Utils/segmentation/tools/ContrastTool.js.map +1 -1
  33. package/dist/Utils/segmentation/tools/CrosshairTool.d.ts +11 -1
  34. package/dist/Utils/segmentation/tools/CrosshairTool.js +25 -0
  35. package/dist/Utils/segmentation/tools/CrosshairTool.js.map +1 -1
  36. package/dist/Utils/segmentation/tools/DataLoader.d.ts +33 -0
  37. package/dist/Utils/segmentation/tools/DataLoader.js +159 -0
  38. package/dist/Utils/segmentation/tools/DataLoader.js.map +1 -0
  39. package/dist/Utils/segmentation/tools/DragSliceTool.d.ts +3 -12
  40. package/dist/Utils/segmentation/tools/DragSliceTool.js.map +1 -1
  41. package/dist/Utils/segmentation/tools/DrawingTool.d.ts +18 -26
  42. package/dist/Utils/segmentation/tools/DrawingTool.js +48 -0
  43. package/dist/Utils/segmentation/tools/DrawingTool.js.map +1 -1
  44. package/dist/Utils/segmentation/tools/ImageStoreHelper.d.ts +2 -5
  45. package/dist/Utils/segmentation/tools/ImageStoreHelper.js.map +1 -1
  46. package/dist/Utils/segmentation/tools/LayerChannelManager.d.ts +56 -0
  47. package/dist/Utils/segmentation/tools/LayerChannelManager.js +188 -0
  48. package/dist/Utils/segmentation/tools/LayerChannelManager.js.map +1 -0
  49. package/dist/Utils/segmentation/tools/PanTool.d.ts +2 -8
  50. package/dist/Utils/segmentation/tools/PanTool.js.map +1 -1
  51. package/dist/Utils/segmentation/tools/SliceRenderPipeline.d.ts +80 -0
  52. package/dist/Utils/segmentation/tools/SliceRenderPipeline.js +355 -0
  53. package/dist/Utils/segmentation/tools/SliceRenderPipeline.js.map +1 -0
  54. package/dist/Utils/segmentation/tools/SphereTool.d.ts +25 -19
  55. package/dist/Utils/segmentation/tools/SphereTool.js +61 -7
  56. package/dist/Utils/segmentation/tools/SphereTool.js.map +1 -1
  57. package/dist/Utils/segmentation/tools/ToolHost.d.ts +74 -0
  58. package/dist/Utils/segmentation/tools/ToolHost.js +10 -0
  59. package/dist/Utils/segmentation/tools/ToolHost.js.map +1 -0
  60. package/dist/Utils/segmentation/tools/ZoomTool.d.ts +2 -6
  61. package/dist/Utils/segmentation/tools/ZoomTool.js.map +1 -1
  62. package/dist/Utils/segmentation/tools/index.d.ts +5 -7
  63. package/dist/Utils/segmentation/tools/index.js +6 -0
  64. package/dist/Utils/segmentation/tools/index.js.map +1 -1
  65. package/dist/Utils/workers/reformatSaveDataWorker.d.ts +1 -1
  66. package/dist/bundle.esm.js +2146 -2359
  67. package/dist/bundle.umd.js +2146 -2359
  68. package/dist/index.d.ts +3 -3
  69. package/dist/index.js +1 -1
  70. package/dist/types/Utils/segmentation/CanvasState.d.ts +31 -0
  71. package/dist/types/Utils/segmentation/DragOperator.d.ts +1 -1
  72. package/dist/types/Utils/segmentation/DrawToolCore.d.ts +49 -27
  73. package/dist/types/Utils/segmentation/NrrdTools.d.ts +92 -467
  74. package/dist/types/Utils/segmentation/RenderingUtils.d.ts +73 -0
  75. package/dist/types/Utils/segmentation/core/MaskVolume.d.ts +1 -1
  76. package/dist/types/Utils/segmentation/core/index.d.ts +1 -1
  77. package/dist/types/Utils/segmentation/core/types.d.ts +386 -0
  78. package/dist/types/Utils/segmentation/coreTools/GuiState.d.ts +1 -1
  79. package/dist/types/Utils/segmentation/coreTools/NrrdState.d.ts +1 -1
  80. package/dist/types/Utils/segmentation/coreTools/divControlTools.d.ts +1 -1
  81. package/dist/types/Utils/segmentation/coreTools/gui.d.ts +1 -1
  82. package/dist/types/Utils/segmentation/tools/BaseTool.d.ts +1 -1
  83. package/dist/types/Utils/segmentation/tools/ContrastTool.d.ts +3 -6
  84. package/dist/types/Utils/segmentation/tools/CrosshairTool.d.ts +11 -1
  85. package/dist/types/Utils/segmentation/tools/DataLoader.d.ts +33 -0
  86. package/dist/types/Utils/segmentation/tools/DragSliceTool.d.ts +3 -12
  87. package/dist/types/Utils/segmentation/tools/DrawingTool.d.ts +18 -26
  88. package/dist/types/Utils/segmentation/tools/ImageStoreHelper.d.ts +2 -5
  89. package/dist/types/Utils/segmentation/tools/LayerChannelManager.d.ts +56 -0
  90. package/dist/types/Utils/segmentation/tools/PanTool.d.ts +2 -8
  91. package/dist/types/Utils/segmentation/tools/SliceRenderPipeline.d.ts +80 -0
  92. package/dist/types/Utils/segmentation/tools/SphereTool.d.ts +25 -19
  93. package/dist/types/Utils/segmentation/tools/ToolHost.d.ts +74 -0
  94. package/dist/types/Utils/segmentation/tools/ZoomTool.d.ts +2 -6
  95. package/dist/types/Utils/segmentation/tools/index.d.ts +5 -7
  96. package/dist/types/Utils/workers/reformatSaveDataWorker.d.ts +1 -1
  97. package/dist/types/index.d.ts +3 -3
  98. package/package.json +1 -1
  99. package/dist/Utils/segmentation/CommToolsData.d.ts +0 -192
  100. package/dist/Utils/segmentation/CommToolsData.js +0 -474
  101. package/dist/Utils/segmentation/CommToolsData.js.map +0 -1
  102. package/dist/Utils/segmentation/coreTools/coreType.d.ts +0 -389
  103. package/dist/Utils/segmentation/coreTools/coreType.js +0 -3
  104. package/dist/Utils/segmentation/coreTools/coreType.js.map +0 -1
  105. package/dist/types/Utils/segmentation/CommToolsData.d.ts +0 -192
  106. package/dist/types/Utils/segmentation/coreTools/coreType.d.ts +0 -389
@@ -0,0 +1,188 @@
1
+ import { BaseTool } from "./BaseTool";
2
+ import { CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss } from "../core";
3
+ import { SPHERE_CHANNEL_MAP } from "./SphereTool";
4
+ /**
5
+ * Manages layer/channel state: active selection, visibility, and channel colors.
6
+ *
7
+ * Extracted from NrrdTools.ts to reduce its size.
8
+ * Follows the same BaseTool + ToolContext + Callbacks pattern as other tools.
9
+ */
10
+ export class LayerChannelManager extends BaseTool {
11
+ constructor(ctx, callbacks) {
12
+ super(ctx);
13
+ this.callbacks = callbacks;
14
+ }
15
+ /****************************Active Layer/Channel****************************************************/
16
+ setActiveLayer(layerId) {
17
+ this.ctx.gui_states.layerChannel.layer = layerId;
18
+ this.syncBrushColor();
19
+ }
20
+ getActiveLayer() {
21
+ return this.ctx.gui_states.layerChannel.layer;
22
+ }
23
+ setActiveChannel(channel) {
24
+ this.ctx.gui_states.layerChannel.activeChannel = channel;
25
+ this.syncBrushColor();
26
+ }
27
+ getActiveChannel() {
28
+ return this.ctx.gui_states.layerChannel.activeChannel;
29
+ }
30
+ /**
31
+ * Set the active sphere type and sync brush/fill color.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * nrrdTools.setActiveSphereType('nipple');
36
+ * ```
37
+ */
38
+ setActiveSphereType(type) {
39
+ this.ctx.gui_states.mode.activeSphereType = type;
40
+ // Apply color side-effect: update fillColor/brushColor from sphere channel map
41
+ const mapping = SPHERE_CHANNEL_MAP[type];
42
+ if (mapping) {
43
+ const volume = this.callbacks.getVolumeForLayer(mapping.layer);
44
+ const color = volume
45
+ ? rgbaToHex(volume.getChannelColor(mapping.channel))
46
+ : (CHANNEL_HEX_COLORS[mapping.channel] || '#00ff00');
47
+ this.ctx.gui_states.drawing.fillColor = color;
48
+ this.ctx.gui_states.drawing.brushColor = color;
49
+ }
50
+ }
51
+ getActiveSphereType() {
52
+ return this.ctx.gui_states.mode.activeSphereType;
53
+ }
54
+ /****************************Visibility****************************************************/
55
+ setLayerVisible(layerId, visible) {
56
+ this.ctx.gui_states.layerChannel.layerVisibility[layerId] = visible;
57
+ this.callbacks.reloadMasksFromVolume();
58
+ }
59
+ isLayerVisible(layerId) {
60
+ var _a;
61
+ return (_a = this.ctx.gui_states.layerChannel.layerVisibility[layerId]) !== null && _a !== void 0 ? _a : true;
62
+ }
63
+ setChannelVisible(layerId, channel, visible) {
64
+ if (this.ctx.gui_states.layerChannel.channelVisibility[layerId]) {
65
+ this.ctx.gui_states.layerChannel.channelVisibility[layerId][channel] = visible;
66
+ }
67
+ this.callbacks.reloadMasksFromVolume();
68
+ }
69
+ isChannelVisible(layerId, channel) {
70
+ var _a, _b;
71
+ return (_b = (_a = this.ctx.gui_states.layerChannel.channelVisibility[layerId]) === null || _a === void 0 ? void 0 : _a[channel]) !== null && _b !== void 0 ? _b : true;
72
+ }
73
+ getLayerVisibility() {
74
+ return Object.assign({}, this.ctx.gui_states.layerChannel.layerVisibility);
75
+ }
76
+ getChannelVisibility() {
77
+ const result = {};
78
+ for (const layerId of this.ctx.nrrd_states.image.layers) {
79
+ result[layerId] = Object.assign({}, this.ctx.gui_states.layerChannel.channelVisibility[layerId]);
80
+ }
81
+ return result;
82
+ }
83
+ hasLayerData(layerId) {
84
+ const volume = this.ctx.protectedData.maskData.volumes[layerId];
85
+ if (!volume) {
86
+ return false;
87
+ }
88
+ return volume.hasData();
89
+ }
90
+ /****************************Per-Layer Opacity****************************************************/
91
+ setLayerOpacity(layerId, opacity) {
92
+ this.ctx.gui_states.layerChannel.layerOpacity[layerId] =
93
+ Math.max(0.1, Math.min(1, opacity));
94
+ this.callbacks.reloadMasksFromVolume();
95
+ }
96
+ getLayerOpacity(layerId) {
97
+ var _a;
98
+ return (_a = this.ctx.gui_states.layerChannel.layerOpacity[layerId]) !== null && _a !== void 0 ? _a : 1.0;
99
+ }
100
+ getLayerOpacityMap() {
101
+ return Object.assign({}, this.ctx.gui_states.layerChannel.layerOpacity);
102
+ }
103
+ /****************************Channel Colors****************************************************/
104
+ setChannelColor(layerId, channel, color) {
105
+ const volume = this.ctx.protectedData.maskData.volumes[layerId];
106
+ if (!volume) {
107
+ console.warn(`setChannelColor: unknown layer "${layerId}"`);
108
+ return;
109
+ }
110
+ volume.setChannelColor(channel, color);
111
+ if (layerId === this.ctx.gui_states.layerChannel.layer && channel === this.ctx.gui_states.layerChannel.activeChannel) {
112
+ this.syncBrushColor();
113
+ }
114
+ this.callbacks.reloadMasksFromVolume();
115
+ this.callbacks.onChannelColorChanged(layerId, channel, color);
116
+ }
117
+ getChannelColor(layerId, channel) {
118
+ const volume = this.ctx.protectedData.maskData.volumes[layerId];
119
+ if (!volume) {
120
+ return { r: 0, g: 255, b: 0, a: 255 };
121
+ }
122
+ return volume.getChannelColor(channel);
123
+ }
124
+ getChannelHexColor(layerId, channel) {
125
+ return rgbaToHex(this.getChannelColor(layerId, channel));
126
+ }
127
+ getChannelCssColor(layerId, channel) {
128
+ return rgbaToCss(this.getChannelColor(layerId, channel));
129
+ }
130
+ setChannelColors(layerId, colorMap) {
131
+ const volume = this.ctx.protectedData.maskData.volumes[layerId];
132
+ if (!volume) {
133
+ console.warn(`setChannelColors: unknown layer "${layerId}"`);
134
+ return;
135
+ }
136
+ for (const [ch, color] of Object.entries(colorMap)) {
137
+ volume.setChannelColor(Number(ch), color);
138
+ }
139
+ if (layerId === this.ctx.gui_states.layerChannel.layer) {
140
+ this.syncBrushColor();
141
+ }
142
+ this.callbacks.reloadMasksFromVolume();
143
+ }
144
+ setAllLayersChannelColor(channel, color) {
145
+ for (const layerId of this.ctx.nrrd_states.image.layers) {
146
+ const volume = this.ctx.protectedData.maskData.volumes[layerId];
147
+ if (volume) {
148
+ volume.setChannelColor(channel, color);
149
+ }
150
+ }
151
+ if (channel === this.ctx.gui_states.layerChannel.activeChannel) {
152
+ this.syncBrushColor();
153
+ }
154
+ this.callbacks.reloadMasksFromVolume();
155
+ }
156
+ resetChannelColors(layerId, channel) {
157
+ const layers = layerId ? [layerId] : this.ctx.nrrd_states.image.layers;
158
+ for (const lid of layers) {
159
+ const volume = this.ctx.protectedData.maskData.volumes[lid];
160
+ if (volume) {
161
+ volume.resetChannelColors(channel);
162
+ }
163
+ }
164
+ this.syncBrushColor();
165
+ this.callbacks.reloadMasksFromVolume();
166
+ }
167
+ /****************************Private Helpers****************************************************/
168
+ /**
169
+ * Sync brush/fill color from the active layer's volume channel color.
170
+ * Falls back to global CHANNEL_HEX_COLORS if volume not available.
171
+ */
172
+ syncBrushColor() {
173
+ const channel = this.ctx.gui_states.layerChannel.activeChannel || 1;
174
+ const layer = this.ctx.gui_states.layerChannel.layer;
175
+ const volume = this.ctx.protectedData.maskData.volumes[layer];
176
+ if (volume) {
177
+ const hex = rgbaToHex(volume.getChannelColor(channel));
178
+ this.ctx.gui_states.drawing.fillColor = hex;
179
+ this.ctx.gui_states.drawing.brushColor = hex;
180
+ }
181
+ else {
182
+ const hex = CHANNEL_HEX_COLORS[channel] || '#00ff00';
183
+ this.ctx.gui_states.drawing.fillColor = hex;
184
+ this.ctx.gui_states.drawing.brushColor = hex;
185
+ }
186
+ }
187
+ }
188
+ //# sourceMappingURL=LayerChannelManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerChannelManager.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/tools/LayerChannelManager.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,7 @@
6
6
  */
7
7
  import { BaseTool } from "./BaseTool";
8
8
  import type { ToolContext } from "./BaseTool";
9
- /**
10
- * Callbacks PanTool needs from its host (DrawToolCore).
11
- */
12
- export interface PanCallbacks {
13
- /** Re-enable zoom wheel after pan ends in sphere mode */
14
- zoomActionAfterDrawSphere: () => void;
15
- }
9
+ import type { PanHostDeps } from "./ToolHost";
16
10
  export declare class PanTool extends BaseTool {
17
11
  /** Right mouse button currently held */
18
12
  private rightClicked;
@@ -26,7 +20,7 @@ export declare class PanTool extends BaseTool {
26
20
  * Arrow function preserves `this` binding.
27
21
  */
28
22
  private readonly boundPointerMove;
29
- constructor(ctx: ToolContext, callbacks: PanCallbacks);
23
+ constructor(ctx: ToolContext, callbacks: PanHostDeps);
30
24
  /** Whether a pan drag is currently active */
31
25
  get isActive(): boolean;
32
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PanTool.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/tools/PanTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PanTool.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/tools/PanTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { BaseTool } from "./BaseTool";
2
+ import type { ToolContext } from "./BaseTool";
3
+ import type { SliceRenderHostDeps } from "./ToolHost";
4
+ /**
5
+ * Manages slice rendering pipeline: slice setup, canvas rendering, and view helpers.
6
+ *
7
+ * Extracted from NrrdTools.ts to reduce its size.
8
+ * Follows the same BaseTool + ToolContext + Callbacks pattern as other tools.
9
+ */
10
+ export declare class SliceRenderPipeline extends BaseTool {
11
+ private callbacks;
12
+ private initState;
13
+ constructor(ctx: ToolContext, callbacks: SliceRenderHostDeps);
14
+ /**
15
+ * Reset initState to true (called from NrrdTools.reset() when switching datasets).
16
+ */
17
+ resetInitState(): void;
18
+ /****************************Slice Setup****************************************************/
19
+ setDisplaySlicesBaseOnAxis(): void;
20
+ private loadDisplaySlicesArray;
21
+ resetDisplaySlicesStatus(): void;
22
+ private setupConfigs;
23
+ private setMainPreSlice;
24
+ private setOriginCanvasAndPre;
25
+ afterLoadSlice(): void;
26
+ private updateMaxIndex;
27
+ /****************************Rendering****************************************************/
28
+ /**
29
+ * Phase 3: Reload all mask layers from MaskVolume using buffer reuse
30
+ * Replaces the old reloadMaskToLayer approach
31
+ */
32
+ reloadMasksFromVolume(): void;
33
+ /******************************** redraw display canvas ***************************************/
34
+ /**
35
+ * Redraw current contrast image to display canvas.
36
+ * It is more related to change the contrast slice image's window width or center.
37
+ */
38
+ redrawDisplayCanvas(): void;
39
+ redrawMianPreOnDisplayCanvas(): void;
40
+ /**
41
+ * flip the canvas to a correct position.
42
+ * This is because the slice canvas from threejs is not in a correct 2D postion.
43
+ * Thus, everytime when we redraw the display canvas, we need to flip to draw the origin canvas from threejs.
44
+ * Under different axis(sagittal, Axial, Coronal), the flip orientation is different.
45
+ */
46
+ flipDisplayImageByAxis(): void;
47
+ /**
48
+ * Set the empty canvas width and height based on the axis (pixel distance not the mm), to reduce duplicate codes.
49
+ *
50
+ * @param axis
51
+ */
52
+ setEmptyCanvasSize(axis?: "x" | "y" | "z"): void;
53
+ /**
54
+ * Clear masks on drawingCanvas layers.
55
+ */
56
+ resetLayerCanvas(): void;
57
+ /****************************View/Canvas Helpers****************************************************/
58
+ /**
59
+ * Resize the draw and display canvas size based on the input size factor number.
60
+ * @param factor number
61
+ */
62
+ resizePaintArea(factor: number): void;
63
+ /**
64
+ * Reset the draw and display canvases layout after mouse pan.
65
+ * If no params in, then center the draw and display canvases.
66
+ * @param l number, Offset to the left
67
+ * @param t number, Offset to the top
68
+ */
69
+ resetPaintAreaUIPosition(l?: number, t?: number): void;
70
+ /**
71
+ * Update the original canvas size, allow set to threejs load one (pixel distance not the mm).
72
+ * Then update the changedWidth and changedHeight based on the sizeFactor.
73
+ */
74
+ updateOriginAndChangedWH(): void;
75
+ /**
76
+ * Keep all contrast slice index to same.
77
+ * Synchronize the slice indexes of all the contrasts so that they are consistent with the main slice's index.
78
+ */
79
+ setSyncsliceNum(): void;
80
+ }