@cornerstonejs/tools 1.71.7 → 1.72.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 (67) hide show
  1. package/dist/cjs/index.d.ts +2 -2
  2. package/dist/cjs/index.js +3 -2
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/tools/WindowLevelRegionTool.d.ts +26 -0
  5. package/dist/cjs/tools/WindowLevelRegionTool.js +228 -0
  6. package/dist/cjs/tools/WindowLevelRegionTool.js.map +1 -0
  7. package/dist/cjs/tools/index.d.ts +2 -1
  8. package/dist/cjs/tools/index.js +4 -2
  9. package/dist/cjs/tools/index.js.map +1 -1
  10. package/dist/cjs/utilities/voi/index.d.ts +2 -1
  11. package/dist/cjs/utilities/voi/index.js +3 -1
  12. package/dist/cjs/utilities/voi/index.js.map +1 -1
  13. package/dist/cjs/utilities/voi/windowlevel/calculateMinMaxMean.d.ts +6 -0
  14. package/dist/cjs/utilities/voi/windowlevel/calculateMinMaxMean.js +29 -0
  15. package/dist/cjs/utilities/voi/windowlevel/calculateMinMaxMean.js.map +1 -0
  16. package/dist/cjs/utilities/voi/windowlevel/extractWindowLevelRegionToolData.d.ts +11 -0
  17. package/dist/cjs/utilities/voi/windowlevel/extractWindowLevelRegionToolData.js +52 -0
  18. package/dist/cjs/utilities/voi/windowlevel/extractWindowLevelRegionToolData.js.map +1 -0
  19. package/dist/cjs/utilities/voi/windowlevel/getLuminanceFromRegion.d.ts +2 -0
  20. package/dist/cjs/utilities/voi/windowlevel/getLuminanceFromRegion.js +31 -0
  21. package/dist/cjs/utilities/voi/windowlevel/getLuminanceFromRegion.js.map +1 -0
  22. package/dist/cjs/utilities/voi/windowlevel/index.d.ts +4 -0
  23. package/dist/cjs/utilities/voi/windowlevel/index.js +10 -0
  24. package/dist/cjs/utilities/voi/windowlevel/index.js.map +1 -0
  25. package/dist/esm/index.js +2 -2
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/tools/WindowLevelRegionTool.js +223 -0
  28. package/dist/esm/tools/WindowLevelRegionTool.js.map +1 -0
  29. package/dist/esm/tools/index.js +2 -1
  30. package/dist/esm/tools/index.js.map +1 -1
  31. package/dist/esm/utilities/voi/index.js +2 -1
  32. package/dist/esm/utilities/voi/index.js.map +1 -1
  33. package/dist/esm/utilities/voi/windowlevel/calculateMinMaxMean.js +26 -0
  34. package/dist/esm/utilities/voi/windowlevel/calculateMinMaxMean.js.map +1 -0
  35. package/dist/esm/utilities/voi/windowlevel/extractWindowLevelRegionToolData.js +49 -0
  36. package/dist/esm/utilities/voi/windowlevel/extractWindowLevelRegionToolData.js.map +1 -0
  37. package/dist/esm/utilities/voi/windowlevel/getLuminanceFromRegion.js +28 -0
  38. package/dist/esm/utilities/voi/windowlevel/getLuminanceFromRegion.js.map +1 -0
  39. package/dist/esm/utilities/voi/windowlevel/index.js +5 -0
  40. package/dist/esm/utilities/voi/windowlevel/index.js.map +1 -0
  41. package/dist/types/index.d.ts +2 -2
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/dist/types/tools/WindowLevelRegionTool.d.ts +27 -0
  44. package/dist/types/tools/WindowLevelRegionTool.d.ts.map +1 -0
  45. package/dist/types/tools/index.d.ts +2 -1
  46. package/dist/types/tools/index.d.ts.map +1 -1
  47. package/dist/types/utilities/voi/index.d.ts +2 -1
  48. package/dist/types/utilities/voi/index.d.ts.map +1 -1
  49. package/dist/types/utilities/voi/windowlevel/calculateMinMaxMean.d.ts +7 -0
  50. package/dist/types/utilities/voi/windowlevel/calculateMinMaxMean.d.ts.map +1 -0
  51. package/dist/types/utilities/voi/windowlevel/extractWindowLevelRegionToolData.d.ts +12 -0
  52. package/dist/types/utilities/voi/windowlevel/extractWindowLevelRegionToolData.d.ts.map +1 -0
  53. package/dist/types/utilities/voi/windowlevel/getLuminanceFromRegion.d.ts +3 -0
  54. package/dist/types/utilities/voi/windowlevel/getLuminanceFromRegion.d.ts.map +1 -0
  55. package/dist/types/utilities/voi/windowlevel/index.d.ts +5 -0
  56. package/dist/types/utilities/voi/windowlevel/index.d.ts.map +1 -0
  57. package/dist/umd/index.js +1 -1
  58. package/dist/umd/index.js.map +1 -1
  59. package/package.json +3 -3
  60. package/src/index.ts +2 -0
  61. package/src/tools/WindowLevelRegionTool.ts +399 -0
  62. package/src/tools/index.ts +2 -0
  63. package/src/utilities/voi/index.ts +2 -1
  64. package/src/utilities/voi/windowlevel/calculateMinMaxMean.ts +30 -0
  65. package/src/utilities/voi/windowlevel/extractWindowLevelRegionToolData.ts +63 -0
  66. package/src/utilities/voi/windowlevel/getLuminanceFromRegion.ts +43 -0
  67. package/src/utilities/voi/windowlevel/index.ts +9 -0
