@cornerstonejs/tools 2.0.0-beta.28 → 2.0.0-beta.29

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 (63) hide show
  1. package/dist/esm/constants/COLOR_LUT.d.ts +2 -1
  2. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +1 -1
  3. package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js +0 -1
  4. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedListener.d.ts +3 -0
  5. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedListener.js +6 -0
  6. package/dist/esm/init.js +4 -0
  7. package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +22 -12
  8. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +1 -0
  9. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +63 -25
  10. package/dist/esm/stateManagement/segmentation/SegmentationStyle.d.ts +22 -25
  11. package/dist/esm/stateManagement/segmentation/SegmentationStyle.js +138 -77
  12. package/dist/esm/stateManagement/segmentation/activeSegmentation.js +0 -4
  13. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +5 -5
  14. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +12 -8
  15. package/dist/esm/stateManagement/segmentation/config/styleHelpers.d.ts +17 -31
  16. package/dist/esm/stateManagement/segmentation/config/styleHelpers.js +14 -37
  17. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.d.ts +1 -1
  18. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.js +4 -14
  19. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +2 -0
  20. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +10 -0
  21. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +2 -0
  22. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +10 -0
  23. package/dist/esm/stateManagement/segmentation/getActiveSegmentIndex.js +3 -1
  24. package/dist/esm/stateManagement/segmentation/getGlobalStyle.js +1 -1
  25. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.js +0 -1
  26. package/dist/esm/stateManagement/segmentation/helpers/internalGetHiddenSegmentIndices.d.ts +5 -0
  27. package/dist/esm/stateManagement/segmentation/helpers/internalGetHiddenSegmentIndices.js +14 -0
  28. package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +13 -6
  29. package/dist/esm/stateManagement/segmentation/index.d.ts +3 -1
  30. package/dist/esm/stateManagement/segmentation/index.js +3 -1
  31. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.js +9 -8
  32. package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +1 -1
  33. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +0 -1
  34. package/dist/esm/stateManagement/segmentation/removeSegment.d.ts +3 -0
  35. package/dist/esm/stateManagement/segmentation/removeSegment.js +50 -0
  36. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.d.ts +1 -1
  37. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +10 -12
  38. package/dist/esm/stateManagement/segmentation/segmentIndex.js +18 -2
  39. package/dist/esm/stateManagement/segmentation/segmentLocking.js +7 -11
  40. package/dist/esm/stateManagement/segmentation/setGlobalStyle.js +3 -3
  41. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +3 -1
  42. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +3 -1
  43. package/dist/esm/stateManagement/segmentation/updateSegmentations.d.ts +5 -0
  44. package/dist/esm/stateManagement/segmentation/updateSegmentations.js +11 -0
  45. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +11 -10
  46. package/dist/esm/tools/displayTools/Contour/contourConfig.js +2 -2
  47. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +1 -5
  48. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +3 -3
  49. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +38 -29
  50. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +2 -2
  51. package/dist/esm/tools/segmentation/BrushTool.js +4 -1
  52. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +1 -1
  53. package/dist/esm/types/ContourTypes.d.ts +15 -8
  54. package/dist/esm/types/EventTypes.d.ts +6 -0
  55. package/dist/esm/types/LabelmapTypes.d.ts +9 -6
  56. package/dist/esm/types/SegmentationStateTypes.d.ts +31 -21
  57. package/dist/esm/types/SurfaceTypes.d.ts +1 -0
  58. package/dist/esm/types/index.d.ts +6 -4
  59. package/dist/esm/utilities/dynamicVolume/generateImageFromTimeData.d.ts +8 -2
  60. package/dist/esm/utilities/dynamicVolume/generateImageFromTimeData.js +51 -24
  61. package/dist/esm/utilities/dynamicVolume/index.d.ts +2 -2
  62. package/dist/esm/utilities/dynamicVolume/index.js +2 -2
  63. package/package.json +3 -3
@@ -1,40 +1,40 @@
1
1
  import { Enums } from '@cornerstonejs/core';
