@cornerstonejs/tools 0.27.1 → 0.28.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 (173) hide show
  1. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -2
  2. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
  3. package/dist/cjs/eventListeners/segmentation/segmentationModifiedEventListener.js +1 -1
  4. package/dist/cjs/eventListeners/segmentation/segmentationModifiedEventListener.js.map +1 -1
  5. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +1 -1
  6. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js.map +1 -1
  7. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +1 -1
  8. package/dist/cjs/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js.map +1 -1
  9. package/dist/cjs/index.d.ts +2 -2
  10. package/dist/cjs/index.js +2 -1
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js +0 -9
  13. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  14. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.d.ts +6 -1
  15. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js +42 -4
  16. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
  17. package/dist/cjs/stateManagement/segmentation/config/index.d.ts +2 -2
  18. package/dist/cjs/stateManagement/segmentation/config/index.js +5 -1
  19. package/dist/cjs/stateManagement/segmentation/config/index.js.map +1 -1
  20. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.d.ts +2 -1
  21. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js +9 -1
  22. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
  23. package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.d.ts +6 -2
  24. package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.js +18 -2
  25. package/dist/cjs/stateManagement/segmentation/config/segmentationConfig.js.map +1 -1
  26. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.d.ts +2 -1
  27. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js +39 -1
  28. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
  29. package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.d.ts +1 -1
  30. package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.js +6 -7
  31. package/dist/cjs/stateManagement/segmentation/removeSegmentationsFromToolGroup.js.map +1 -1
  32. package/dist/cjs/stateManagement/segmentation/segmentationState.d.ts +8 -3
  33. package/dist/cjs/stateManagement/segmentation/segmentationState.js +44 -16
  34. package/dist/cjs/stateManagement/segmentation/segmentationState.js.map +1 -1
  35. package/dist/cjs/store/SynchronizerManager/Synchronizer.js +29 -18
  36. package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
  37. package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +2 -0
  38. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +30 -5
  39. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
  40. package/dist/cjs/store/ToolGroupManager/destroyToolGroup.js +2 -0
  41. package/dist/cjs/store/ToolGroupManager/destroyToolGroup.js.map +1 -1
  42. package/dist/cjs/store/removeEnabledElement.js +1 -1
  43. package/dist/cjs/store/removeEnabledElement.js.map +1 -1
  44. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.d.ts +3 -0
  45. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +72 -0
  46. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -0
  47. package/dist/cjs/synchronizers/index.d.ts +2 -1
  48. package/dist/cjs/synchronizers/index.js +3 -1
  49. package/dist/cjs/synchronizers/index.js.map +1 -1
  50. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +2 -0
  51. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js +15 -0
  52. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js.map +1 -0
  53. package/dist/cjs/synchronizers/synchronizers/index.d.ts +2 -1
  54. package/dist/cjs/synchronizers/synchronizers/index.js +3 -1
  55. package/dist/cjs/synchronizers/synchronizers/index.js.map +1 -1
  56. package/dist/cjs/tools/CrosshairsTool.d.ts +6 -1
  57. package/dist/cjs/tools/CrosshairsTool.js +47 -15
  58. package/dist/cjs/tools/CrosshairsTool.js.map +1 -1
  59. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js +1 -0
  60. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
  61. package/dist/cjs/tools/displayTools/Labelmap/labelmapConfig.js +7 -3
  62. package/dist/cjs/tools/displayTools/Labelmap/labelmapConfig.js.map +1 -1
  63. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.d.ts +2 -2
  64. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +128 -86
  65. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  66. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js +14 -9
  67. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  68. package/dist/cjs/types/LabelmapTypes.d.ts +2 -0
  69. package/dist/cjs/types/SegmentationStateTypes.d.ts +5 -0
  70. package/dist/cjs/utilities/index.d.ts +2 -1
  71. package/dist/cjs/utilities/index.js +3 -1
  72. package/dist/cjs/utilities/index.js.map +1 -1
  73. package/dist/cjs/utilities/segmentation/index.d.ts +2 -1
  74. package/dist/cjs/utilities/segmentation/index.js +3 -1
  75. package/dist/cjs/utilities/segmentation/index.js.map +1 -1
  76. package/dist/cjs/utilities/{triggerSegmentationRender.d.ts → segmentation/triggerSegmentationRender.d.ts} +1 -0
  77. package/dist/cjs/utilities/{triggerSegmentationRender.js → segmentation/triggerSegmentationRender.js} +9 -3
  78. package/dist/cjs/utilities/segmentation/triggerSegmentationRender.js.map +1 -0
  79. package/dist/cjs/utilities/triggerAnnotationRender.d.ts +1 -1
  80. package/dist/cjs/utilities/triggerAnnotationRender.js +6 -2
  81. package/dist/cjs/utilities/triggerAnnotationRender.js.map +1 -1
  82. package/dist/cjs/utilities/viewport/index.d.ts +4 -0
  83. package/dist/cjs/utilities/viewport/index.js +13 -0
  84. package/dist/cjs/utilities/viewport/index.js.map +1 -0
  85. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -2
  86. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
  87. package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js +2 -2
  88. package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js.map +1 -1
  89. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +1 -1
  90. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js.map +1 -1
  91. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +1 -1
  92. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js.map +1 -1
  93. package/dist/esm/index.d.ts +2 -2
  94. package/dist/esm/index.js +2 -2
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/stateManagement/annotation/config/ToolStyle.js +0 -9
  97. package/dist/esm/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  98. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +6 -1
  99. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +42 -4
  100. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
  101. package/dist/esm/stateManagement/segmentation/config/index.d.ts +2 -2
  102. package/dist/esm/stateManagement/segmentation/config/index.js +2 -2
  103. package/dist/esm/stateManagement/segmentation/config/index.js.map +1 -1
  104. package/dist/esm/stateManagement/segmentation/config/segmentationColor.d.ts +2 -1
  105. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +8 -1
  106. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
  107. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.d.ts +6 -2
  108. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +17 -2
  109. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js.map +1 -1
  110. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.d.ts +2 -1
  111. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +15 -1
  112. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
  113. package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.d.ts +1 -1
  114. package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.js +6 -7
  115. package/dist/esm/stateManagement/segmentation/removeSegmentationsFromToolGroup.js.map +1 -1
  116. package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +8 -3
  117. package/dist/esm/stateManagement/segmentation/segmentationState.js +38 -15
  118. package/dist/esm/stateManagement/segmentation/segmentationState.js.map +1 -1
  119. package/dist/esm/store/SynchronizerManager/Synchronizer.js +2 -2
  120. package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
  121. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -0
  122. package/dist/esm/store/ToolGroupManager/ToolGroup.js +30 -5
  123. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
  124. package/dist/esm/store/ToolGroupManager/destroyToolGroup.js +2 -0
  125. package/dist/esm/store/ToolGroupManager/destroyToolGroup.js.map +1 -1
  126. package/dist/esm/store/removeEnabledElement.js +1 -1
  127. package/dist/esm/store/removeEnabledElement.js.map +1 -1
  128. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.d.ts +3 -0
  129. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +58 -0
  130. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -0
  131. package/dist/esm/synchronizers/index.d.ts +2 -1
  132. package/dist/esm/synchronizers/index.js +2 -1
  133. package/dist/esm/synchronizers/index.js.map +1 -1
  134. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +2 -0
  135. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js +9 -0
  136. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js.map +1 -0
  137. package/dist/esm/synchronizers/synchronizers/index.d.ts +2 -1
  138. package/dist/esm/synchronizers/synchronizers/index.js +2 -1
  139. package/dist/esm/synchronizers/synchronizers/index.js.map +1 -1
  140. package/dist/esm/tools/CrosshairsTool.d.ts +6 -1
  141. package/dist/esm/tools/CrosshairsTool.js +47 -15
  142. package/dist/esm/tools/CrosshairsTool.js.map +1 -1
  143. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +2 -1
  144. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
  145. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +7 -3
  146. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js.map +1 -1
  147. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +2 -2
  148. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +119 -76
  149. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  150. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js +14 -9
  151. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  152. package/dist/esm/types/LabelmapTypes.d.ts +2 -0
  153. package/dist/esm/types/SegmentationStateTypes.d.ts +5 -0
  154. package/dist/esm/utilities/index.d.ts +2 -1
  155. package/dist/esm/utilities/index.js +2 -1
  156. package/dist/esm/utilities/index.js.map +1 -1
  157. package/dist/esm/utilities/segmentation/index.d.ts +2 -1
  158. package/dist/esm/utilities/segmentation/index.js +2 -1
  159. package/dist/esm/utilities/segmentation/index.js.map +1 -1
  160. package/dist/esm/utilities/{triggerSegmentationRender.d.ts → segmentation/triggerSegmentationRender.d.ts} +1 -0
  161. package/dist/esm/utilities/{triggerSegmentationRender.js → segmentation/triggerSegmentationRender.js} +9 -3
  162. package/dist/esm/utilities/segmentation/triggerSegmentationRender.js.map +1 -0
  163. package/dist/esm/utilities/triggerAnnotationRender.d.ts +1 -1
  164. package/dist/esm/utilities/triggerAnnotationRender.js +6 -2
  165. package/dist/esm/utilities/triggerAnnotationRender.js.map +1 -1
  166. package/dist/esm/utilities/viewport/index.d.ts +4 -0
  167. package/dist/esm/utilities/viewport/index.js +5 -0
  168. package/dist/esm/utilities/viewport/index.js.map +1 -0
  169. package/dist/umd/index.js +1 -1
  170. package/dist/umd/index.js.map +1 -1
  171. package/package.json +5 -5
  172. package/dist/cjs/utilities/triggerSegmentationRender.js.map +0 -1
  173. package/dist/esm/utilities/triggerSegmentationRender.js.map +0 -1
