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.
Files changed (134) hide show
  1. package/README.md +197 -875
  2. package/dist/Utils/segmentation/CanvasState.d.ts +31 -0
  3. package/dist/Utils/segmentation/CanvasState.js +167 -0
  4. package/dist/Utils/segmentation/CanvasState.js.map +1 -0
  5. package/dist/Utils/segmentation/DragOperator.d.ts +10 -2
  6. package/dist/Utils/segmentation/DragOperator.js +16 -8
  7. package/dist/Utils/segmentation/DragOperator.js.map +1 -1
  8. package/dist/Utils/segmentation/DrawToolCore.d.ts +64 -35
  9. package/dist/Utils/segmentation/DrawToolCore.js +332 -584
  10. package/dist/Utils/segmentation/DrawToolCore.js.map +1 -1
  11. package/dist/Utils/segmentation/NrrdTools.d.ts +117 -353
  12. package/dist/Utils/segmentation/NrrdTools.js +622 -1081
  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 +180 -0
  16. package/dist/Utils/segmentation/RenderingUtils.js.map +1 -0
  17. package/dist/Utils/segmentation/core/MaskVolume.js +23 -2
  18. package/dist/Utils/segmentation/core/MaskVolume.js.map +1 -1
  19. package/dist/Utils/segmentation/core/UndoManager.d.ts +1 -1
  20. package/dist/Utils/segmentation/core/UndoManager.js +1 -1
  21. package/dist/Utils/segmentation/core/index.d.ts +1 -3
  22. package/dist/Utils/segmentation/core/index.js +0 -1
  23. package/dist/Utils/segmentation/core/index.js.map +1 -1
  24. package/dist/Utils/segmentation/core/types.d.ts +384 -0
  25. package/dist/Utils/segmentation/core/types.js +25 -24
  26. package/dist/Utils/segmentation/core/types.js.map +1 -1
  27. package/dist/Utils/segmentation/coreTools/GuiState.d.ts +22 -0
  28. package/dist/Utils/segmentation/coreTools/GuiState.js +48 -0
  29. package/dist/Utils/segmentation/coreTools/GuiState.js.map +1 -0
  30. package/dist/Utils/segmentation/coreTools/NrrdState.d.ts +25 -0
  31. package/dist/Utils/segmentation/coreTools/NrrdState.js +85 -0
  32. package/dist/Utils/segmentation/coreTools/NrrdState.js.map +1 -0
  33. package/dist/Utils/segmentation/coreTools/divControlTools.d.ts +1 -1
  34. package/dist/Utils/segmentation/coreTools/divControlTools.js +1 -1
  35. package/dist/Utils/segmentation/coreTools/divControlTools.js.map +1 -1
  36. package/dist/Utils/segmentation/coreTools/gui.d.ts +12 -12
  37. package/dist/Utils/segmentation/coreTools/gui.js +81 -107
  38. package/dist/Utils/segmentation/coreTools/gui.js.map +1 -1
  39. package/dist/Utils/segmentation/eventRouter/EventRouter.d.ts +2 -1
  40. package/dist/Utils/segmentation/eventRouter/EventRouter.js +15 -10
  41. package/dist/Utils/segmentation/eventRouter/EventRouter.js.map +1 -1
  42. package/dist/Utils/segmentation/eventRouter/types.d.ts +3 -3
  43. package/dist/Utils/segmentation/tools/BaseTool.d.ts +8 -5
  44. package/dist/Utils/segmentation/tools/BaseTool.js +1 -2
  45. package/dist/Utils/segmentation/tools/BaseTool.js.map +1 -1
  46. package/dist/Utils/segmentation/tools/ContrastTool.d.ts +3 -6
  47. package/dist/Utils/segmentation/tools/ContrastTool.js.map +1 -1
  48. package/dist/Utils/segmentation/tools/CrosshairTool.d.ts +11 -1
  49. package/dist/Utils/segmentation/tools/CrosshairTool.js +50 -25
  50. package/dist/Utils/segmentation/tools/CrosshairTool.js.map +1 -1
  51. package/dist/Utils/segmentation/tools/DataLoader.d.ts +33 -0
  52. package/dist/Utils/segmentation/tools/DataLoader.js +159 -0
  53. package/dist/Utils/segmentation/tools/DataLoader.js.map +1 -0
  54. package/dist/Utils/segmentation/tools/DragSliceTool.d.ts +3 -10
  55. package/dist/Utils/segmentation/tools/DragSliceTool.js +63 -53
  56. package/dist/Utils/segmentation/tools/DragSliceTool.js.map +1 -1
  57. package/dist/Utils/segmentation/tools/DrawingTool.d.ts +85 -0
  58. package/dist/Utils/segmentation/tools/DrawingTool.js +270 -0
  59. package/dist/Utils/segmentation/tools/DrawingTool.js.map +1 -0
  60. package/dist/Utils/segmentation/tools/EraserTool.js +8 -8
  61. package/dist/Utils/segmentation/tools/EraserTool.js.map +1 -1
  62. package/dist/Utils/segmentation/tools/ImageStoreHelper.d.ts +13 -33
  63. package/dist/Utils/segmentation/tools/ImageStoreHelper.js +39 -82
  64. package/dist/Utils/segmentation/tools/ImageStoreHelper.js.map +1 -1
  65. package/dist/Utils/segmentation/tools/LayerChannelManager.d.ts +52 -0
  66. package/dist/Utils/segmentation/tools/LayerChannelManager.js +175 -0
  67. package/dist/Utils/segmentation/tools/LayerChannelManager.js.map +1 -0
  68. package/dist/Utils/segmentation/tools/PanTool.d.ts +47 -0
  69. package/dist/Utils/segmentation/tools/PanTool.js +90 -0
  70. package/dist/Utils/segmentation/tools/PanTool.js.map +1 -0
  71. package/dist/Utils/segmentation/tools/SliceRenderPipeline.d.ts +80 -0
  72. package/dist/Utils/segmentation/tools/SliceRenderPipeline.js +355 -0
  73. package/dist/Utils/segmentation/tools/SliceRenderPipeline.js.map +1 -0
  74. package/dist/Utils/segmentation/tools/SphereTool.d.ts +223 -10
  75. package/dist/Utils/segmentation/tools/SphereTool.js +512 -47
  76. package/dist/Utils/segmentation/tools/SphereTool.js.map +1 -1
  77. package/dist/Utils/segmentation/tools/ToolHost.d.ts +74 -0
  78. package/dist/Utils/segmentation/tools/ToolHost.js +10 -0
  79. package/dist/Utils/segmentation/tools/ToolHost.js.map +1 -0
  80. package/dist/Utils/segmentation/tools/ZoomTool.d.ts +2 -6
  81. package/dist/Utils/segmentation/tools/ZoomTool.js +3 -3
  82. package/dist/Utils/segmentation/tools/ZoomTool.js.map +1 -1
  83. package/dist/Utils/segmentation/tools/index.d.ts +8 -6
  84. package/dist/Utils/segmentation/tools/index.js +10 -1
  85. package/dist/Utils/segmentation/tools/index.js.map +1 -1
  86. package/dist/Utils/workers/reformatSaveDataWorker.d.ts +1 -1
  87. package/dist/bundle.esm.js +3729 -3017
  88. package/dist/bundle.umd.js +3729 -3017
  89. package/dist/index.d.ts +6 -3
  90. package/dist/index.js +1 -1
  91. package/dist/index.js.map +1 -1
  92. package/dist/types/Utils/segmentation/CanvasState.d.ts +31 -0
  93. package/dist/types/Utils/segmentation/DragOperator.d.ts +10 -2
  94. package/dist/types/Utils/segmentation/DrawToolCore.d.ts +64 -35
  95. package/dist/types/Utils/segmentation/NrrdTools.d.ts +117 -353
  96. package/dist/types/Utils/segmentation/RenderingUtils.d.ts +73 -0
  97. package/dist/types/Utils/segmentation/core/UndoManager.d.ts +1 -1
  98. package/dist/types/Utils/segmentation/core/index.d.ts +1 -3
  99. package/dist/types/Utils/segmentation/core/types.d.ts +384 -0
  100. package/dist/types/Utils/segmentation/coreTools/GuiState.d.ts +22 -0
  101. package/dist/types/Utils/segmentation/coreTools/NrrdState.d.ts +25 -0
  102. package/dist/types/Utils/segmentation/coreTools/divControlTools.d.ts +1 -1
  103. package/dist/types/Utils/segmentation/coreTools/gui.d.ts +12 -12
  104. package/dist/types/Utils/segmentation/eventRouter/EventRouter.d.ts +2 -1
  105. package/dist/types/Utils/segmentation/eventRouter/types.d.ts +3 -3
  106. package/dist/types/Utils/segmentation/tools/BaseTool.d.ts +8 -5
  107. package/dist/types/Utils/segmentation/tools/ContrastTool.d.ts +3 -6
  108. package/dist/types/Utils/segmentation/tools/CrosshairTool.d.ts +11 -1
  109. package/dist/types/Utils/segmentation/tools/DataLoader.d.ts +33 -0
  110. package/dist/types/Utils/segmentation/tools/DragSliceTool.d.ts +3 -10
  111. package/dist/types/Utils/segmentation/tools/DrawingTool.d.ts +85 -0
  112. package/dist/types/Utils/segmentation/tools/ImageStoreHelper.d.ts +13 -33
  113. package/dist/types/Utils/segmentation/tools/LayerChannelManager.d.ts +52 -0
  114. package/dist/types/Utils/segmentation/tools/PanTool.d.ts +47 -0
  115. package/dist/types/Utils/segmentation/tools/SliceRenderPipeline.d.ts +80 -0
  116. package/dist/types/Utils/segmentation/tools/SphereTool.d.ts +223 -10
  117. package/dist/types/Utils/segmentation/tools/ToolHost.d.ts +74 -0
  118. package/dist/types/Utils/segmentation/tools/ZoomTool.d.ts +2 -6
  119. package/dist/types/Utils/segmentation/tools/index.d.ts +8 -6
  120. package/dist/types/Utils/workers/reformatSaveDataWorker.d.ts +1 -1
  121. package/dist/types/index.d.ts +6 -3
  122. package/package.json +1 -1
  123. package/dist/Utils/segmentation/CommToolsData.d.ts +0 -177
  124. package/dist/Utils/segmentation/CommToolsData.js +0 -548
  125. package/dist/Utils/segmentation/CommToolsData.js.map +0 -1
  126. package/dist/Utils/segmentation/core/MigrationUtils.d.ts +0 -97
  127. package/dist/Utils/segmentation/core/MigrationUtils.js +0 -163
  128. package/dist/Utils/segmentation/core/MigrationUtils.js.map +0 -1
  129. package/dist/Utils/segmentation/coreTools/coreType.d.ts +0 -363
  130. package/dist/Utils/segmentation/coreTools/coreType.js +0 -3
  131. package/dist/Utils/segmentation/coreTools/coreType.js.map +0 -1
  132. package/dist/types/Utils/segmentation/CommToolsData.d.ts +0 -177
  133. package/dist/types/Utils/segmentation/core/MigrationUtils.d.ts +0 -97
  134. package/dist/types/Utils/segmentation/coreTools/coreType.d.ts +0 -363