package/dist/esm/index.js CHANGED
@@ -8,8 +8,8 @@ import * as cursors from './cursors';
8
8
  import * as Types from './types';
9
9
  import * as annotation from './stateManagement/annotation';
10
10
  import * as segmentation from './stateManagement/segmentation';
11
- import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, KeyImageTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, OverlayGridTool, SegmentationIntersectionTool, EraserTool, SculptorTool, SegmentSelectTool, } from './tools';
11
+ import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, KeyImageTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, OverlayGridTool, SegmentationIntersectionTool, EraserTool, SculptorTool, SegmentSelectTool, WindowLevelRegionTool, } from './tools';
12
12
  import VideoRedactionTool from './tools/annotation/VideoRedactionTool';
13
13
  import * as Enums from './enums';
14
- export { VideoRedactionTool, init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SculptorTool, EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, BrushTool, OrientationMarkerTool, SegmentSelectTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
14
+ export { VideoRedactionTool, init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SculptorTool, EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, BrushTool, OrientationMarkerTool, SegmentSelectTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EACL,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EACL,QAAQ,EACR,cAAc,EACd,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,qCAAqC,EACrC,mBAAmB,EACnB,+BAA+B,EAC/B,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,8BAA8B,EAC9B,uBAAuB,EACvB,SAAS,EACT,SAAS,EACT,aAAa,EACb,yBAAyB,EACzB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,4BAA4B,EAC5B,UAAU,EACV,YAAY,EACZ,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,kBAAkB,MAAM,uCAAuC,CAAC;AAEvE,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAElB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,UAAU,EACV,yBAAyB,EAEzB,QAAQ,EACR,cAAc,EACd,qBAAqB,EAErB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAElB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,4BAA4B,EAC5B,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,qCAAqC,EACrC,mBAAmB,EACnB,+BAA+B,EAC/B,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,yBAAyB,EACzB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,EAEV,uBAAuB,EAEvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,8BAA8B,EAC9B,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EAEjB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,KAAK,EAEL,gBAAgB,EAEhB,KAAK,EAEL,SAAS,EAET,OAAO,EAEP,UAAU,EAEV,YAAY,EAEZ,SAAS,EACT,OAAO,GACR,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { AnnotationTool } from './base';
2
+ import { getEnabledElement, utilities } from '@cornerstonejs/core';
3
+ import { addAnnotation, getAnnotations, removeAnnotation, } from '../stateManagement';
4
+ import { triggerAnnotationCompleted } from '../stateManagement/annotation/helpers/state';
5
+ import { drawRect as drawRectSvg } from '../drawingSvg';
6
+ import { state } from '../store';
7
+ import { Events } from '../enums';
8
+ import { getViewportIdsWithToolToRender } from '../utilities/viewportFilters';
9
+ import { resetElementCursor, hideElementCursor, } from '../cursors/elementCursor';
10
+ import triggerAnnotationRenderForViewportIds from '../utilities/triggerAnnotationRenderForViewportIds';
11
+ import { windowLevel } from '../utilities/voi';
12
+ import { clip } from '../utilities';
13
+ class WindowLevelRegionTool extends AnnotationTool {
14
+ constructor(toolProps = {}, defaultToolProps = {
15
+ supportedInteractionTypes: ['Mouse', 'Touch'],
16
+ configuration: {
17
+ minWindowWidth: 10,
18
+ },
19
+ }) {
20
+ super(toolProps, defaultToolProps);
21
+ this.addNewAnnotation = (evt) => {
22
+ const eventDetail = evt.detail;
23
+ const { currentPoints, element } = eventDetail;
24
+ const worldPos = currentPoints.world;
25
+ const enabledElement = getEnabledElement(element);
26
+ const { viewport, renderingEngine } = enabledElement;
27
+ this.isDrawing = true;
28
+ const camera = viewport.getCamera();
29
+ const { viewPlaneNormal, viewUp } = camera;
30
+ const referencedImageId = this.getReferencedImageId(viewport, worldPos, viewPlaneNormal, viewUp);
31
+ const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
32
+ const annotation = {
33
+ invalidated: true,
34
+ highlighted: true,
35
+ metadata: {
36
+ toolName: this.getToolName(),
37
+ viewPlaneNormal: [...viewPlaneNormal],
38
+ viewUp: [...viewUp],
39
+ FrameOfReferenceUID,
40
+ referencedImageId,
41
+ },
42
+ data: {
43
+ handles: {
44
+ points: [
45
+ [...worldPos],
46
+ [...worldPos],
47
+ [...worldPos],
48
+ [...worldPos],
49
+ ],
50
+ },
51
+ cachedStats: {},
52
+ },
53
+ };
54
+ addAnnotation(annotation, element);
55
+ const viewportIdsToRender = getViewportIdsWithToolToRender(element, this.getToolName());
56
+ this.editData = {
57
+ annotation,
58
+ viewportIdsToRender,
59
+ };
60
+ this._activateDraw(element);
61
+ hideElementCursor(element);
62
+ evt.preventDefault();
63
+ triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
64
+ return annotation;
65
+ };
66
+ this._endCallback = (evt) => {
67
+ const eventDetail = evt.detail;
68
+ const { element } = eventDetail;
69
+ const { annotation, viewportIdsToRender } = this.editData;
70
+ this._deactivateDraw(element);
71
+ resetElementCursor(element);
72
+ const { renderingEngine } = getEnabledElement(element);
73
+ this.editData = null;
74
+ this.isDrawing = false;
75
+ removeAnnotation(annotation.annotationUID);
76
+ triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
77
+ triggerAnnotationCompleted(annotation);
78
+ this.applyWindowLevelRegion(annotation, element);
79
+ };
80
+ this._dragCallback = (evt) => {
81
+ this.isDrawing = true;
82
+ const eventDetail = evt.detail;
83
+ const { element } = eventDetail;
84
+ const { annotation, viewportIdsToRender } = this.editData;
85
+ const { data } = annotation;
86
+ const { currentPoints } = eventDetail;
87
+ const enabledElement = getEnabledElement(element);
88
+ const { worldToCanvas, canvasToWorld } = enabledElement.viewport;
89
+ const worldPos = currentPoints.world;
90
+ const { points } = data.handles;
91
+ const DEFAULT_HANDLE_INDEX = 3;
92
+ points[DEFAULT_HANDLE_INDEX] = [...worldPos];
93
+ const bottomLeftCanvas = worldToCanvas(points[0]);
94
+ const topRightCanvas = worldToCanvas(points[3]);
95
+ const bottomRightCanvas = [
96
+ topRightCanvas[0],
97
+ bottomLeftCanvas[1],
98
+ ];
99
+ const topLeftCanvas = [
100
+ bottomLeftCanvas[0],
101
+ topRightCanvas[1],
102
+ ];
103
+ const bottomRightWorld = canvasToWorld(bottomRightCanvas);
104
+ const topLeftWorld = canvasToWorld(topLeftCanvas);
105
+ points[1] = bottomRightWorld;
106
+ points[2] = topLeftWorld;
107
+ annotation.invalidated = true;
108
+ const { renderingEngine } = enabledElement;
109
+ triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
110
+ };
111
+ this._activateDraw = (element) => {
112
+ state.isInteractingWithTool = true;
113
+ element.addEventListener(Events.MOUSE_UP, this._endCallback);
114
+ element.addEventListener(Events.MOUSE_DRAG, this._dragCallback);
115
+ element.addEventListener(Events.MOUSE_MOVE, this._dragCallback);
116
+ element.addEventListener(Events.MOUSE_CLICK, this._endCallback);
117
+ element.addEventListener(Events.TOUCH_END, this._endCallback);
118
+ element.addEventListener(Events.TOUCH_DRAG, this._dragCallback);
119
+ element.addEventListener(Events.TOUCH_TAP, this._endCallback);
120
+ };
121
+ this._deactivateDraw = (element) => {
122
+ state.isInteractingWithTool = false;
123
+ element.removeEventListener(Events.MOUSE_UP, this._endCallback);
124
+ element.removeEventListener(Events.MOUSE_DRAG, this._dragCallback);
125
+ element.removeEventListener(Events.MOUSE_MOVE, this._dragCallback);
126
+ element.removeEventListener(Events.MOUSE_CLICK, this._endCallback);
127
+ element.removeEventListener(Events.TOUCH_END, this._endCallback);
128
+ element.removeEventListener(Events.TOUCH_DRAG, this._dragCallback);
129
+ element.removeEventListener(Events.TOUCH_TAP, this._endCallback);
130
+ };
131
+ this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
132
+ let renderStatus = false;
133
+ const { viewport } = enabledElement;
134
+ const { element } = viewport;
135
+ let annotations = getAnnotations(this.getToolName(), element);
136
+ if (!annotations?.length) {
137
+ return renderStatus;
138
+ }
139
+ annotations = this.filterInteractableAnnotationsForElement(element, annotations);
140
+ if (!annotations?.length) {
141
+ return renderStatus;
142
+ }
143
+ const styleSpecifier = {
144
+ toolGroupId: this.toolGroupId,
145
+ toolName: this.getToolName(),
146
+ viewportId: enabledElement.viewport.id,
147
+ };
148
+ for (let i = 0; i < annotations.length; i++) {
149
+ const annotation = annotations[i];
150
+ const { annotationUID, data } = annotation;
151
+ const { points } = data.handles;
152
+ const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
153
+ styleSpecifier.annotationUID = annotationUID;
154
+ const { color, lineWidth, lineDash } = this.getAnnotationStyle({
155
+ annotation,
156
+ styleSpecifier,
157
+ });
158
+ if (!viewport.getRenderingEngine()) {
159
+ console.warn('Rendering Engine has been destroyed');
160
+ return renderStatus;
161
+ }
162
+ const dataId = `${annotationUID}-rect`;
163
+ const rectangleUID = '0';
164
+ drawRectSvg(svgDrawingHelper, annotationUID, rectangleUID, canvasCoordinates[0], canvasCoordinates[3], {
165
+ color,
166
+ lineDash,
167
+ lineWidth,
168
+ }, dataId);
169
+ renderStatus = true;
170
+ }
171
+ return renderStatus;
172
+ };
173
+ this.applyWindowLevelRegion = (annotation, element) => {
174
+ const enabledElement = getEnabledElement(element);
175
+ const { viewport } = enabledElement;
176
+ const imageData = windowLevel.extractWindowLevelRegionToolData(viewport);
177
+ const { data } = annotation;
178
+ const { points } = data.handles;
179
+ const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
180
+ const startCanvas = canvasCoordinates[0];
181
+ const endCanvas = canvasCoordinates[3];
182
+ let left = Math.min(startCanvas[0], endCanvas[0]);
183
+ let top = Math.min(startCanvas[1], endCanvas[1]);
184
+ let width = Math.abs(startCanvas[0] - endCanvas[0]);
185
+ let height = Math.abs(startCanvas[1] - endCanvas[1]);
186
+ left = clip(left, 0, imageData.width);
187
+ top = clip(top, 0, imageData.height);
188
+ width = Math.floor(Math.min(width, Math.abs(imageData.width - left)));
189
+ height = Math.floor(Math.min(height, Math.abs(imageData.height - top)));
190
+ const pixelLuminanceData = windowLevel.getLuminanceFromRegion(imageData, Math.round(left), Math.round(top), width, height);
191
+ const minMaxMean = windowLevel.calculateMinMaxMean(pixelLuminanceData, imageData.minPixelValue, imageData.maxPixelValue);
192
+ if (this.configuration.minWindowWidth === undefined) {
193
+ this.configuration.minWindowWidth = 10;
194
+ }
195
+ const windowWidth = Math.max(Math.abs(minMaxMean.max - minMaxMean.min), this.configuration.minWindowWidth);
196
+ const windowCenter = minMaxMean.mean;
197
+ const voiRange = utilities.windowLevel.toLowHighRange(windowWidth, windowCenter);
198
+ viewport.setProperties({ voiRange });
199
+ viewport.render();
200
+ };
201
+ this.cancel = () => {
202
+ return null;
203
+ };
204
+ this.isPointNearTool = () => {
205
+ return null;
206
+ };
207
+ this.toolSelectedCallback = () => {
208
+ return null;
209
+ };
210
+ this.handleSelectedCallback = () => {
211
+ return null;
212
+ };
213
+ this._activateModify = () => {
214
+ return null;
215
+ };
216
+ this._deactivateModify = () => {
217
+ return null;
218
+ };
219
+ }
220
+ }
221
+ WindowLevelRegionTool.toolName = 'WindowLevelRegion';
222
+ export default WindowLevelRegionTool;
223
+ //# sourceMappingURL=WindowLevelRegionTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowLevelRegionTool.js","sourceRoot":"","sources":["../../../src/tools/WindowLevelRegionTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,MAAM,oDAAoD,CAAC;AAWvG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAUpC,MAAM,qBAAsB,SAAQ,cAAc;IAShD,YACE,YAA6B,EAAE,EAC/B,mBAA8B;QAC5B,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC7C,aAAa,EAAE;YAEb,cAAc,EAAE,EAAE;SACnB;KACF;QAED,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAWrC,qBAAgB,GAAG,CAAC,GAAoC,EAAO,EAAE;YAC/D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC;YAErC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,cAAc,CAAC;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YAE3C,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CACjD,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,MAAM,CACP,CAAC;YAEF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YAE9D,MAAM,UAAU,GAAG;gBACjB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE;oBACR,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;oBAC5B,eAAe,EAAgB,CAAC,GAAG,eAAe,CAAC;oBACnD,MAAM,EAAgB,CAAC,GAAG,MAAM,CAAC;oBACjC,mBAAmB;oBACnB,iBAAiB;iBAClB;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE;wBACP,MAAM,EAAE;4BACQ,CAAC,GAAG,QAAQ,CAAC;4BACb,CAAC,GAAG,QAAQ,CAAC;4BACb,CAAC,GAAG,QAAQ,CAAC;4BACb,CAAC,GAAG,QAAQ,CAAC;yBAC5B;qBACF;oBACD,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC;YAEF,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEnC,MAAM,mBAAmB,GAAG,8BAA8B,CACxD,OAAO,EACP,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;YAEF,IAAI,CAAC,QAAQ,GAAG;gBACd,UAAU;gBACV,mBAAmB;aACpB,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE5B,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE3B,GAAG,CAAC,cAAc,EAAE,CAAC;YAErB,qCAAqC,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;YAE5E,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,GAAoC,EAAQ,EAAE;YAC5D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAEhC,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE1D,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE9B,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,gBAAgB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAE3C,qCAAqC,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;YAE5E,0BAA0B,CAAC,UAAU,CAAC,CAAC;YAEvC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,GAAoC,EAAQ,EAAE;YAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAEhC,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;YAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;YACtC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC;YACjE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC;YAErC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAChC,MAAM,oBAAoB,GAAG,CAAC,CAAC;YAC/B,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;YAE7C,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhD,MAAM,iBAAiB,GAAiB;gBACtC,cAAc,CAAC,CAAC,CAAC;gBACjB,gBAAgB,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM,aAAa,GAAiB;gBAClC,gBAAgB,CAAC,CAAC,CAAC;gBACnB,cAAc,CAAC,CAAC,CAAC;aAClB,CAAC;YAEF,MAAM,gBAAgB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAC1D,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YAElD,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;YAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;YAEzB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;YAE9B,MAAM,EAAE,eAAe,EAAE,GAAG,cAAc,CAAC;YAE3C,qCAAqC,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;QAC9E,CAAC,CAAC;QAKF,kBAAa,GAAG,CAAC,OAAO,EAAE,EAAE;YAC1B,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAEnC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7D,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9D,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC,CAAC;QAKF,oBAAe,GAAG,CAAC,OAAO,EAAE,EAAE;YAC5B,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC;YAEpC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAChE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACnE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACnE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEnE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACjE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACnE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,CAAC,CAAC;QAUF,qBAAgB,GAAG,CACjB,cAAqC,EACrC,gBAAkC,EACzB,EAAE;YACX,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;YACpC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;YAE7B,IAAI,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;YAE9D,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;gBACxB,OAAO,YAAY,CAAC;aACrB;YAED,WAAW,GAAG,IAAI,CAAC,uCAAuC,CACxD,OAAO,EACP,WAAW,CACZ,CAAC;YAEF,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;gBACxB,OAAO,YAAY,CAAC;aACrB;YAED,MAAM,cAAc,GAAmB;gBACrC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC5B,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE;aACvC,CAAC;YAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAA2B,CAAC;gBAC5D,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;gBAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;gBAEhC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEvE,cAAc,CAAC,aAAa,GAAG,aAAa,CAAC;gBAE7C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;oBAC7D,UAAU;oBACV,cAAc;iBACf,CAAC,CAAC;gBAGH,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE;oBAClC,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACpD,OAAO,YAAY,CAAC;iBACrB;gBAED,MAAM,MAAM,GAAG,GAAG,aAAa,OAAO,CAAC;gBACvC,MAAM,YAAY,GAAG,GAAG,CAAC;gBACzB,WAAW,CACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,iBAAiB,CAAC,CAAC,CAAC,EACpB,iBAAiB,CAAC,CAAC,CAAC,EACpB;oBACE,KAAK;oBACL,QAAQ;oBACR,SAAS;iBACV,EACD,MAAM,CACP,CAAC;gBAEF,YAAY,GAAG,IAAI,CAAC;aACrB;YAED,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,2BAAsB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAQ,EAAE;YACrD,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;YACpC,MAAM,SAAS,GAAG,WAAW,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;YACzE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;YAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAEhC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAEvC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAErD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACtC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAGxE,MAAM,kBAAkB,GAAG,WAAW,CAAC,sBAAsB,CAC3D,SAAS,EACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EACf,KAAK,EACL,MAAM,CACP,CAAC;YAGF,MAAM,UAAU,GAAG,WAAW,CAAC,mBAAmB,CAChD,kBAAkB,EAClB,SAAS,CAAC,aAAa,EACvB,SAAS,CAAC,aAAa,CACxB,CAAC;YAGF,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,KAAK,SAAS,EAAE;gBACnD,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,EAAE,CAAC;aACxC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,EACzC,IAAI,CAAC,aAAa,CAAC,cAAc,CAClC,CAAC;YACF,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC;YAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CACnD,WAAW,EACX,YAAY,CACb,CAAC;YAEF,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,CAAC,CAAC;QAEF,WAAM,GAAG,GAAS,EAAE;YAClB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,oBAAe,GAAG,GAAG,EAAE;YACrB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,yBAAoB,GAAG,GAAS,EAAE;YAChC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,2BAAsB,GAAG,GAAS,EAAE;YAClC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,oBAAe,GAAG,GAAS,EAAE;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,sBAAiB,GAAG,GAAS,EAAE;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;IA7UF,CAAC;CA8UF;AAED,qBAAqB,CAAC,QAAQ,GAAG,mBAAmB,CAAC;AACrD,eAAe,qBAAqB,CAAC"}
@@ -2,6 +2,7 @@ import { BaseTool, AnnotationTool, AnnotationDisplayTool } from './base';
2
2
  import PanTool from './PanTool';
3
3
  import TrackballRotateTool from './TrackballRotateTool';
4
4
  import WindowLevelTool from './WindowLevelTool';
5
+ import WindowLevelRegionTool from './WindowLevelRegionTool';
5
6
  import StackScrollTool from './StackScrollTool';
6
7
  import PlanarRotateTool from './PlanarRotateTool';
7
8
  import StackScrollMouseWheelTool from './StackScrollToolMouseWheelTool';
@@ -48,5 +49,5 @@ import BrushTool from './segmentation/BrushTool';
48
49
  import PaintFillTool from './segmentation/PaintFillTool';
49
50
  import OrientationMarkerTool from './OrientationMarkerTool';
50
51
  import SegmentSelectTool from './segmentation/SegmentSelectTool';
51
- export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
52
+ export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
52
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import * as colorbar from './colorbar';
2
- export { colorbar };
2
+ import * as windowLevel from './windowlevel';
3
+ export { colorbar, windowLevel };
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/voi/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/voi/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ function calculateMinMaxMean(pixelLuminance, globalMin, globalMax) {
2
+ const numPixels = pixelLuminance.length;
3
+ let min = globalMax;
4
+ let max = globalMin;
5
+ let sum = 0;
6
+ if (numPixels < 2) {
7
+ return {
8
+ min,
9
+ max,
10
+ mean: (globalMin + globalMax) / 2,
11
+ };
12
+ }
13
+ for (let index = 0; index < numPixels; index++) {
14
+ const spv = pixelLuminance[index];
15
+ min = Math.min(min, spv);
16
+ max = Math.max(max, spv);
17
+ sum += spv;
18
+ }
19
+ return {
20
+ min,
21
+ max,
22
+ mean: sum / numPixels,
23
+ };
24
+ }
25
+ export { calculateMinMaxMean };
26
+ //# sourceMappingURL=calculateMinMaxMean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateMinMaxMean.js","sourceRoot":"","sources":["../../../../../src/utilities/voi/windowlevel/calculateMinMaxMean.ts"],"names":[],"mappings":"AAAA,SAAS,mBAAmB,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS;IAC/D,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC;IACxC,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,IAAI,SAAS,GAAG,CAAC,EAAE;QACjB,OAAO;YACL,GAAG;YACH,GAAG;YACH,IAAI,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC;SAClC,CAAC;KACH;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAElC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,GAAG,IAAI,GAAG,CAAC;KACZ;IAED,OAAO;QACL,GAAG;QACH,GAAG;QACH,IAAI,EAAE,GAAG,GAAG,SAAS;KACtB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { VolumeViewport, utilities as csUtils, cache, StackViewport, } from '@cornerstonejs/core';
2
+ function extractWindowLevelRegionToolData(viewport) {
3
+ if (viewport instanceof VolumeViewport) {
4
+ return extractImageDataVolume(viewport);
5
+ }
6
+ if (viewport instanceof StackViewport) {
7
+ return extractImageDataStack(viewport);
8
+ }
9
+ throw new Error('Viewport not supported');
10
+ }
11
+ function extractImageDataVolume(viewport) {
12
+ const { scalarData, width, height } = csUtils.getCurrentVolumeViewportSlice(viewport);
13
+ const { min: minPixelValue, max: maxPixelValue } = csUtils.getMinMax(scalarData);
14
+ const volumeId = viewport.getVolumeId();
15
+ const volume = cache.getVolume(volumeId);
16
+ const { metadata, cornerstoneImageMetaData } = volume;
17
+ const { Rows: rows, Columns: columns } = metadata;
18
+ const { color } = cornerstoneImageMetaData;
19
+ return {
20
+ scalarData,
21
+ width,
22
+ height,
23
+ minPixelValue,
24
+ maxPixelValue,
25
+ rows,
26
+ columns,
27
+ color,
28
+ };
29
+ }
30
+ function extractImageDataStack(viewport) {
31
+ const imageData = viewport.getImageData();
32
+ const { scalarData } = imageData;
33
+ const { min: minPixelValue, max: maxPixelValue } = csUtils.getMinMax(scalarData);
34
+ const width = imageData.dimensions[0];
35
+ const height = imageData.dimensions[1];
36
+ const { rows, columns, color } = viewport.getCornerstoneImage();
37
+ return {
38
+ scalarData,
39
+ width,
40
+ height,
41
+ minPixelValue,
42
+ maxPixelValue,
43
+ rows,
44
+ columns,
45
+ color,
46
+ };
47
+ }
48
+ export { extractWindowLevelRegionToolData };
49
+ //# sourceMappingURL=extractWindowLevelRegionToolData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractWindowLevelRegionToolData.js","sourceRoot":"","sources":["../../../../../src/utilities/voi/windowlevel/extractWindowLevelRegionToolData.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,IAAI,OAAO,EACpB,KAAK,EACL,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,SAAS,gCAAgC,CAAC,QAAQ;IAChD,IAAI,QAAQ,YAAY,cAAc,EAAE;QACtC,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;KACzC;IACD,IAAI,QAAQ,YAAY,aAAa,EAAE;QACrC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KACxC;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAQ;IACtC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GACjC,OAAO,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,GAC9C,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAAC;IACtD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAClD,MAAM,EAAE,KAAK,EAAE,GAAG,wBAAwB,CAAC;IAC3C,OAAO;QACL,UAAU;QACV,KAAK;QACL,MAAM;QACN,aAAa;QACb,aAAa;QACb,IAAI;QACJ,OAAO;QACP,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAQ;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC1C,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,GAC9C,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IAEhE,OAAO;QACL,UAAU;QACV,KAAK;QACL,MAAM;QACN,aAAa;QACb,aAAa;QACb,IAAI;QACJ,OAAO;QACP,KAAK;KACN,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ function getLuminanceFromRegion(imageData, x, y, width, height) {
2
+ const luminance = [];
3
+ let index = 0;
4
+ const pixelData = imageData.scalarData;
5
+ let spIndex, row, column;
6
+ if (imageData.color) {
7
+ for (row = 0; row < height; row++) {
8
+ for (column = 0; column < width; column++) {
9
+ spIndex = ((row + y) * imageData.columns + (column + x)) * 4;
10
+ const red = pixelData[spIndex];
11
+ const green = pixelData[spIndex + 1];
12
+ const blue = pixelData[spIndex + 2];
13
+ luminance[index++] = 0.2126 * red + 0.7152 * green + 0.0722 * blue;
14
+ }
15
+ }
16
+ }
17
+ else {
18
+ for (row = 0; row < height; row++) {
19
+ for (column = 0; column < width; column++) {
20
+ spIndex = (row + y) * imageData.columns + (column + x);
21
+ luminance[index++] = pixelData[spIndex];
22
+ }
23
+ }
24
+ }
25
+ return luminance;
26
+ }
27
+ export { getLuminanceFromRegion };
28
+ //# sourceMappingURL=getLuminanceFromRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLuminanceFromRegion.js","sourceRoot":"","sources":["../../../../../src/utilities/voi/windowlevel/getLuminanceFromRegion.ts"],"names":[],"mappings":"AAaA,SAAS,sBAAsB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM;IAC5D,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;IACvC,IAAI,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC;IAEzB,IAAI,SAAS,CAAC,KAAK,EAAE;QACnB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;YACjC,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE;gBACzC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAEpC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;aACpE;SACF;KACF;SAAM;QACL,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;YACjC,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE;gBACzC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACvD,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;aACzC;SACF;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { getLuminanceFromRegion } from './getLuminanceFromRegion';
2
+ import { calculateMinMaxMean } from './calculateMinMaxMean';
3
+ import { extractWindowLevelRegionToolData } from './extractWindowLevelRegionToolData';
4
+ export { getLuminanceFromRegion, calculateMinMaxMean, extractWindowLevelRegionToolData, };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/voi/windowlevel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,gCAAgC,GACjC,CAAC"}
@@ -8,8 +8,8 @@ import * as cursors from './cursors';
8
8
  import * as Types from './types';