@@ -12,16 +12,14 @@ const MAX_NUMBER_COLORS = 255;
12
12
  const labelMapConfigCache = new Map();
13
13
  async function addSegmentationRepresentation(toolGroupId, representationInput, toolGroupSpecificConfig) {
14
14
  const { segmentationId } = representationInput;
15
- const segmentation = SegmentationState.getSegmentation(segmentationId);
16
- const { volumeId } = segmentation.representationData[Representations.Labelmap];
17
15
  const segmentationRepresentationUID = utilities.uuidv4();
18
- await _addLabelmapToToolGroupViewports(toolGroupId, volumeId, segmentationRepresentationUID);
19
16
  const segmentsHidden = new Set();
20
17
  const visibility = true;
21
18
  const colorLUTIndex = 0;
22
19
  const active = true;
23
20
  const cfun = vtkColorTransferFunction.newInstance();
24
21
  const ofun = vtkPiecewiseFunction.newInstance();
22
+ ofun.addPoint(0, 0);
25
23
  const toolGroupSpecificRepresentation = {
26
24
  segmentationId,
27
25
  segmentationRepresentationUID,
@@ -30,13 +28,14 @@ async function addSegmentationRepresentation(toolGroupId, representationInput, t
30
28
  visibility,
31
29
  colorLUTIndex,
32
30
  active,
31
+ segmentationRepresentationSpecificConfig: {},
32
+ segmentSpecificConfig: {},
33
33
  config: {
34
34
  cfun,
35
35
  ofun,
36
36
  },
37
37
  };
38
38
  if (toolGroupSpecificConfig) {
39
- const suppressEvents = true;
40
39
  const currentToolGroupConfig = SegmentationConfig.getToolGroupSpecificConfig(toolGroupId);
41
40
  const mergedConfig = deepMerge(currentToolGroupConfig, toolGroupSpecificConfig);
42
41
  SegmentationConfig.setToolGroupSpecificConfig(toolGroupId, {
@@ -49,12 +48,19 @@ async function addSegmentationRepresentation(toolGroupId, representationInput, t
49
48
  SegmentationState.addSegmentationRepresentation(toolGroupId, toolGroupSpecificRepresentation);
50
49
  return segmentationRepresentationUID;
51
50
  }
52
- function removeSegmentationRepresentation(toolGroupId, segmentationRepresentationUID) {
51
+ function removeSegmentationRepresentation(toolGroupId, segmentationRepresentationUID, renderImmediate = false) {
53
52
  _removeLabelmapFromToolGroupViewports(toolGroupId, segmentationRepresentationUID);
54
53
  SegmentationState.removeSegmentationRepresentation(toolGroupId, segmentationRepresentationUID);
54
+ if (renderImmediate) {
55
+ const viewportsInfo = getToolGroup(toolGroupId).getViewportsInfo();
56
+ viewportsInfo.forEach(({ viewportId, renderingEngineId }) => {
57
+ const enabledElement = getEnabledElementByIds(viewportId, renderingEngineId);
58
+ enabledElement.viewport.render();
59
+ });
60
+ }
55
61
  }
56
- function render(viewport, representation, toolGroupConfig) {
57
- const { colorLUTIndex, active, segmentationId, segmentationRepresentationUID, visibility, config: renderingConfig, } = representation;
62
+ async function render(viewport, representation, toolGroupConfig) {
63
+ const { colorLUTIndex, active, segmentationId, segmentationRepresentationUID, visibility, segmentsHidden, config: renderingConfig, } = representation;
58
64
  const segmentation = SegmentationState.getSegmentation(segmentationId);
59
65
  const labelmapData = segmentation.representationData[Representations.Labelmap];
60
66
  const { volumeId: labelmapUID } = labelmapData;
@@ -62,84 +68,131 @@ function render(viewport, representation, toolGroupConfig) {
62
68
  if (!labelmap) {
63
69
  throw new Error(`No Labelmap found for volumeId: ${labelmapUID}`);
64
70
  }
65
- const actorEntry = viewport.getActor(segmentationRepresentationUID);
71
+ let actorEntry = viewport.getActor(segmentationRepresentationUID);
66
72
  if (!actorEntry) {
67
- console.warn('No actor found for actorUID: ', segmentationRepresentationUID);
68
- return;
73
+ const segmentation = SegmentationState.getSegmentation(segmentationId);
74
+ const { volumeId } = segmentation.representationData[Representations.Labelmap];
75
+ await _addLabelmapToViewport(viewport, volumeId, segmentationRepresentationUID);
76
+ actorEntry = viewport.getActor(segmentationRepresentationUID);
69
77
  }
70
78
  const { cfun, ofun } = renderingConfig;
71
- const labelmapConfig = toolGroupConfig.representations[Representations.Labelmap];
72
79
  const renderInactiveSegmentations = toolGroupConfig.renderInactiveSegmentations;
73
- _setLabelmapColorAndOpacity(viewport.id, actorEntry, cfun, ofun, colorLUTIndex, labelmapConfig, active, renderInactiveSegmentations, visibility);
80
+ _setLabelmapColorAndOpacity(viewport.id, actorEntry, cfun, ofun, colorLUTIndex, toolGroupConfig.representations[Representations.Labelmap], representation, active, renderInactiveSegmentations, segmentsHidden, visibility);
74
81
  }
75
- function _setLabelmapColorAndOpacity(viewportId, actorEntry, cfun, ofun, colorLUTIndex, labelmapConfig, isActiveLabelmap, renderInactiveSegmentations, visibility = true) {
76
- ofun.addPoint(0, 0);
77
- const fillAlpha = isActiveLabelmap
78
- ? labelmapConfig.fillAlpha
79
- : labelmapConfig.fillAlphaInactive;
80
- const outlineWidth = isActiveLabelmap
81
- ? labelmapConfig.outlineWidthActive
82
- : labelmapConfig.outlineWidthInactive;
83
- const renderFill = isActiveLabelmap
84
- ? labelmapConfig.renderFill
85
- : labelmapConfig.renderFillInactive;
82
+ function _setLabelmapColorAndOpacity(viewportId, actorEntry, cfun, ofun, colorLUTIndex, toolGroupLabelmapConfig, segmentationRepresentation, isActiveLabelmap, renderInactiveSegmentations, segmentsHidden, visibility = true) {
83
+ const { segmentSpecificConfig, segmentationRepresentationSpecificConfig } = segmentationRepresentation;
84
+ const segmentationRepresentationLabelmapConfig = segmentationRepresentationSpecificConfig[Representations.Labelmap];
86
85
  const colorLUT = SegmentationState.getColorLUT(colorLUTIndex);
87
86
  const numColors = Math.min(256, colorLUT.length);
88
- const { uid } = actorEntry;
89
87
  const volumeActor = actorEntry.actor;
90
- const { needColorUpdate, needOpacityUpdate } = _needsTransferFunctionUpdate(viewportId, uid, fillAlpha, colorLUTIndex, renderFill);
91
- if (needColorUpdate) {
92
- for (let i = 0; i < numColors; i++) {
93
- const color = colorLUT[i];
94
- cfun.addRGBPoint(i, color[0] / MAX_NUMBER_COLORS, color[1] / MAX_NUMBER_COLORS, color[2] / MAX_NUMBER_COLORS);
88
+ const { uid: actorUID } = actorEntry;
89
+ const { outlineWidth, renderOutline, outlineOpacity } = _getLabelmapConfig(toolGroupLabelmapConfig, segmentationRepresentationLabelmapConfig, isActiveLabelmap);
90
+ for (let i = 0; i < numColors; i++) {
91
+ const segmentIndex = i;
92
+ const segmentColor = colorLUT[segmentIndex];
93
+ const segmentSpecificLabelmapConfig = segmentSpecificConfig[segmentIndex]?.[Representations.Labelmap];
94
+ const { fillAlpha, outlineWidth, renderFill, renderOutline } = _getLabelmapConfig(toolGroupLabelmapConfig, segmentationRepresentationLabelmapConfig, isActiveLabelmap, segmentSpecificLabelmapConfig);
95
+ const { forceOpacityUpdate, forceColorUpdate } = _needsTransferFunctionUpdate(viewportId, actorUID, segmentIndex, {
96
+ fillAlpha,
97
+ renderFill,
98
+ renderOutline,
99
+ segmentColor,
100
+ outlineWidth,
101
+ segmentsHidden,
102
+ });
103
+ if (forceColorUpdate) {
104
+ cfun.addRGBPoint(segmentIndex, segmentColor[0] / MAX_NUMBER_COLORS, segmentColor[1] / MAX_NUMBER_COLORS, segmentColor[2] / MAX_NUMBER_COLORS);
95
105
  }
96
- volumeActor.getProperty().setRGBTransferFunction(0, cfun);
97
- }
98
- if (needOpacityUpdate) {
99
- if (labelmapConfig.renderFill) {
100
- for (let i = 0; i < numColors; i++) {
101
- const color = colorLUT[i];
102
- const segmentOpacity = (color[3] / 255) * fillAlpha;
103
- ofun.addPoint(i, segmentOpacity);
106
+ if (forceOpacityUpdate) {
107
+ if (renderFill) {
108
+ const segmentOpacity = segmentsHidden.has(segmentIndex)
109
+ ? 0
110
+ : (segmentColor[3] / 255) * fillAlpha;
111
+ ofun.removePoint(segmentIndex);
112
+ ofun.addPointLong(segmentIndex, segmentOpacity, 0.5, 1.0);
104
113
  }
105
- }
106
- else {
107
- for (let i = 0; i < numColors; i++) {
108
- ofun.addPoint(i, 0.01);
114
+ else {
115
+ ofun.addPointLong(segmentIndex, 0.01, 0.5, 1.0);
109
116
  }
110
117
  }
111
- ofun.setClamping(false);
112
- volumeActor.getProperty().setScalarOpacity(0, ofun);
113
118
  }
119
+ volumeActor.getProperty().setRGBTransferFunction(0, cfun);
120
+ ofun.setClamping(false);
121
+ volumeActor.getProperty().setScalarOpacity(0, ofun);
114
122
  volumeActor.getProperty().setInterpolationTypeToNearest();
115
- volumeActor.getProperty().setUseLabelOutline(labelmapConfig.renderOutline);
123
+ volumeActor.getProperty().setUseLabelOutline(renderOutline);
124
+ volumeActor.getProperty().setLabelOutlineOpacity(outlineOpacity);
116
125
  volumeActor.getProperty().setLabelOutlineThickness(outlineWidth);
117
126
  const visible = visibility && (isActiveLabelmap || renderInactiveSegmentations);
118
127
  volumeActor.setVisibility(visible);
119
128
  }
120
- function _needsTransferFunctionUpdate(viewportId, actorUID, fillAlpha, colorLUTIndex, renderFill) {
121
- const cacheUID = `${viewportId}-${actorUID}`;
122
- const config = labelMapConfigCache.get(cacheUID);
123
- let needColorUpdate = false;
124
- let needOpacityUpdate = false;
129
+ function _getLabelmapConfig(toolGroupLabelmapConfig, segmentationRepresentationLabelmapConfig, isActiveLabelmap, segmentsLabelmapConfig) {
130
+ const segmentLabelmapConfig = segmentsLabelmapConfig || {};
131
+ const configToUse = {
132
+ ...toolGroupLabelmapConfig,
133
+ ...segmentationRepresentationLabelmapConfig,
134
+ ...segmentLabelmapConfig,
135
+ };
136
+ const fillAlpha = isActiveLabelmap
137
+ ? configToUse.fillAlpha
138
+ : configToUse.fillAlphaInactive;
139
+ const outlineWidth = isActiveLabelmap
140
+ ? configToUse.outlineWidthActive
141
+ : configToUse.outlineWidthInactive;
142
+ const renderFill = isActiveLabelmap
143
+ ? configToUse.renderFill
144
+ : configToUse.renderFillInactive;
145
+ const renderOutline = configToUse.renderOutline;
146
+ const outlineOpacity = isActiveLabelmap
147
+ ? configToUse.outlineOpacity
148
+ : configToUse.outlineOpacityInactive;
149
+ return {
150
+ fillAlpha,
151
+ outlineWidth,
152
+ renderFill,
153
+ renderOutline,
154
+ outlineOpacity,
155
+ };
156
+ }
157
+ function _needsTransferFunctionUpdate(viewportId, actorUID, segmentIndex, { fillAlpha, renderFill, renderOutline, segmentColor, outlineWidth, segmentsHidden, }) {
158
+ const cacheUID = `${viewportId}-${actorUID}-${segmentIndex}`;
159
+ const oldConfig = labelMapConfigCache.get(cacheUID);
160
+ if (!oldConfig) {
161
+ labelMapConfigCache.set(cacheUID, {
162
+ fillAlpha,
163
+ renderFill,
164
+ renderOutline,
165
+ outlineWidth,
166
+ segmentColor,
167
+ segmentsHidden: new Set(segmentsHidden),
168
+ });
169
+ return {
170
+ forceOpacityUpdate: true,
171
+ forceColorUpdate: true,
172
+ };
173
+ }
174
+ const { fillAlpha: oldFillAlpha, renderFill: oldRenderFill, renderOutline: oldRenderOutline, outlineWidth: oldOutlineWidth, segmentColor: oldSegmentColor, segmentsHidden: oldSegmentsHidden, } = oldConfig;
175
+ const forceColorUpdate = oldSegmentColor[0] !== segmentColor[0] ||
176
+ oldSegmentColor[1] !== segmentColor[1] ||
177
+ oldSegmentColor[2] !== segmentColor[2];
178
+ const forceOpacityUpdate = oldSegmentColor[3] !== segmentColor[3] ||
179
+ oldFillAlpha !== fillAlpha ||
180
+ oldRenderFill !== renderFill ||
181
+ oldRenderOutline !== renderOutline ||
182
+ oldOutlineWidth !== outlineWidth ||
183
+ oldSegmentsHidden.has(segmentIndex) !== segmentsHidden.has(segmentIndex);
125
184
  labelMapConfigCache.set(cacheUID, {
126
185
  fillAlpha,
127
- colorLUTIndex,
186
+ renderFill,
187
+ renderOutline,
188
+ outlineWidth,
189
+ segmentColor,
190
+ segmentsHidden: new Set(segmentsHidden),
128
191
  });
129
- if (!config) {
130
- needColorUpdate = true;
131
- needOpacityUpdate = true;
132
- }
133
- if (config && config.fillAlpha !== fillAlpha) {
134
- needOpacityUpdate = true;
135
- }
136
- if (config && config.colorLUTIndex !== colorLUTIndex) {
137
- needColorUpdate = true;
138
- }
139
- if (config && config.renderFill !== renderFill) {
140
- needOpacityUpdate = true;
141
- }
142
- return { needColorUpdate, needOpacityUpdate };
192
+ return {
193
+ forceOpacityUpdate,
194
+ forceColorUpdate,
195
+ };
143
196
  }
144
197
  function _removeLabelmapFromToolGroupViewports(toolGroupId, segmentationRepresentationUID) {
145
198
  const toolGroup = getToolGroup(toolGroupId);
@@ -153,18 +206,8 @@ function _removeLabelmapFromToolGroupViewports(toolGroupId, segmentationRepresen
153
206
  removeLabelmapFromElement(enabledElement.viewport.element, segmentationRepresentationUID);
154
207
  }
155
208
  }
156
- async function _addLabelmapToToolGroupViewports(toolGroupId, volumeId, segmentationRepresentationUID) {
157
- const toolGroup = getToolGroup(toolGroupId);
158
- const { viewportsInfo } = toolGroup;
159
- for (const viewportInfo of viewportsInfo) {
160
- const { viewportId, renderingEngineId } = viewportInfo;
161
- const enabledElement = getEnabledElementByIds(viewportId, renderingEngineId);
162
- if (!enabledElement) {
163
- throw new Error(`No enabled element found for rendering engine: ${renderingEngineId} and viewport: ${viewportId}`);
164
- }
165
- const { viewport } = enabledElement;
166
- addLabelmapToElement(viewport.element, volumeId, segmentationRepresentationUID);
167
- }
209
+ async function _addLabelmapToViewport(viewport, volumeId, segmentationRepresentationUID) {
210
+ await addLabelmapToElement(viewport.element, volumeId, segmentationRepresentationUID);
168
211
  }
169
212
  export default {
170
213
  render,
@@ -1 +1 @@
1
- {"version":3,"file":"labelmapDisplay.js","sourceRoot":"","sources":["../../../../../src/tools/displayTools/Labelmap/labelmapDisplay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"labelmapDisplay.js","sourceRoot":"","sources":["../../../../../src/tools/displayTools/Labelmap/labelmapDisplay.ts"],"names":[],"mappings":"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"}
@@ -18,25 +18,30 @@ class SegmentationDisplayTool extends BaseTool {
18
18
  return;
19
19
  }
20
20
  const toolGroupSegmentationRepresentations = getSegmentationRepresentations(toolGroupId);
21
+ if (!toolGroupSegmentationRepresentations ||
22
+ toolGroupSegmentationRepresentations.length === 0) {
23
+ return;
24
+ }
21
25
  const toolGroupViewports = toolGroup.viewportsInfo.map(({ renderingEngineId, viewportId }) => {
22
26
  const enabledElement = getEnabledElementByIds(viewportId, renderingEngineId);
23
27
  if (enabledElement) {
24
28
  return enabledElement.viewport;
25
29
  }
26
30
  });
27
- toolGroupSegmentationRepresentations.forEach((representation) => {
31
+ const segmentationRenderList = toolGroupSegmentationRepresentations.map((representation) => {
28
32
  const config = this._getMergedRepresentationsConfig(toolGroupId);
29
- toolGroupViewports.forEach((viewport) => {
33
+ const viewportsRenderList = [];
34
+ for (const viewport of toolGroupViewports) {
30
35
  if (representation.type == Representations.Labelmap) {
31
- labelmapDisplay.render(viewport, representation, config);
32
- }
33
- else {
34
- throw new Error(`Render for ${representation.type} is not supported yet`);
36
+ viewportsRenderList.push(labelmapDisplay.render(viewport, representation, config));
35
37
  }
36
- });
38
+ }
39
+ return viewportsRenderList;
37
40
  });
38
- toolGroupViewports.forEach((viewport) => {
39
- viewport.render();
41
+ Promise.allSettled(segmentationRenderList).then(() => {
42
+ toolGroupViewports.forEach((viewport) => {
43
+ viewport.render();
44
+ });
40
45
  });
41
46
  };
42
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentationDisplayTool.js","sourceRoot":"","sources":["../../../../src/tools/displayTools/SegmentationDisplayTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,eAAe,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,MAAM,IAAI,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,yCAAyC,EAAE,MAAM,8DAA8D,CAAC;AACzH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA4B5C,MAAM,uBAAwB,SAAQ,QAAQ;IAE5C,YACE,YAA6B,EAAE,EAC/B,mBAA8B;QAC5B,aAAa,EAAE,EAAE;KAClB;QAED,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAsDrC,uBAAkB,GAAG,CAAC,WAAmB,EAAQ,EAAE;YACjD,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YAE5C,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO;aACR;YAED,MAAM,oCAAoC,GACxC,8BAA8B,CAAC,WAAW,CAAC,CAAC;YAG9C,MAAM,kBAAkB,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CACpD,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,EAAE;gBACpC,MAAM,cAAc,GAAG,sBAAsB,CAC3C,UAAU,EACV,iBAAiB,CAClB,CAAC;gBAEF,IAAI,cAAc,EAAE;oBAClB,OAAO,cAAc,CAAC,QAAQ,CAAC;iBAChC;YACH,CAAC,CACF,CAAC;YAGF,oCAAoC,CAAC,OAAO,CAC1C,CAAC,cAA+C,EAAE,EAAE;gBAClD,MAAM,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC;gBAEjE,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtC,IAAI,cAAc,CAAC,IAAI,IAAI,eAAe,CAAC,QAAQ,EAAE;wBACnD,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;qBAC1D;yBAAM;wBACL,MAAM,IAAI,KAAK,CACb,cAAc,cAAc,CAAC,IAAI,uBAAuB,CACzD,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CACF,CAAC;YAGF,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACtC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IAlGF,CAAC;IAED,gBAAgB;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,oCAAoC,GACxC,8BAA8B,CAAC,WAAW,CAAC,CAAC;QAE9C,IACE,CAAC,oCAAoC;YACrC,oCAAoC,CAAC,MAAM,KAAK,CAAC,EACjD;YACA,OAAO;SACR;QAGD,KAAK,MAAM,0BAA0B,IAAI,oCAAoC,EAAE;YAC7E,0BAA0B,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7C,yCAAyC,CACvC,WAAW,EACX,0BAA0B,CAAC,6BAA6B,CACzD,CAAC;SACH;IACH,CAAC;IAED,iBAAiB;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,oCAAoC,GACxC,8BAA8B,CAAC,WAAW,CAAC,CAAC;QAE9C,IACE,CAAC,oCAAoC;YACrC,oCAAoC,CAAC,MAAM,KAAK,CAAC,EACjD;YACA,OAAO;SACR;QAGD,KAAK,MAAM,0BAA0B,IAAI,oCAAoC,EAAE;YAC7E,0BAA0B,CAAC,UAAU,GAAG,KAAK,CAAC;YAC9C,yCAAyC,CACvC,WAAW,EACX,0BAA0B,CAAC,6BAA6B,CACzD,CAAC;SACH;IACH,CAAC;IA6DD,+BAA+B,CAC7B,WAAmB;QAEnB,MAAM,eAAe,GACnB,kBAAkB,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC,eAAe,EAAE,CAAC;QAG1D,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAE9D,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,uBAAuB,CAAC,QAAQ,GAAG,qBAAqB,CAAC;AACzD,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"SegmentationDisplayTool.js","sourceRoot":"","sources":["../../../../src/tools/displayTools/SegmentationDisplayTool.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ export declare type LabelmapConfig = {
8
8
  renderFillInactive?: boolean;
9
9
  fillAlpha?: number;
10
10
  fillAlphaInactive?: number;
11
+ outlineOpacity?: number;
12
+ outlineOpacityInactive?: number;
11
13
  };
12
14
  export declare type LabelmapRenderingConfig = {
13
15
  cfun?: vtkColorTransferFunction;
@@ -2,6 +2,9 @@ import * as Enums from '../enums';
2
2
  import type { LabelmapConfig, LabelmapSegmentationData, LabelmapRenderingConfig } from './LabelmapTypes';
3
3
  export declare type Color = [number, number, number, number];
4
4
  export declare type ColorLUT = Array<Color>;
5
+ export declare type SegmentSpecificRepresentationConfig = {
6
+ [key: number]: RepresentationConfig;
7
+ };
5
8
  export declare type RepresentationConfig = {
6
9
  LABELMAP?: LabelmapConfig;
7
10
  };
@@ -34,6 +37,8 @@ export declare type ToolGroupSpecificRepresentationState = {
34
37
  };
35
38
  export declare type ToolGroupSpecificLabelmapRepresentation = ToolGroupSpecificRepresentationState & {
36
39
  config: LabelmapRenderingConfig;
40
+ segmentationRepresentationSpecificConfig?: RepresentationConfig;
41
+ segmentSpecificConfig?: SegmentSpecificRepresentationConfig;
37
42
  };
38
43
  export declare type ToolGroupSpecificRepresentation = ToolGroupSpecificLabelmapRepresentation;
39
44
  export declare type ToolGroupSpecificRepresentations = Array<ToolGroupSpecificRepresentation>;
@@ -22,5 +22,6 @@ import * as boundingBox from './boundingBox';
22
22
  import * as planarFreehandROITool from './planarFreehandROITool';
23
23
  import * as rectangleROITool from './rectangleROITool';
24
24
  import * as stackPrefetch from './stackPrefetch';
25
+ import * as viewport from './viewport';
25
26
  import { triggerEvent } from '@cornerstonejs/core';
26
- export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
27
+ export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
@@ -22,6 +22,7 @@ import * as boundingBox from './boundingBox';
22
22
  import * as planarFreehandROITool from './planarFreehandROITool';
23
23
  import * as rectangleROITool from './rectangleROITool';
24
24
  import * as stackPrefetch from './stackPrefetch';
25
+ import * as viewport from './viewport';
25
26
  import { triggerEvent } from '@cornerstonejs/core';
26
- export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
27
+ export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qCAAqC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAClF,OAAO,MAAM,MAAM,UAAU,CAAC;AAG9B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,qBAAqB,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,IAAI,EACJ,MAAM,EACN,eAAe,EACf,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,qCAAqC,EACrC,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,EAChC,sBAAsB,EACtB,sCAAsC,EACtC,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,MAAM,GACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qCAAqC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAClF,OAAO,MAAM,MAAM,UAAU,CAAC;AAG9B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,qBAAqB,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,IAAI,EACJ,MAAM,EACN,eAAe,EACf,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,qCAAqC,EACrC,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,EAChC,sBAAsB,EACtB,sCAAsC,EACtC,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,MAAM,GACP,CAAC"}
@@ -4,4 +4,5 @@ import createMergedLabelmapForIndex from './createMergedLabelmapForIndex';
4
4
  import isValidRepresentationConfig from './isValidRepresentationConfig';
5
5
  import getDefaultRepresentationConfig from './getDefaultRepresentationConfig';
6
6
  import createLabelmapVolumeForViewport from './createLabelmapVolumeForViewport';
7
- export { thresholdVolumeByRange, createMergedLabelmapForIndex, isValidRepresentationConfig, getDefaultRepresentationConfig, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, };
7
+ import { triggerSegmentationRender } from './triggerSegmentationRender';
8
+ export { thresholdVolumeByRange, createMergedLabelmapForIndex, isValidRepresentationConfig, getDefaultRepresentationConfig, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, triggerSegmentationRender, };
@@ -4,5 +4,6 @@ import createMergedLabelmapForIndex from './createMergedLabelmapForIndex';
4
4
  import isValidRepresentationConfig from './isValidRepresentationConfig';
5
5
  import getDefaultRepresentationConfig from './getDefaultRepresentationConfig';
6
6
  import createLabelmapVolumeForViewport from './createLabelmapVolumeForViewport';
7
- export { thresholdVolumeByRange, createMergedLabelmapForIndex, isValidRepresentationConfig, getDefaultRepresentationConfig, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, };
7
+ import { triggerSegmentationRender } from './triggerSegmentationRender';
8
+ export { thresholdVolumeByRange, createMergedLabelmapForIndex, isValidRepresentationConfig, getDefaultRepresentationConfig, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, triggerSegmentationRender, };
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,+BAA+B,MAAM,mCAAmC,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,EAC/B,kCAAkC,GACnC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,+BAA+B,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,GAC1B,CAAC"}
@@ -3,6 +3,7 @@ declare class SegmentationRenderingEngine {
3
3
  private _animationFrameSet;
4
4
  private _animationFrameHandle;
5
5
  hasBeenDestroyed: boolean;
6
+ removeToolGroup(toolGroupId: any): void;
6
7
  renderToolGroupSegmentations(toolGroupId: any): void;
7
8
  private _throwIfDestroyed;
8
9
  private _setToolGroupSegmentationToBeRenderedNextFrame;
@@ -1,7 +1,7 @@
1
1
  import { triggerEvent, eventTarget, getRenderingEngine, Enums, } from '@cornerstonejs/core';
2
- import { Events as csToolsEvents } from '../enums';
3
- import { getToolGroup, getToolGroupForViewport, } from '../store/ToolGroupManager';
4
- import SegmentationDisplayTool from '../tools/displayTools/SegmentationDisplayTool';
2
+ import { Events as csToolsEvents } from '../../enums';
3
+ import { getToolGroup, getToolGroupForViewport, } from '../../store/ToolGroupManager';
4
+ import SegmentationDisplayTool from '../../tools/displayTools/SegmentationDisplayTool';
5
5
  class SegmentationRenderingEngine {
6
6
  constructor() {
7
7
  this._needsRender = new Set();
@@ -21,6 +21,12 @@ class SegmentationRenderingEngine {
21
21
  }
22
22
  };
23
23
  }
24
+ removeToolGroup(toolGroupId) {
25
+ this._needsRender.delete(toolGroupId);
26
+ if (this._needsRender.size === 0) {
27
+ this._reset();
28
+ }
29
+ }
24
30
  renderToolGroupSegmentations(toolGroupId) {
25
31
  this._setToolGroupSegmentationToBeRenderedNextFrame([toolGroupId]);
26
32
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggerSegmentationRender.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/triggerSegmentationRender.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ declare class AnnotationRenderingEngine {
6
6
  private _viewportElements;
7
7
  constructor();
8
8
  addViewportElement(viewportId: string, element: HTMLDivElement): void;
9
- removeViewportElement(viewportId: string): void;
9
+ removeViewportElement(viewportId: string, element: HTMLDivElement): void;
10
10
  renderViewport(element: HTMLDivElement): void;
11
11
  private _throwIfDestroyed;
12
12
  private _renderFlaggedViewports;
@@ -29,8 +29,9 @@ class AnnotationRenderingEngine {
29
29
  addViewportElement(viewportId, element) {
30
30
  this._viewportElements.set(viewportId, element);
31
31
  }
32
- removeViewportElement(viewportId) {
32
+ removeViewportElement(viewportId, element) {
33
33
  this._viewportElements.delete(viewportId);
34
+ this._needsRender.delete(element);
34
35
  if (this._viewportElements.size === 0) {
35
36
  this._reset();
36
37
  }
@@ -44,8 +45,11 @@ class AnnotationRenderingEngine {
44
45
  }
45
46
  }
46
47
  _setViewportsToBeRenderedNextFrame(elements) {
48
+ const elementsEnabled = [...this._viewportElements.values()];
47
49
  elements.forEach((element) => {
48
- this._needsRender.add(element);
50
+ if (elementsEnabled.indexOf(element) !== -1) {
51
+ this._needsRender.add(element);
52
+ }
49
53
  });
50
54
  this._render();
51
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"triggerAnnotationRender.js","sourceRoot":"","sources":["../../../src/utilities/triggerAnnotationRender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triggerAnnotationRender.js","sourceRoot":"","sources":["../../../src/utilities/triggerAnnotationRender.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { isViewportPreScaled } from './isViewportPreScaled';
2
+ import jumpToSlice from './jumpToSlice';
3
+ import jumpToWorld from './jumpToWorld';
4
+ export { isViewportPreScaled, jumpToSlice, jumpToWorld };
@@ -0,0 +1,5 @@
1
+ import { isViewportPreScaled } from './isViewportPreScaled';
2
+ import jumpToSlice from './jumpToSlice';
3
+ import jumpToWorld from './jumpToWorld';
4
+ export { isViewportPreScaled, jumpToSlice, jumpToWorld };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/viewport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC"}