package/dist/index.d.ts CHANGED
@@ -17,10 +17,13 @@ import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls"
17
17
  import { MeshNodeTool } from "./Utils/MeshNodeTool";
18
18
  import { removeGuiFolderChilden } from "./Utils/segmentation/coreTools/gui";
19
19
  import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, exportPaintImageType, IOptVTKLoader } from "./types/types";
20
- import { IPaintImage, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates } from "./Utils/segmentation/coreTools/coreType";
20
+ import { IPaintImage, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates, IGuiMeta } from "./Utils/segmentation/core/types";
21
+ import { NrrdState } from "./Utils/segmentation/coreTools/NrrdState";
22
+ import { GuiState } from "./Utils/segmentation/coreTools/GuiState";
23
+ import type { ToolMode, IAnnotationCallbacks } from "./Utils/segmentation/core/types";
21
24
  import { CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss } from "./Utils/segmentation/core/index";
22
25
  import type { LayerId, ChannelValue } from "./Utils/segmentation/core/index";
23
26
  import "./css/style.css";
24
- export declare const REVISION = "v3.0.1-beta";
27
+ export declare const REVISION = "v3.1.0-beta";
25
28
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss, };
26
- export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates, LayerId, ChannelValue, };
29
+ export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates, NrrdState, GuiState, IGuiMeta, ToolMode, IAnnotationCallbacks, LayerId, ChannelValue, };
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ import { MeshNodeTool } from "./Utils/MeshNodeTool";
20
20
  import { removeGuiFolderChilden } from "./Utils/segmentation/coreTools/gui";