2
2
  const operationFunctions = {
3
- [Enums.GenerateImageType.SUM]: (voxelManager, frames, arrayLength) => {
4
- const finalArray = new Float32Array(arrayLength);
5
- for (const timepoint of frames) {
6
- for (let j = 0; j < arrayLength; j++) {
7
- finalArray[j] += voxelManager.getAtIndexAndTimePoint(j, timepoint);
3
+ [Enums.GenerateImageType.SUM]: (voxelManager, frames, callback) => {
4
+ const arrayLength = voxelManager.getScalarDataLength();
5
+ for (let j = 0; j < arrayLength; j++) {
6
+ let sum = 0;
7
+ for (const timepoint of frames) {
8
+ sum += voxelManager.getAtIndexAndTimePoint(j, timepoint);
8
9
  }
10
+ callback(j, sum);
9
11
  }
10
- return finalArray;
11
12
  },
12
- [Enums.GenerateImageType.SUBTRACT]: (voxelManager, frames, arrayLength) => {
13
+ [Enums.GenerateImageType.SUBTRACT]: (voxelManager, frames, callback) => {
13
14
  if (frames.length !== 2) {
14
15
  throw new Error('Please provide only 2 time points for subtraction.');
15
16
  }
16
- const finalArray = new Float32Array(arrayLength);
17
+ const arrayLength = voxelManager.getScalarDataLength();
17
18
  for (let j = 0; j < arrayLength; j++) {
18
- finalArray[j] =
19
- voxelManager.getAtIndexAndTimePoint(j, frames[0]) -
20
- voxelManager.getAtIndexAndTimePoint(j, frames[1]);
19
+ const difference = voxelManager.getAtIndexAndTimePoint(j, frames[0]) -
20
+ voxelManager.getAtIndexAndTimePoint(j, frames[1]);
21
+ callback(j, difference);
21
22
  }
22
- return finalArray;
23
23
  },
24
- [Enums.GenerateImageType.AVERAGE]: (voxelManager, frames, arrayLength) => {
25
- const finalArray = new Float32Array(arrayLength);
26
- for (const timepoint of frames) {
27
- for (let j = 0; j < arrayLength; j++) {
28
- finalArray[j] += voxelManager.getAtIndexAndTimePoint(j, timepoint);
24
+ [Enums.GenerateImageType.AVERAGE]: (voxelManager, frames, callback) => {
25
+ const arrayLength = voxelManager.getScalarDataLength();
26
+ for (let j = 0; j < arrayLength; j++) {
27
+ let sum = 0;
28
+ for (const timepoint of frames) {
29
+ sum += voxelManager.getAtIndexAndTimePoint(j, timepoint);
29
30
  }
31
+ const average = sum / frames.length;
32
+ callback(j, average);
30
33
  }
31
- for (let k = 0; k < arrayLength; k++) {
32
- finalArray[k] /= frames.length;
33
- }
34
- return finalArray;
35
34
  },
36
35
  };
37
- function generateImageFromTimeData(dynamicVolume, operation, frameNumbers) {
36
+ function generateImageFromTimeData(dynamicVolume, operation, options) {
37
+ const { frameNumbers } = options;
38
38
  const frames = frameNumbers || [...Array(dynamicVolume.numTimePoints).keys()];
39
39
  if (frames.length <= 1) {
40
40
  throw new Error('Please provide two or more time points');
@@ -45,6 +45,33 @@ function generateImageFromTimeData(dynamicVolume, operation, frameNumbers) {
45
45
  if (!operationFunction) {
46
46
  throw new Error(`Unsupported operation: ${operation}`);
47
47
  }
48
- return operationFunction(voxelManager, frames, arrayLength);
48
+ const resultArray = new Float32Array(arrayLength);
49
+ operationFunction(voxelManager, frames, (index, value) => {
50
+ resultArray[index] = value;
51
+ });
52
+ return resultArray;
53
+ }
54
+ function updateVolumeFromTimeData(dynamicVolume, operation, options) {
55
+ const { frameNumbers, targetVolume } = options;
56
+ if (!targetVolume) {
57
+ throw new Error('A target volume must be provided');
58
+ }
59
+ const frames = frameNumbers || [...Array(dynamicVolume.numTimePoints).keys()];
60
+ if (frames.length <= 1) {
61
+ throw new Error('Please provide two or more time points');
62
+ }
63
+ const voxelManager = dynamicVolume.voxelManager;
64
+ const targetVoxelManager = targetVolume.voxelManager;
65
+ const operationFunction = operationFunctions[operation];
66
+ if (!operationFunction) {
67
+ throw new Error(`Unsupported operation: ${operation}`);
68
+ }
69
+ operationFunction(voxelManager, frames, (index, value) => {
70
+ targetVoxelManager.setAtIndex(index, value);
71
+ });
72
+ targetVoxelManager.resetModifiedSlices();
73
+ for (let k = 0; k < targetVolume.dimensions[2]; k++) {
74
+ targetVoxelManager.modifiedSlices.add(k);
75
+ }
49
76
  }
50
- export default generateImageFromTimeData;
77
+ export { generateImageFromTimeData, updateVolumeFromTimeData };
@@ -1,4 +1,4 @@
1
1
  import getDataInTime from './getDataInTime';
2
- import generateImageFromTimeData from './generateImageFromTimeData';
2
+ import { generateImageFromTimeData, updateVolumeFromTimeData } from './generateImageFromTimeData';
3
3
  export { getDataInTime };
4
- export { generateImageFromTimeData };
4
+ export { generateImageFromTimeData, updateVolumeFromTimeData };
@@ -1,4 +1,4 @@
1
1
  import getDataInTime from './getDataInTime';
2
- import generateImageFromTimeData from './generateImageFromTimeData';
2
+ import { generateImageFromTimeData, updateVolumeFromTimeData, } from './generateImageFromTimeData';
3
3
  export { getDataInTime };
4
- export { generateImageFromTimeData };
4
+ export { generateImageFromTimeData, updateVolumeFromTimeData };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/tools",
3
- "version": "2.0.0-beta.28",
3
+ "version": "2.0.0-beta.29",
4
4
  "description": "Cornerstone3D Tools",
5
5
  "main": "dist/umd/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -97,7 +97,7 @@
97
97
  "webpack:watch": "webpack --mode development --progress --watch --config ./.webpack/webpack.dev.js"
98
98
  },
99
99
  "dependencies": {
100
- "@cornerstonejs/core": "^2.0.0-beta.28",
100
+ "@cornerstonejs/core": "^2.0.0-beta.29",
101
101
  "@types/offscreencanvas": "2019.7.3",
102
102
  "comlink": "^4.4.1",
103
103
  "lodash.get": "^4.4.2"
@@ -124,5 +124,5 @@
124
124
  "type": "individual",
125
125
  "url": "https://ohif.org/donate"
126
126
  },
127
- "gitHead": "f07f340e5b63d3afdda66bfe35c9cef729a5b69d"
127
+ "gitHead": "fd9316cac241522bc5c43d267e41c7a4e36bec96"
128
128
  }