9
9
  import * as annotation from './stateManagement/annotation';
10
10
  import * as segmentation from './stateManagement/segmentation';
11
- import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, KeyImageTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, OverlayGridTool, SegmentationIntersectionTool, EraserTool, SculptorTool, SegmentSelectTool } from './tools';
11
+ import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, KeyImageTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, OverlayGridTool, SegmentationIntersectionTool, EraserTool, SculptorTool, SegmentSelectTool, WindowLevelRegionTool } from './tools';
12
12
  import VideoRedactionTool from './tools/annotation/VideoRedactionTool';
13
13
  import * as Enums from './enums';
14
- export { VideoRedactionTool, init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SculptorTool, EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, BrushTool, OrientationMarkerTool, SegmentSelectTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
14
+ export { VideoRedactionTool, init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, SplineContourSegmentationTool, BidirectionalTool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, MagnifyTool, AdvancedMagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SculptorTool, EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, BrushTool, OrientationMarkerTool, SegmentSelectTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EACL,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EACL,QAAQ,EACR,cAAc,EACd,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,qCAAqC,EACrC,mBAAmB,EACnB,+BAA+B,EAC/B,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,8BAA8B,EAC9B,uBAAuB,EACvB,SAAS,EACT,SAAS,EACT,aAAa,EACb,yBAAyB,EACzB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,4BAA4B,EAC5B,UAAU,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,kBAAkB,MAAM,uCAAuC,CAAC;AAEvE,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAElB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,UAAU,EACV,yBAAyB,EAEzB,QAAQ,EACR,cAAc,EACd,qBAAqB,EAErB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAElB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,4BAA4B,EAC5B,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,qCAAqC,EACrC,mBAAmB,EACnB,+BAA+B,EAC/B,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,yBAAyB,EACzB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,EAEV,uBAAuB,EAEvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,8BAA8B,EAC9B,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EAEjB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,KAAK,EAEL,gBAAgB,EAEhB,KAAK,EAEL,SAAS,EAET,OAAO,EAEP,UAAU,EAEV,YAAY,EAEZ,SAAS,EACT,OAAO,GACR,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { AnnotationTool } from './base';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ import { EventTypes, ToolProps, PublicToolProps, SVGDrawingHelper } from '../types';
4
+ declare class WindowLevelRegionTool extends AnnotationTool {
5
+ static toolName: any;
6
+ editData: {
7
+ annotation: any;
8
+ viewportIdsToRender: string[];
9
+ } | null;
10
+ isDrawing: boolean;
11
+ constructor(toolProps?: PublicToolProps, defaultToolProps?: ToolProps);
12
+ addNewAnnotation: (evt: EventTypes.InteractionEventType) => any;
13
+ _endCallback: (evt: EventTypes.InteractionEventType) => void;
14
+ _dragCallback: (evt: EventTypes.InteractionEventType) => void;
15
+ _activateDraw: (element: any) => void;
16
+ _deactivateDraw: (element: any) => void;
17
+ renderAnnotation: (enabledElement: Types.IEnabledElement, svgDrawingHelper: SVGDrawingHelper) => boolean;
18
+ applyWindowLevelRegion: (annotation: any, element: any) => void;
19
+ cancel: () => void;
20
+ isPointNearTool: () => any;
21
+ toolSelectedCallback: () => void;
22
+ handleSelectedCallback: () => void;
23
+ _activateModify: () => void;
24
+ _deactivateModify: () => void;
25
+ }
26
+ export default WindowLevelRegionTool;
27
+ //# sourceMappingURL=WindowLevelRegionTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowLevelRegionTool.d.ts","sourceRoot":"","sources":["../../../src/tools/WindowLevelRegionTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAiBjD,OAAO,EACL,UAAU,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAgBlB,cAAM,qBAAsB,SAAQ,cAAc;IAChD,MAAM,CAAC,QAAQ,MAAC;IAEhB,QAAQ,EAAE;QACR,UAAU,EAAE,GAAG,CAAC;QAChB,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;gBAGjB,SAAS,GAAE,eAAoB,EAC/B,gBAAgB,GAAE,SAMjB;IAaH,gBAAgB,QAAS,WAAW,oBAAoB,KAAG,GAAG,CAiE5D;IAEF,YAAY,QAAS,WAAW,oBAAoB,KAAG,IAAI,CAsBzD;IAEF,aAAa,QAAS,WAAW,oBAAoB,KAAG,IAAI,CAwC1D;IAKF,aAAa,yBAWX;IAKF,eAAe,yBAWb;IAUF,gBAAgB,mBACE,MAAM,eAAe,oBACnB,gBAAgB,KACjC,OAAO,CAkER;IAEF,sBAAsB,qCAA0B,IAAI,CAuDlD;IAEF,MAAM,QAAO,IAAI,CAEf;IAEF,eAAe,YAEb;IAEF,oBAAoB,QAAO,IAAI,CAE7B;IAEF,sBAAsB,QAAO,IAAI,CAE/B;IAEF,eAAe,QAAO,IAAI,CAExB;IAEF,iBAAiB,QAAO,IAAI,CAE1B;CACH;AAGD,eAAe,qBAAqB,CAAC"}
@@ -2,6 +2,7 @@ import { BaseTool, AnnotationTool, AnnotationDisplayTool } from './base';
2
2
  import PanTool from './PanTool';
3
3
  import TrackballRotateTool from './TrackballRotateTool';
4
4
  import WindowLevelTool from './WindowLevelTool';
5
+ import WindowLevelRegionTool from './WindowLevelRegionTool';
5
6
  import StackScrollTool from './StackScrollTool';
6
7
  import PlanarRotateTool from './PlanarRotateTool';
7
8
  import StackScrollMouseWheelTool from './StackScrollToolMouseWheelTool';
@@ -48,5 +49,5 @@ import BrushTool from './segmentation/BrushTool';
48
49
  import PaintFillTool from './segmentation/PaintFillTool';
49
50
  import OrientationMarkerTool from './OrientationMarkerTool';
50
51
  import SegmentSelectTool from './segmentation/SegmentSelectTool';
51
- export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
52
+ export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
52
53
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import * as colorbar from './colorbar';
2
- export { colorbar };
2
+ import * as windowLevel from './windowlevel';
3
+ export { colorbar, windowLevel };
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utilities/voi/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utilities/voi/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare function calculateMinMaxMean(pixelLuminance: any, globalMin: any, globalMax: any): {
2
+ min: any;
3
+ max: any;
4
+ mean: number;
5
+ };
6
+ export { calculateMinMaxMean };
7
+ //# sourceMappingURL=calculateMinMaxMean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateMinMaxMean.d.ts","sourceRoot":"","sources":["../../../../../src/utilities/voi/windowlevel/calculateMinMaxMean.ts"],"names":[],"mappings":"AAAA,iBAAS,mBAAmB,CAAC,cAAc,KAAA,EAAE,SAAS,KAAA,EAAE,SAAS,KAAA;;;;EA2BhE;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ declare function extractWindowLevelRegionToolData(viewport: any): {
2
+ scalarData: any;
3
+ width: any;
4
+ height: any;
5
+ minPixelValue: number;
6
+ maxPixelValue: number;
7
+ rows: any;
8
+ columns: any;
9
+ color: any;
10
+ };
11
+ export { extractWindowLevelRegionToolData };
12
+ //# sourceMappingURL=extractWindowLevelRegionToolData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractWindowLevelRegionToolData.d.ts","sourceRoot":"","sources":["../../../../../src/utilities/voi/windowlevel/extractWindowLevelRegionToolData.ts"],"names":[],"mappings":"AAOA,iBAAS,gCAAgC,CAAC,QAAQ,KAAA;;;;;;;;;EASjD;AA8CD,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare function getLuminanceFromRegion(imageData: any, x: any, y: any, width: any, height: any): any[];
2
+ export { getLuminanceFromRegion };
3
+ //# sourceMappingURL=getLuminanceFromRegion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLuminanceFromRegion.d.ts","sourceRoot":"","sources":["../../../../../src/utilities/voi/windowlevel/getLuminanceFromRegion.ts"],"names":[],"mappings":"AAaA,iBAAS,sBAAsB,CAAC,SAAS,KAAA,EAAE,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,KAAK,KAAA,EAAE,MAAM,KAAA,SA2B7D;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { getLuminanceFromRegion } from './getLuminanceFromRegion';
2
+ import { calculateMinMaxMean } from './calculateMinMaxMean';
3
+ import { extractWindowLevelRegionToolData } from './extractWindowLevelRegionToolData';
4
+ export { getLuminanceFromRegion, calculateMinMaxMean, extractWindowLevelRegionToolData, };
5
+ //# sourceMappingURL=index.d.ts.map