21
21
  import { CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss } from "./Utils/segmentation/core/index";
22
22
  import "./css/style.css";
23
- export const REVISION = "v3.0.1-beta";
23
+ export const REVISION = "v3.1.0-beta";
24
24
  console.log(`%cCopper3D Visualisation %cBeta:${REVISION}`, "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
25
25
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss, };
26
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,eAAe,EAGf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAY,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,iDAAiD;AAEjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAc5E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG3G,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC;AAEtC,OAAO,CAAC,GAAG,CACT,mCAAmC,QAAQ,EAAE,EAC7C,8CAA8C,EAC9C,8CAA8C,CAC/C,CAAC;AAEF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,SAAS,EACT,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,GACV,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,eAAe,EAGf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAY,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,iDAAiD;AAEjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAiB5E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG3G,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC;AAEtC,OAAO,CAAC,GAAG,CACT,mCAAmC,QAAQ,EAAE,EAC7C,8CAA8C,EAC9C,8CAA8C,CAC/C,CAAC;AAEF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,SAAS,EACT,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,GACV,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { IProtected, ICursorPage, IKeyBoardSettings, IAnnotationCallbacks } from "./core/types";
2
+ import { NrrdState } from "./coreTools/NrrdState";
3
+ import { GuiState } from "./coreTools/GuiState";
4
+ /**
5
+ * CanvasState — Pure state container.
6
+ *
7
+ * Holds all shared mutable state that was previously scattered across the
8
+ * CommToolsData base class. No rendering logic lives here; rendering is
9
+ * handled by {@link RenderingUtils}.
10
+ *
11
+ * Created once by NrrdTools and shared (by reference) with DrawToolCore,
12
+ * RenderingUtils, DragOperator, and all legacy Tool instances.
13
+ */
14
+ export declare class CanvasState {
15
+ baseCanvasesSize: number;
16
+ /** External annotation callbacks — set via draw() options */
17
+ annotationCallbacks: IAnnotationCallbacks;
18
+ /** Whether the keyboard-config dialog is open (suppresses all shortcuts). */
19
+ configKeyBoard: boolean;
20
+ /** Active keyboard shortcut bindings. */
21
+ keyboardSettings: IKeyBoardSettings;
22
+ nrrd_states: NrrdState;
23
+ gui_states: GuiState;
24
+ protectedData: IProtected;
25
+ cursorPage: ICursorPage;
26
+ constructor(container: HTMLElement, mainAreaContainer: HTMLElement, options?: {
27
+ layers?: string[];
28
+ });
29
+ private generateSystemCanvases;
30
+ private generateLayerTargets;
31
+ }
@@ -1,4 +1,6 @@
1
- import { IDragOpts, IDrawingEvents, IProtected, IGUIStates, INrrdStates } from "./coreTools/coreType";
1
+ import { IDragOpts, IDrawingEvents, IProtected } from "./core/types";
2
+ import { NrrdState } from "./coreTools/NrrdState";
3
+ import { GuiState } from "./coreTools/GuiState";
2
4
  import type { EventRouter } from "./eventRouter";
