copper3d 2.2.3 → 3.0.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.
Files changed (111) hide show
  1. package/README.md +1056 -5
  2. package/dist/Scene/copperScene.d.ts +3 -0
  3. package/dist/Scene/copperScene.js +13 -0
  4. package/dist/Scene/copperScene.js.map +1 -1
  5. package/dist/Utils/segmentation/CommToolsData.d.ts +109 -6
  6. package/dist/Utils/segmentation/CommToolsData.js +314 -50
  7. package/dist/Utils/segmentation/CommToolsData.js.map +1 -1
  8. package/dist/Utils/segmentation/DragOperator.d.ts +13 -7
  9. package/dist/Utils/segmentation/DragOperator.js +51 -165
  10. package/dist/Utils/segmentation/DragOperator.js.map +1 -1
  11. package/dist/Utils/segmentation/DrawToolCore.d.ts +57 -76
  12. package/dist/Utils/segmentation/DrawToolCore.js +368 -878
  13. package/dist/Utils/segmentation/DrawToolCore.js.map +1 -1
  14. package/dist/Utils/segmentation/NrrdTools.d.ts +277 -15
  15. package/dist/Utils/segmentation/NrrdTools.js +594 -232
  16. package/dist/Utils/segmentation/NrrdTools.js.map +1 -1
  17. package/dist/Utils/segmentation/core/MaskVolume.d.ts +477 -0
  18. package/dist/Utils/segmentation/core/MaskVolume.js +1238 -0
  19. package/dist/Utils/segmentation/core/MaskVolume.js.map +1 -0
  20. package/dist/Utils/segmentation/core/MigrationUtils.d.ts +97 -0
  21. package/dist/Utils/segmentation/core/MigrationUtils.js +163 -0
  22. package/dist/Utils/segmentation/core/MigrationUtils.js.map +1 -0
  23. package/dist/Utils/segmentation/core/UndoManager.d.ts +47 -0
  24. package/dist/Utils/segmentation/core/UndoManager.js +86 -0
  25. package/dist/Utils/segmentation/core/UndoManager.js.map +1 -0
  26. package/dist/Utils/segmentation/core/index.d.ts +76 -0
  27. package/dist/Utils/segmentation/core/index.js +75 -0
  28. package/dist/Utils/segmentation/core/index.js.map +1 -0
  29. package/dist/Utils/segmentation/core/types.d.ts +106 -0
  30. package/dist/Utils/segmentation/core/types.js +98 -0
  31. package/dist/Utils/segmentation/core/types.js.map +1 -0
  32. package/dist/Utils/segmentation/coreTools/coreType.d.ts +55 -36
  33. package/dist/Utils/segmentation/coreTools/coreType.js.map +1 -1
  34. package/dist/Utils/segmentation/coreTools/gui.d.ts +6 -16
  35. package/dist/Utils/segmentation/coreTools/gui.js +23 -27
  36. package/dist/Utils/segmentation/coreTools/gui.js.map +1 -1
  37. package/dist/Utils/segmentation/eventRouter/EventRouter.d.ts +144 -0
  38. package/dist/Utils/segmentation/eventRouter/EventRouter.js +369 -0
  39. package/dist/Utils/segmentation/eventRouter/EventRouter.js.map +1 -0
  40. package/dist/Utils/segmentation/eventRouter/index.d.ts +7 -0
  41. package/dist/Utils/segmentation/eventRouter/index.js +7 -0
  42. package/dist/Utils/segmentation/eventRouter/index.js.map +1 -0
  43. package/dist/Utils/segmentation/eventRouter/types.d.ts +70 -0
  44. package/dist/Utils/segmentation/eventRouter/types.js +7 -0
  45. package/dist/Utils/segmentation/eventRouter/types.js.map +1 -0
  46. package/dist/Utils/segmentation/tools/BaseTool.d.ts +25 -0
  47. package/dist/Utils/segmentation/tools/BaseTool.js +18 -0
  48. package/dist/Utils/segmentation/tools/BaseTool.js.map +1 -0
  49. package/dist/Utils/segmentation/tools/ContrastTool.d.ts +26 -0
  50. package/dist/Utils/segmentation/tools/ContrastTool.js +118 -0
  51. package/dist/Utils/segmentation/tools/ContrastTool.js.map +1 -0
  52. package/dist/Utils/segmentation/tools/CrosshairTool.d.ts +30 -0
  53. package/dist/Utils/segmentation/tools/CrosshairTool.js +157 -0
  54. package/dist/Utils/segmentation/tools/CrosshairTool.js.map +1 -0
  55. package/dist/Utils/segmentation/tools/DragSliceTool.d.ts +44 -0
  56. package/dist/Utils/segmentation/tools/DragSliceTool.js +170 -0
  57. package/dist/Utils/segmentation/tools/DragSliceTool.js.map +1 -0
  58. package/dist/Utils/segmentation/tools/EraserTool.d.ts +16 -0
  59. package/dist/Utils/segmentation/tools/EraserTool.js +92 -0
  60. package/dist/Utils/segmentation/tools/EraserTool.js.map +1 -0
  61. package/dist/Utils/segmentation/tools/ImageStoreHelper.d.ts +65 -0
  62. package/dist/Utils/segmentation/tools/ImageStoreHelper.js +174 -0
  63. package/dist/Utils/segmentation/tools/ImageStoreHelper.js.map +1 -0
  64. package/dist/Utils/segmentation/tools/SphereTool.d.ts +38 -0
  65. package/dist/Utils/segmentation/tools/SphereTool.js +193 -0
  66. package/dist/Utils/segmentation/tools/SphereTool.js.map +1 -0
  67. package/dist/Utils/segmentation/tools/ZoomTool.d.ts +20 -0
  68. package/dist/Utils/segmentation/tools/ZoomTool.js +59 -0
  69. package/dist/Utils/segmentation/tools/ZoomTool.js.map +1 -0
  70. package/dist/Utils/segmentation/tools/index.d.ts +22 -0
  71. package/dist/Utils/segmentation/tools/index.js +23 -0
  72. package/dist/Utils/segmentation/tools/index.js.map +1 -0
  73. package/dist/bundle.esm.js +4740 -1979
  74. package/dist/bundle.umd.js +4743 -1978
  75. package/dist/index.d.ts +5 -3
  76. package/dist/index.js +4 -2
  77. package/dist/index.js.map +1 -1
  78. package/dist/types/Renderer/copperRenderer.d.ts +1 -1
  79. package/dist/types/Renderer/copperRendererOnDemond.d.ts +1 -1
  80. package/dist/types/Scene/copperScene.d.ts +3 -0
  81. package/dist/types/Utils/segmentation/CommToolsData.d.ts +109 -6
  82. package/dist/types/Utils/segmentation/DragOperator.d.ts +13 -7
  83. package/dist/types/Utils/segmentation/DrawToolCore.d.ts +57 -76
  84. package/dist/types/Utils/segmentation/NrrdTools.d.ts +277 -15
  85. package/dist/types/Utils/segmentation/core/MaskVolume.d.ts +477 -0
  86. package/dist/types/Utils/segmentation/core/MigrationUtils.d.ts +97 -0
  87. package/dist/types/Utils/segmentation/core/UndoManager.d.ts +47 -0
  88. package/dist/types/Utils/segmentation/core/index.d.ts +76 -0
  89. package/dist/types/Utils/segmentation/core/types.d.ts +106 -0
  90. package/dist/types/Utils/segmentation/coreTools/coreType.d.ts +55 -36
  91. package/dist/types/Utils/segmentation/coreTools/gui.d.ts +6 -16
  92. package/dist/types/Utils/segmentation/eventRouter/EventRouter.d.ts +144 -0
  93. package/dist/types/Utils/segmentation/eventRouter/index.d.ts +7 -0
  94. package/dist/types/Utils/segmentation/eventRouter/types.d.ts +70 -0
  95. package/dist/types/Utils/segmentation/tools/BaseTool.d.ts +25 -0
  96. package/dist/types/Utils/segmentation/tools/ContrastTool.d.ts +26 -0
  97. package/dist/types/Utils/segmentation/tools/CrosshairTool.d.ts +30 -0
  98. package/dist/types/Utils/segmentation/tools/DragSliceTool.d.ts +44 -0
  99. package/dist/types/Utils/segmentation/tools/EraserTool.d.ts +16 -0
  100. package/dist/types/Utils/segmentation/tools/ImageStoreHelper.d.ts +65 -0
  101. package/dist/types/Utils/segmentation/tools/SphereTool.d.ts +38 -0
  102. package/dist/types/Utils/segmentation/tools/ZoomTool.d.ts +20 -0
  103. package/dist/types/Utils/segmentation/tools/index.d.ts +22 -0
  104. package/dist/types/index.d.ts +5 -3
  105. package/dist/types/types/types.d.ts +3 -3
  106. package/dist/types/types.d.ts +3 -3
  107. package/package.json +1 -1
  108. package/dist/Utils/segmentation/coreTools/archive.d.ts +0 -1
  109. package/dist/Utils/segmentation/coreTools/archive.js +0 -23
  110. package/dist/Utils/segmentation/coreTools/archive.js.map +0 -1
  111. package/dist/types/Utils/segmentation/coreTools/archive.d.ts +0 -1
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Core Type Definitions for MaskVolume
3
+ *
4
+ * Shared types for the 3D volumetric mask storage system.
5
+ */
6
+ /**
7
+ * 3D volume dimensions in voxels.
8
+ *
9
+ * Coordinate convention:
10
+ * x = left-right (sagittal axis)
11
+ * y = front-back (coronal axis)
12
+ * z = bottom-top (axial axis / slice direction)
13
+ */
14
+ export interface Dimensions {
15
+ width: number;
16
+ height: number;
17
+ depth: number;
18
+ }
19
+ /**
20
+ * RGBA color with each component in the range [0, 255].
21
+ */
22
+ export interface RGBAColor {
23
+ r: number;
24
+ g: number;
25
+ b: number;
26
+ a: number;
27
+ }
28
+ /**
29
+ * Maps channel indices to RGBA colors.
30
+ */
31
+ export type ChannelColorMap = Record<number, RGBAColor>;
32
+ /**
33
+ * Rendering mode for slice extraction.
34
+ */
35
+ export declare enum RenderMode {
36
+ /** Single channel as grayscale (original behavior). */
37
+ GRAYSCALE = "grayscale",
38
+ /** Single channel with predefined color. */
39
+ COLORED_SINGLE = "colored_single",
40
+ /** All channels composited with colors (last non-zero channel wins). */
41
+ COLORED_MULTI = "colored_multi",
42
+ /** All channels blended (additive). */
43
+ BLENDED = "blended"
44
+ }
45
+ /**
46
+ * Options for slice rendering via `getSliceImageData()`.
47
+ */
48
+ export interface SliceRenderOptions {
49
+ /** Rendering mode (default: GRAYSCALE). */
50
+ mode?: RenderMode;
51
+ /** Specific channel to render (for GRAYSCALE / COLORED_SINGLE modes, default 0). */
52
+ channel?: number;
53
+ /** Custom color map (overrides the volume's default). */
54
+ colorMap?: ChannelColorMap;
55
+ /** Channel visibility mask (for COLORED_MULTI / BLENDED modes). */
56
+ visibleChannels?: boolean[];
57
+ /** Opacity multiplier 0.0 – 1.0 (default 1.0). */
58
+ opacity?: number;
59
+ }
60
+ /**
61
+ * Predefined color palette for mask channels.
62
+ *
63
+ * Based on common medical imaging conventions:
64
+ *
65
+ * | Channel | Role | Color |
66
+ * |---------|---------------------------|----------|
67
+ * | 0 | Background | transparent |
68
+ * | 1 | Primary / Tumor | Green |
69
+ * | 2 | Secondary / Edema | Red |
70
+ * | 3 | Tertiary / Necrosis | Blue |
71
+ * | 4 | Enhancement | Yellow |
72
+ * | 5 | Vessel / Boundary | Magenta |
73
+ * | 6 | Additional region | Cyan |
74
+ * | 7 | Auxiliary annotation | Orange |
75
+ * | 8 | Extended annotation | Purple |
76
+ */
77
+ export declare const MASK_CHANNEL_COLORS: Readonly<ChannelColorMap>;
78
+ /**
79
+ * CSS color strings for the default channel palette (for reference / UI).
80
+ */
81
+ export declare const MASK_CHANNEL_CSS_COLORS: Readonly<Record<number, string>>;
82
+ /**
83
+ * Layer identifier. Any string key is valid — layers are dynamically defined.
84
+ */
85
+ export type LayerId = string;
86
+ /**
87
+ * Channel value (0 = transparent/erased, 1-8 = annotation channels).
88
+ */
89
+ export type ChannelValue = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
90
+ /**
91
+ * Convenience alias for MASK_CHANNEL_CSS_COLORS.
92
+ * Used by Vue components via `Copper.CHANNEL_COLORS[channel]`.
93
+ */
94
+ export declare const CHANNEL_COLORS: Readonly<Record<number, string>>;
95
+ /**
96
+ * Hex color strings for each channel (no alpha), used for fillColor/brushColor.
97
+ */
98
+ export declare const CHANNEL_HEX_COLORS: Readonly<Record<number, string>>;
99
+ /**
100
+ * Convert an RGBAColor to a hex string (no alpha), e.g. '#ff0000'.
101
+ */
102
+ export declare function rgbaToHex(color: RGBAColor): string;
103
+ /**
104
+ * Convert an RGBAColor to a CSS rgba() string, e.g. 'rgba(255,0,0,1.00)'.
105
+ */
106
+ export declare function rgbaToCss(color: RGBAColor): string;
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Core Type Definitions for MaskVolume
3
+ *
4
+ * Shared types for the 3D volumetric mask storage system.
5
+ */
6
+ /**
7
+ * Rendering mode for slice extraction.
8
+ */
9
+ export var RenderMode;
10
+ (function (RenderMode) {
11
+ /** Single channel as grayscale (original behavior). */
12
+ RenderMode["GRAYSCALE"] = "grayscale";
13
+ /** Single channel with predefined color. */
14
+ RenderMode["COLORED_SINGLE"] = "colored_single";
15
+ /** All channels composited with colors (last non-zero channel wins). */
16
+ RenderMode["COLORED_MULTI"] = "colored_multi";
17
+ /** All channels blended (additive). */
18
+ RenderMode["BLENDED"] = "blended";
19
+ })(RenderMode || (RenderMode = {}));
20
+ // ── Predefined Color Constants ──────────────────────────────────────────
21
+ /**
22
+ * Predefined color palette for mask channels.
23
+ *
24
+ * Based on common medical imaging conventions:
25
+ *
26
+ * | Channel | Role | Color |
27
+ * |---------|---------------------------|----------|
28
+ * | 0 | Background | transparent |
29
+ * | 1 | Primary / Tumor | Green |
30
+ * | 2 | Secondary / Edema | Red |
31
+ * | 3 | Tertiary / Necrosis | Blue |
32
+ * | 4 | Enhancement | Yellow |
33
+ * | 5 | Vessel / Boundary | Magenta |
34
+ * | 6 | Additional region | Cyan |
35
+ * | 7 | Auxiliary annotation | Orange |
36
+ * | 8 | Extended annotation | Purple |
37
+ */
38
+ export const MASK_CHANNEL_COLORS = {
39
+ 0: { r: 0, g: 0, b: 0, a: 0 },
40
+ 1: { r: 0, g: 255, b: 0, a: 255 },
41
+ 2: { r: 255, g: 0, b: 0, a: 255 },
42
+ 3: { r: 0, g: 0, b: 255, a: 255 },
43
+ 4: { r: 255, g: 255, b: 0, a: 255 },
44
+ 5: { r: 255, g: 0, b: 255, a: 255 },
45
+ 6: { r: 0, g: 255, b: 255, a: 255 },
46
+ 7: { r: 255, g: 128, b: 0, a: 255 },
47
+ 8: { r: 128, g: 0, b: 255, a: 255 }, // Purple — Extended
48
+ };
49
+ /**
50
+ * CSS color strings for the default channel palette (for reference / UI).
51
+ */
52
+ export const MASK_CHANNEL_CSS_COLORS = {
53
+ 0: 'rgba(0,0,0,0)',
54
+ 1: 'rgba(0,255,0,1)',
55
+ 2: 'rgba(255,0,0,1)',
56
+ 3: 'rgba(0,0,255,1)',
57
+ 4: 'rgba(255,255,0,1)',
58
+ 5: 'rgba(255,0,255,1)',
59
+ 6: 'rgba(0,255,255,1)',
60
+ 7: 'rgba(255,128,0,1)',
61
+ 8: 'rgba(128,0,255,1)', // Purple
62
+ };
63
+ /**
64
+ * Convenience alias for MASK_CHANNEL_CSS_COLORS.
65
+ * Used by Vue components via `Copper.CHANNEL_COLORS[channel]`.
66
+ */
67
+ export const CHANNEL_COLORS = MASK_CHANNEL_CSS_COLORS;
68
+ /**
69
+ * Hex color strings for each channel (no alpha), used for fillColor/brushColor.
70
+ */
71
+ export const CHANNEL_HEX_COLORS = {
72
+ 0: '#000000',
73
+ 1: '#00ff00',
74
+ 2: '#ff0000',
75
+ 3: '#0000ff',
76
+ 4: '#ffff00',
77
+ 5: '#ff00ff',
78
+ 6: '#00ffff',
79
+ 7: '#ff8000',
80
+ 8: '#8000ff', // Purple
81
+ };
82
+ // ── Color Conversion Utilities ──────────────────────────────────────────
83
+ /**
84
+ * Convert an RGBAColor to a hex string (no alpha), e.g. '#ff0000'.
85
+ */
86
+ export function rgbaToHex(color) {
87
+ const r = color.r.toString(16).padStart(2, '0');
88
+ const g = color.g.toString(16).padStart(2, '0');
89
+ const b = color.b.toString(16).padStart(2, '0');
90
+ return `#${r}${g}${b}`;
91
+ }
92
+ /**
93
+ * Convert an RGBAColor to a CSS rgba() string, e.g. 'rgba(255,0,0,1.00)'.
94
+ */
95
+ export function rgbaToCss(color) {
96
+ return `rgba(${color.r},${color.g},${color.b},${(color.a / 255).toFixed(2)})`;
97
+ }
98
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/types.ts"],"names":[],"mappings":"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"}
@@ -63,16 +63,32 @@ interface IPaintImage {
63
63
  index: number;
64
64
  image: ImageData;
65
65
  }