3
5
  export declare class DragOperator {
4
6
  container: HTMLElement;
@@ -16,10 +18,16 @@ export declare class DragOperator {
16
18
  private setEmptyCanvasSize;
17
19
  private getOrCreateSliceBuffer;
18
20
  private renderSliceToCanvas;
21
+ private refreshSphereOverlayCb;
19
22
  private eventRouter;
20
- constructor(container: HTMLElement, nrrd_sates: INrrdStates, gui_states: IGUIStates, protectedData: IProtected, drawingPrameters: IDrawingEvents, setSyncsliceNum: () => void, setIsDrawFalse: (target: number) => void, flipDisplayImageByAxis: () => void, setEmptyCanvasSize: (axis?: "x" | "y" | "z") => void, getOrCreateSliceBuffer: (axis: "x" | "y" | "z") => ImageData | null, renderSliceToCanvas: (layer: string, axis: "x" | "y" | "z", sliceIndex: number, buffer: ImageData, targetCtx: CanvasRenderingContext2D, scaledWidth: number, scaledHeight: number) => void);
23
+ constructor(container: HTMLElement, nrrd_sates: NrrdState, gui_states: GuiState, protectedData: IProtected, drawingPrameters: IDrawingEvents, setSyncsliceNum: () => void, setIsDrawFalse: (target: number) => void, flipDisplayImageByAxis: () => void, setEmptyCanvasSize: (axis?: "x" | "y" | "z") => void, getOrCreateSliceBuffer: (axis: "x" | "y" | "z") => ImageData | null, renderSliceToCanvas: (layer: string, axis: "x" | "y" | "z", sliceIndex: number, buffer: ImageData, targetCtx: CanvasRenderingContext2D, scaledWidth: number, scaledHeight: number) => void);
21
24
  private init;
22
25
  setShowDragNumberDiv(sliceIndexContainer: HTMLDivElement): void;
26
+ /**
27
+ * Set the sphere overlay refresh callback.
28
+ * Called by NrrdTools after DrawToolCore is initialized.
29
+ */
30
+ setRefreshSphereOverlay(cb: () => void): void;
23
31
  /**
24
32
  * Set the EventRouter reference for centralized event handling.
25
33
  * Called by NrrdTools/DrawToolCore after EventRouter is initialized.
@@ -1,51 +1,66 @@
1
- import { IConvertObjType, IDrawingEvents, IContrastEvents, IDrawOpts } from "./coreTools/coreType";
2
- import { CommToolsData } from "./CommToolsData";
1
+ import { IConvertObjType, IDrawingEvents, IContrastEvents, IDrawOpts } from "./core/types";
2
+ import { CanvasState } from "./CanvasState";
3
+ import { RenderingUtils } from "./RenderingUtils";
3
4
  import { EventRouter } from "./eventRouter";
4
5
  import { SphereTool } from "./tools/SphereTool";
5
6
  import { CrosshairTool } from "./tools/CrosshairTool";
6
7
  import { ContrastTool } from "./tools/ContrastTool";
7
8
  import { ZoomTool } from "./tools/ZoomTool";
8
9
  import { EraserTool } from "./tools/EraserTool";
10
+ import { PanTool } from "./tools/PanTool";
11
+ import { DrawingTool } from "./tools/DrawingTool";
9
12
  import { ImageStoreHelper } from "./tools/ImageStoreHelper";
10
13
  import { UndoManager } from "./core";
11
- export declare class DrawToolCore extends CommToolsData {
14
+ /**
15
+ * DrawToolCore — Tool orchestration and event routing.
16
+ *
17
+ * Previously extended CommToolsData; now uses composition:
18
+ * - `state: CanvasState` — pure state container
19
+ * - `renderer: RenderingUtils` — rendering / slice-buffer helpers
20
+ *
21
+ * Created by NrrdTools which passes in a shared CanvasState.
22
+ */
23
+ export declare class DrawToolCore {
12
24
  container: HTMLElement;
13
25
  mainAreaContainer: HTMLDivElement;
26
+ /** Shared state container (created by NrrdTools, passed in). */
27
+ readonly state: CanvasState;
28
+ /** Rendering utilities (created here, uses shared state). */
29
+ readonly renderer: RenderingUtils;
14
30
  drawingPrameters: IDrawingEvents;
15
31
  contrastEventPrameters: IContrastEvents;
16
32
  eraserUrls: string[];
17
33
  pencilUrls: string[];
18
34
  undoManager: UndoManager;
19
- /** Snapshot of the active layer's slice captured on mouse-down (before drawing). */
20
- private preDrawSlice;
21
- private preDrawAxis;
22
- private preDrawSliceIndex;
23
- protected eventRouter: EventRouter | null;
24
- protected sphereTool: SphereTool;
25
- protected crosshairTool: CrosshairTool;
35
+ eventRouter: EventRouter;
36
+ sphereTool: SphereTool;
37
+ crosshairTool: CrosshairTool;
26
38
  protected contrastTool: ContrastTool;
27
39
  protected zoomTool: ZoomTool;
28
40
  protected eraserTool: EraserTool;
41
+ protected panTool: PanTool;
42
+ protected drawingTool: DrawingTool;
29
43
  protected imageStoreHelper: ImageStoreHelper;
44
+ /** Slice index recorded when paintOnCanvas() starts, guards stale-click */
45
+ private paintSliceIndex;
46
+ /** Wheel event dispatch mode — replaces manual wheel add/remove (Phase 2) */
47
+ private activeWheelMode;
30
48
  start: () => void;
31
- constructor(container: HTMLElement, options?: {
32
- layers?: string[];
33
- });
49
+ constructor(container: HTMLElement, state: CanvasState);
34
50
  private initTools;
35
51
  private initDrawToolCore;
36
52
  setEraserUrls(urls: string[]): void;
37
53
  setPencilIconUrls(urls: string[]): void;
38
54
  private setCurrentLayer;
39
55
  draw(opts?: IDrawOpts): void;
40
- drawCalSphereDown(x: number, y: number, sliceIndex: number, cal_position: "tumour" | "skin" | "nipple" | "ribcage"): void;
41
- drawCalSphereUp(): void;
42
56
  private zoomActionAfterDrawSphere;
43
- private clearSpherePrintStoreImages;
44
57
  private paintOnCanvas;
45
- /*************************************May consider to move outside *******************************************/
46
- private drawLine;
47
- private drawLinesOnLayer;
48
- private paintOnCanvasLayer;
58
+ /**
59
+ * Extracted from paintOnCanvas() pointerleave handler.
60
+ */
61
+ private handlePointerLeave;
62
+ /** Extracted from paintOnCanvas() — handles sphere placement on left-click */
63
+ private handleSphereClick;
49
64
  private initAllCanvas;
50
65
  private useEraser;
51
66
  configMouseZoomWheel(): (e: WheelEvent) => void;
@@ -54,10 +69,13 @@ export declare class DrawToolCore extends CommToolsData {
54
69
  drawImageOnEmptyImage(canvas: HTMLCanvasElement): void;
55
70
  /****************************Sphere functions (delegated to SphereTool)****************************************************/
56
71
  drawCalculatorSphereOnEachViews(axis: "x" | "y" | "z"): void;
57
- private drawSphereOnEachViews;
58
72
  private configMouseSphereWheel;
59
73
  drawCalculatorSphere(radius: number): void;
60
74
  drawSphere(mouseX: number, mouseY: number, radius: number): void;
75
+ /**
76
+ * Refresh sphere canvas from sphereMaskVolume for the current slice/axis.
77
+ */
78
+ refreshSphereOverlay(): void;
61
79
  /**
62
80
  * Convert cursor point between axis views.
63
81
  * Delegated to CrosshairTool.
@@ -68,38 +86,49 @@ export declare class DrawToolCore extends CommToolsData {
68
86
  getRestLayer(): string[];
69
87
  /**************************** Undo/Redo functions (Phase 6 — Delta-based) ****************************/
70
88
  /**
71
- * Clear mask on current slice canvas.
72
- *
73
- * Only clears the active layer's MaskVolume slice data.
74
- * Other layers are left untouched. After clearing, all layer canvases
75
- * are re-rendered from MaskVolume to keep visuals in sync.
89
+ * Clear the mask on the current slice canvas for the active layer ONLY.
76
90
  */
77
- clearPaint(): void;
91
+ clearActiveSlice(): void;
78
92
  /**
79
93
  * Undo the last drawing operation on the active layer.
80
- * Restores the MaskVolume slice to its pre-draw state, re-renders
81
- * the canvas, and notifies the backend.
82
94
  */
83
95
  undoLastPainting(): void;
84
96
  /**
85
97
  * Redo the last undone operation on the active layer.
86
- * Reapplies the MaskVolume slice to its post-draw state, re-renders
87
- * the canvas, and notifies the backend.
88
98
  */
89
99
  redoLastPainting(): void;
90
100
  /**
91
101
  * Re-render a layer canvas from MaskVolume and composite to master.
92
- * Called after writing oldSlice/newSlice back to the volume during undo/redo.
93
102
  */
94
103
  private applyUndoRedoToCanvas;
95
104
  /****************************Store images (delegated to ImageStoreHelper)****************************************************/
96
- storeAllImages(index: number, layer: string): void;
97
- storeImageToLayer(index: number, canvas: HTMLCanvasElement): ImageData;
98
- storeEachLayerImage(index: number, layer: string): void;
105
+ syncLayerSliceData(index: number, layer: string): void;
99
106
  /******************************** Utils gui related functions (delegated to ContrastTool) ***************************************/
100
107
  setupConrastEvents(callback: (step: number, towards: "horizental" | "vertical") => void): void;
101
108
  configContrastDragMode: () => void;
102
109
  removeContrastDragMode: () => void;
103
110
  updateSlicesContrast: (value: number, flag: string) => void;
104
111
  repraintCurrentContrastSlice: () => void;
112
+ /** Override in NrrdTools */
113
+ setIsDrawFalse(target: number): void;
114
+ /** Override in NrrdTools */
115
+ setSyncsliceNum(): void;
116
+ /** Override in NrrdTools */
117
+ resetPaintAreaUIPosition(l?: number, t?: number): void;
118
+ /** Override in NrrdTools */
119
+ resizePaintArea(factor: number): void;
120
+ /** Override in NrrdTools */
121
+ setEmptyCanvasSize(axis?: "x" | "y" | "z"): void;
122
+ /** Override in NrrdTools */
123
+ flipDisplayImageByAxis(): void;
124
+ /** Override in NrrdTools */
125
+ updateOriginAndChangedWH(): void;
126
+ /** Override in NrrdTools */
127
+ resetLayerCanvas(): void;
128
+ /** Override in NrrdTools */
129
+ redrawDisplayCanvas(): void;
130
+ /** Override in NrrdTools */
131
+ enterSphereMode(): void;
132
+ /** Override in NrrdTools */
133
+ exitSphereMode(): void;
105
134
  }