66
- interface IStoredPaintImages {
67
- label1: IPaintImages;
68
- label2: IPaintImages;
69
- label3: IPaintImages;
66
+ /**
67
+ * Import MaskVolume from core module
68
+ * (imported where needed, not here to avoid circular deps)
69
+ */
70
+ type MaskVolume = any;
71
+ /**
72
+ * New mask data structure using MaskVolume for true 3D storage.
73
+ * Dynamic N-layer support: keyed by layer id (e.g. 'layer1', 'layer2', ...).
74
+ */
75
+ type INewMaskData = Record<string, MaskVolume>;
76
+ /**
77
+ * A paired canvas + 2D context for a single annotation layer.
78
+ * Stored atomically in IProtected.layerTargets to prevent canvas/ctx desync.
79
+ */
80
+ interface ILayerRenderTarget {
81
+ canvas: HTMLCanvasElement;
82
+ ctx: CanvasRenderingContext2D;
70
83
  }
84
+ /**
85
+ * Mask data storage using volumetric MaskVolume (Phase 3)
86
+ *
87
+ * Phase 2 legacy ImageData storage has been removed.
88
+ * All mask data now stored in 3D volumes for memory efficiency.
89
+ */
71
90
  type IMaskData = {
72
- paintImagesLabel1: IPaintImages;
73
- paintImagesLabel2: IPaintImages;
74
- paintImagesLabel3: IPaintImages;
75
- paintImages: IPaintImages;
91
+ volumes: INewMaskData;
76
92
  };
77
93
  interface IProtected {
78
94
  container: HTMLElement;
@@ -89,15 +105,14 @@ interface IProtected {
89
105
  axis: "x" | "y" | "z";
90
106
  maskData: IMaskData;
91
107
  previousDrawingImage?: ImageData;
108
+ /** Dynamic per-layer canvas+ctx pairs. Replaces hardcoded LayerOne/Two/Three fields. */
109
+ layerTargets: Map<string, ILayerRenderTarget>;
92
110
  canvases: {
93
111
  originCanvas: HTMLCanvasElement | any;
94
112
  drawingCanvas: HTMLCanvasElement;
95
113
  displayCanvas: HTMLCanvasElement;
96
114
  drawingCanvasLayerMaster: HTMLCanvasElement;
97
- drawingCanvasLayerOne: HTMLCanvasElement;
98
- drawingCanvasLayerTwo: HTMLCanvasElement;
99
115
  drawingSphereCanvas: HTMLCanvasElement;
100
- drawingCanvasLayerThree: HTMLCanvasElement;
101
116
  emptyCanvas: HTMLCanvasElement;
102
117
  };
103
118
  ctxes: {
@@ -106,9 +121,6 @@ interface IProtected {
106
121
  emptyCtx: CanvasRenderingContext2D;
107
122
  drawingSphereCtx: CanvasRenderingContext2D;
108
123
  drawingLayerMasterCtx: CanvasRenderingContext2D;
109
- drawingLayerOneCtx: CanvasRenderingContext2D;
110
- drawingLayerTwoCtx: CanvasRenderingContext2D;
111
- drawingLayerThreeCtx: CanvasRenderingContext2D;
112
124
  };
113
125
  }
114
126
  interface IGUIStates {
@@ -118,12 +130,12 @@ interface IGUIStates {
118
130
  globalAlpha: number;
119
131
  lineWidth: number;
120
132
  color: string;
121
- segmentation: true;
133
+ pencil: boolean;
122
134
  fillColor: string;
123
135
  brushColor: string;
124
136
  brushAndEraserSize: number;
125
137
  cursor: string;
126
- label: string;
138
+ layer: string;
127
139
  cal_distance: "tumour" | "skin" | "nipple" | "ribcage";
128
140
  sphere: boolean;
129
141
  calculator: boolean;
@@ -133,12 +145,20 @@ interface IGUIStates {
133
145
  clear: () => void;
134
146
  clearAll: () => void;
135
147
  undo: () => void;
148
+ redo: () => void;
136
149
  downloadCurrentMask: () => void;
137
150
  resetZoom: () => void;
151
+ /** Currently active channel (1-8). Channel 0 is transparent/erased. */
152
+ activeChannel: number;
153
+ /** Layer visibility state: { layer1: true, layer2: true, layer3: true } */
154
+ layerVisibility: Record<string, boolean>;
155
+ /** Per-layer channel visibility: { layer1: { 1: true, ..., 8: true }, ... } */
156
+ channelVisibility: Record<string, Record<number, boolean>>;
138
157
  }
139
158
  interface IKeyBoardSettings {
140
159
  draw: string;
141
160
  undo: string;
161
+ redo: string;
142
162
  contrast: string[];
143
163
  crosshair: string;
144
164
  mouseWheel: "Scroll:Zoom" | "Scroll:Slice";
@@ -164,7 +184,6 @@ interface INrrdStates {
164
184
  dimensions: number[];
165
185
  loadMaskJson: boolean;
166
186
  ratios: ICommXYZ;
167
- sharedPlace: ICommXYZ;
168
187
  contrastNum: number;
169
188
  showContrast: boolean;
170
189
  enableCursorChoose: boolean;
@@ -191,10 +210,15 @@ interface INrrdStates {
191
210
  previousPanelL: number;
192
211
  previousPanelT: number;
193
212
  switchSliceFlag: boolean;
194
- labels: ["label1", "label2", "label3"];
195
- configKeyBoard: boolean;
196
- keyboardSettings: IKeyBoardSettings;
197
- getMask: (mask: ImageData, sliceId: number, label: string, width: number, height: number, clearAllFlag: boolean) => void;
213
+ layers: string[];
214
+ getMask: (sliceData: Uint8Array, layerId: string, channelId: number, sliceIndex: number, axis: "x" | "y" | "z", width: number, height: number, clearFlag: boolean) => void;
215
+ onClearLayerVolume: (layerId: string) => void;
216
+ onChannelColorChanged: (layerId: string, channel: number, color: {
217
+ r: number;
218
+ g: number;
219
+ b: number;
220
+ a: number;
221
+ }) => void;
198
222
  getSphere: (sphereOrigin: number[], sphereRadius: number) => void;
199
223
  getCalculateSpherePositions: (tumourSphereOrigin: ICommXYZ | null, skinSphereOrigin: ICommXYZ | null, ribSphereOrigin: ICommXYZ | null, nippleSphereOrigin: ICommXYZ | null, aixs: "x" | "y" | "z") => void;
200
224
  drawStartPos: ICommXY;
@@ -204,19 +228,11 @@ interface IDragOpts {
204
228
  getSliceNum?: (index: number, contrastNum: number) => void;
205
229
  }
206
230
  interface IDrawOpts {
207
- getMaskData?: (mask: ImageData, sliceId: number, label: string, width: number, height: number, clearAllFlag?: boolean) => void;
231
+ getMaskData?: (sliceData: Uint8Array, layerId: string, channelId: number, sliceIndex: number, axis: "x" | "y" | "z", width: number, height: number, clearFlag?: boolean) => void;
232
+ onClearLayerVolume?: (layerId: string) => void;
208
233
  getSphereData?: (sphereOrigin: number[], sphereRadius: number) => void;
209
234
  getCalculateSpherePositionsData?: (tumourSphereOrigin: ICommXYZ | null, skinSphereOrigin: ICommXYZ | null, ribSphereOrigin: ICommXYZ | null, nippleSphereOrigin: ICommXYZ | null, aixs: "x" | "y" | "z") => void;
210
235
  }
211
- type UndoLayerType = {
212
- label1: Array<HTMLImageElement>;
213
- label2: Array<HTMLImageElement>;
214
- label3: Array<HTMLImageElement>;
215
- };
216
- interface IUndoType {
217
- sliceIndex: number;
218
- layers: UndoLayerType;
219
- }
220
236
  interface ICursorPage {
221
237
  x: {
222
238
  cursorPageX: number;
@@ -244,7 +260,7 @@ interface IGuiParameterSettings {
244
260
  max: number;
245
261
  step: number;
246
262
  };
247
- segmentation: {
263
+ pencil: {
248
264
  name: "Pencil";
249
265
  onChange: () => void;
250
266
  };
@@ -280,6 +296,9 @@ interface IGuiParameterSettings {
280
296
  undo: {
281
297
  name: "Undo";
282
298
  };
299
+ redo: {
300
+ name: "Redo";
301
+ };
283
302
  resetZoom: {
284
303
  name: "ResetZoom";
285
304
  };
@@ -302,9 +321,9 @@ interface IGuiParameterSettings {
302
321
  onFinished: () => void;
303
322
  };
304
323
  advance: {
305
- label: {
306
- name: "Label";
307
- value: ["label1", "label2", "label3"];
324
+ layer: {
325
+ name: "Layer";
326
+ value: string[];
308
327
  };
309
328
  cursor: {
310
329
  name: "CursorIcon";
@@ -344,4 +363,4 @@ interface IGuiParameterSettings {
344
363
  };
345
364
  };
346
365
  }
347
- export { ICommXYZ, ICommXY, IDownloadImageConfig, IConvertObjType, IDragPrameters, IDrawingEvents, IContrastEvents, IProtected, IGUIStates, IDragOpts, IDrawOpts, INrrdStates, IPaintImage, IPaintImages, IStoredPaintImages, ISkipSlicesDictType, IMaskData, IUndoType, ICursorPage, IGuiParameterSettings };
366
+ export { ICommXYZ, ICommXY, IDownloadImageConfig, IConvertObjType, IDragPrameters, IDrawingEvents, IContrastEvents, IProtected, IGUIStates, IDragOpts, IDrawOpts, INrrdStates, IPaintImage, IPaintImages, ISkipSlicesDictType, IMaskData, INewMaskData, ILayerRenderTarget, ICursorPage, IGuiParameterSettings, IKeyBoardSettings };
@@ -1 +1 @@
1
- {"version":3,"file":"coreType.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/coreTools/coreType.ts"],"names":[],"mappings":"AAgYC,CAAC"}
1
+ {"version":3,"file":"coreType.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/coreTools/coreType.ts"],"names":[],"mappings":"AAqZC,CAAC"}
@@ -11,6 +11,7 @@ interface IConfigGUI {
11
11
  protectedData: IProtected;
12
12
  eraserUrls: string[];
13
13
  pencilUrls: string[];
14
+ getVolumeForLayer: (layer: string) => any;
14
15
  mainPreSlices: any;
15
16
  removeDragMode: () => void;
16
17
  configDragMode: () => void;
@@ -24,26 +25,15 @@ interface IConfigGUI {
24
25
  setSyncsliceNum: () => void;
25
26
  resetLayerCanvas: () => void;
26
27
  redrawDisplayCanvas: () => void;
27
- reloadMaskToLabel: (paintImages: IPaintImages, ctx: CanvasRenderingContext2D) => void;
28
28
  flipDisplayImageByAxis: () => void;
29
- filterDrawedImage: (axis: "x" | "y" | "z", sliceIndex: number, paintedImages: IPaintImages) => IPaintImage;
29
+ filterDrawedImage: (axis: "x" | "y" | "z", sliceIndex: number) => IPaintImage | undefined;
30
30
  setEmptyCanvasSize: (axis?: "x" | "y" | "z") => void;
31
- storeAllImages: (index: number, label: string) => void;
31
+ storeAllImages: (index: number, layer: string) => void;
32
32
  drawImageOnEmptyImage: (canvas: HTMLCanvasElement) => void;
33
- checkSharedPlaceSlice: (width: number, height: number, imageData: ImageData) => Uint8ClampedArray;
34
- replaceArray: (mainArr: number[] | Uint8ClampedArray, replaceArr: number[] | Uint8ClampedArray) => void;
35
- findSliceInSharedPlace: () => ImageData[];
36
- sliceArrayH: (arr: Uint8ClampedArray, row: number, col: number) => Uint8ClampedArray[];
37
- sliceArrayV: (arr: Uint8ClampedArray, row: number, col: number) => number[][];
38
- storeImageToAxis: (index: number, paintedImages: IPaintImages, imageData: ImageData, axis?: "x" | "y" | "z") => void;
39
- replaceVerticalColPixels: (paintImageArray: IPaintImage[], length: number, ratio: number, markedArr: number[][] | Uint8ClampedArray[], targetWidth: number, convertIndex: number) => void;
40
- replaceHorizontalRowPixels: (paintImageArray: IPaintImage[], length: number, ratio: number, markedArr: number[][] | Uint8ClampedArray[], targetWidth: number, convertIndex: number) => void;
41
- storeEachLayerImage: (index: number, label: string) => void;
42
- storeImageToLabel: (index: number, canvas: HTMLCanvasElement, paintedImages: IPaintImages) => ImageData;
43
- getRestLabel: () => ("label1" | "label2" | "label3")[];
33
+ storeEachLayerImage: (index: number, layer: string) => void;
34
+ storeImageToLayer: (index: number, canvas: HTMLCanvasElement, paintedImages: IPaintImages) => ImageData;
35
+ getRestLayer: () => string[];
44
36
  setIsDrawFalse: (target: number) => void;
45
- initPaintImages: (dimensions: Array<number>) => void;
46
- createEmptyPaintImage: (dimensions: Array<number>, paintImages: IPaintImages) => void;
47
37
  }
48
38
  declare function setupGui(configs: IConfigGUI): IGuiParameterSettings;
49
39
  declare function removeGuiFolderChilden(modeFolder: GUI): void;
@@ -1,4 +1,5 @@
1
1
  import { switchEraserSize, switchPencilIcon } from "../../utils";
2
+ import { CHANNEL_HEX_COLORS, rgbaToHex } from "../core";
2
3
  function setupGui(configs) {
3
4
  if (configs.modeFolder.__controllers.length > 0)
4
5
  removeGuiFolderChilden(configs.modeFolder);
@@ -11,7 +12,7 @@ function setupGui(configs) {
11
12
  .max(1)
12
13
  .step(0.01);
13
14
  actionsFolder
14
- .add(configs.gui_states, "segmentation")
15
+ .add(configs.gui_states, "pencil")
15
16
  .name("Pencil")
16
17
  .onChange(() => {
17
18
  updatePencilState();
@@ -43,6 +44,7 @@ function setupGui(configs) {
43
44
  actionsFolder.add(configs.gui_states, "clear").name("Clear");
44
45
  actionsFolder.add(configs.gui_states, "clearAll").name("ClearAll");
45
46
  actionsFolder.add(configs.gui_states, "undo").name("Undo");
47
+ actionsFolder.add(configs.gui_states, "redo").name("Redo");
46
48
  actionsFolder.add(configs.gui_states, "resetZoom").name("ResetZoom");
47
49
  actionsFolder
48
50
  .add(configs.mainPreSlices.volume, "windowHigh", configs.mainPreSlices.volume.min, configs.mainPreSlices.volume.max, 1)
@@ -56,26 +58,22 @@ function setupGui(configs) {
56
58
  const advanceFolder = configs.modeFolder.addFolder("AdvanceSettings");
57
59
  advanceFolder
58
60
  .add(configs.gui_states, "cal_distance", ["tumour", "skin", "ribcage", "nipple"])
59
- .name("Label")
61
+ .name("Layer")
60
62
  .onChange((val) => {
61
63
  updateCalDistance(val);
62
64
  });
63
65
  advanceFolder
64
- .add(configs.gui_states, "label", ["label1", "label2", "label3"])
65
- .name("Label")
66
- .onChange((val) => {
67
- if (val === "label1") {
68
- configs.gui_states.fillColor = "#00ff00";
69
- configs.gui_states.brushColor = "#00ff00";
70
- }
71
- else if (val === "label2") {
72
- configs.gui_states.fillColor = "#ff0000";
73
- configs.gui_states.brushColor = "#ff0000";
74
- }
75
- else if (val === "label3") {
76
- configs.gui_states.fillColor = "#0000ff";
77
- configs.gui_states.brushColor = "#0000ff";
78
- }
66
+ .add(configs.gui_states, "layer", ["layer1", "layer2", "layer3"])
67
+ .name("Layer")
68
+ .onChange((_val) => {
69
+ // Get color from the active layer's volume (respects custom per-layer colors)
70
+ const channel = configs.gui_states.activeChannel || 1;
71
+ const volume = configs.getVolumeForLayer(configs.gui_states.layer);
72
+ const hexColor = volume
73
+ ? rgbaToHex(volume.getChannelColor(channel))
74
+ : (CHANNEL_HEX_COLORS[channel] || '#00ff00');
75
+ configs.gui_states.fillColor = hexColor;
76
+ configs.gui_states.brushColor = hexColor;
79
77
  });
80
78
  advanceFolder
81
79
  .add(configs.gui_states, "cursor", ["crosshair", "pencil", "dot"])
@@ -92,9 +90,6 @@ function setupGui(configs) {
92
90
  .max(8)
93
91
  .onFinishChange((factor) => {
94
92
  configs.setMainAreaSize(factor);
95
- // configs.resetPaintAreaUIPosition();
96
- // configs.nrrd_states.sizeFoctor = factor;
97
- // configs.resizePaintArea(factor);
98
93
  });
99
94
  advanceFolder
100
95
  .add(configs.gui_states, "dragSensitivity")
@@ -115,12 +110,10 @@ function setupGui(configs) {
115
110
  .name("FillColor");
116
111
  const bushFolder = advanceFolder.addFolder("BrushSettings");
117
112
  bushFolder.addColor(configs.gui_states, "brushColor").name("BrushColor");
118
- // modeFolder.add(stateMode, "EraserSize").min(1).max(50).step(1);
119
113
  const maskFolder = advanceFolder.addFolder("MaskDownload");
120
114
  maskFolder
121
115
  .add(configs.gui_states, "downloadCurrentMask")
122
116
  .name("DownloadCurrentMask");
123
- // maskFolder.add(configs.gui_states, "exportMarks").name("ExportMask");
124
117
  const contrastFolder = advanceFolder.addFolder("ContrastAdvanceSettings");
125
118
  contrastFolder
126
119
  .add(configs.mainPreSlices.volume, "lowerThreshold", configs.mainPreSlices.volume.min, configs.mainPreSlices.volume.max, 1)
@@ -163,7 +156,7 @@ function setupGui(configs) {
163
156
  }
164
157
  };
165
158
  const updatePencilState = () => {
166
- if (configs.gui_states.segmentation) {
159
+ if (configs.gui_states.pencil) {
167
160
  // add canvas brush circle move event listeners
168
161
  configs.drawingCanvas.removeEventListener("mouseover", configs.drawingPrameters.handleOnDrawingBrushCricleMove);
169
162
  configs.drawingCanvas.removeEventListener("mouseout", configs.drawingPrameters.handleOnDrawingBrushCricleMove);
@@ -262,7 +255,7 @@ function setupGui(configs) {
262
255
  max: 1,
263
256
  step: 0.01,
264
257
  },
265
- segmentation: {
258
+ pencil: {
266
259
  name: "Pencil",
267
260
  onChange: updatePencilState,
268
261
  },
@@ -298,6 +291,9 @@ function setupGui(configs) {
298
291
  undo: {
299
292
  name: "Undo",
300
293
  },
294
+ redo: {
295
+ name: "Redo",
296
+ },
301
297
  resetZoom: {
302
298
  name: "ResetZoom",
303
299
  },
@@ -320,9 +316,9 @@ function setupGui(configs) {
320
316
  onFinished: updateGuiImageContrastOnFinished,
321
317
  },
322
318
  advance: {
323
- label: {
324
- name: "Label",
325
- value: ["label1", "label2", "label3"],
319
+ layer: {
320
+ name: "Layer",
321
+ value: ["layer1", "layer2", "layer3"],
326
322
  },
327
323
  cursor: {
328
324
  name: "CursorIcon",
@@ -1 +1 @@
1
- {"version":3,"file":"gui.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/coreTools/gui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gui.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/coreTools/gui.ts"],"names":[],"mappings":"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"}