@cornerstonejs/tools 0.49.1 → 0.50.1
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.
- package/dist/cjs/tools/WindowLevelTool.js +5 -1
- package/dist/cjs/tools/WindowLevelTool.js.map +1 -1
- package/dist/cjs/utilities/dynamicVolume/getDataInTime.d.ts +7 -0
- package/dist/cjs/utilities/dynamicVolume/getDataInTime.js +64 -0
- package/dist/cjs/utilities/dynamicVolume/getDataInTime.js.map +1 -0
- package/dist/cjs/utilities/dynamicVolume/index.d.ts +2 -0
- package/dist/cjs/utilities/dynamicVolume/index.js +9 -0
- package/dist/cjs/utilities/dynamicVolume/index.js.map +1 -0
- package/dist/cjs/utilities/index.d.ts +2 -1
- package/dist/cjs/utilities/index.js +3 -1
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/esm/tools/WindowLevelTool.js +4 -1
- package/dist/esm/tools/WindowLevelTool.js.map +1 -1
- package/dist/esm/utilities/dynamicVolume/getDataInTime.d.ts +7 -0
- package/dist/esm/utilities/dynamicVolume/getDataInTime.js +62 -0
- package/dist/esm/utilities/dynamicVolume/getDataInTime.js.map +1 -0
- package/dist/esm/utilities/dynamicVolume/index.d.ts +2 -0
- package/dist/esm/utilities/dynamicVolume/index.js +3 -0
- package/dist/esm/utilities/dynamicVolume/index.js.map +1 -0
- package/dist/esm/utilities/index.d.ts +2 -1
- package/dist/esm/utilities/index.js +2 -1
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -113,12 +113,16 @@ class WindowLevelTool extends base_1.BaseTool {
|
|
|
113
113
|
return core_1.utilities.windowLevel.toLowHighRange(windowWidth, windowCenter);
|
|
114
114
|
}
|
|
115
115
|
_getMultiplierFromDynamicRange(viewport, volumeId) {
|
|
116
|
+
var _a;
|
|
116
117
|
let imageDynamicRange;
|
|
117
118
|
if (volumeId) {
|
|
118
119
|
const imageVolume = core_1.cache.getVolume(volumeId);
|
|
119
120
|
const { dimensions } = imageVolume;
|
|
120
121
|
const scalarData = imageVolume.getScalarData();
|
|
121
|
-
|
|
122
|
+
const calculatedDynamicRange = this._getImageDynamicRangeFromMiddleSlice(scalarData, dimensions);
|
|
123
|
+
const BitsStored = (_a = imageVolume === null || imageVolume === void 0 ? void 0 : imageVolume.metadata) === null || _a === void 0 ? void 0 : _a.BitsStored;
|
|
124
|
+
const metadataDynamicRange = BitsStored ? Math.pow(2, BitsStored) : Infinity;
|
|
125
|
+
imageDynamicRange = Math.min(calculatedDynamicRange, metadataDynamicRange);
|
|
122
126
|
}
|
|
123
127
|
else {
|
|
124
128
|
imageDynamicRange = this._getImageDynamicRangeFromViewport(viewport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowLevelTool.js","sourceRoot":"","sources":["../../../src/tools/WindowLevelTool.ts"],"names":[],"mappings":";;AAAA,iCAAkC;AAClC,8CAO6B;AAI7B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,2BAA2B,GAAG,IAAI,CAAC;AACzC,MAAM,EAAE,GAAG,IAAI,CAAC;AAQhB,MAAM,eAAgB,SAAQ,eAAQ;IAEpC,YACE,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG;QACjB,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;KAC9C;QAED,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"WindowLevelTool.js","sourceRoot":"","sources":["../../../src/tools/WindowLevelTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@cornerstonejs/core");
|
|
4
|
+
function getDataInTime(dynamicVolume, options) {
|
|
5
|
+
let dataInTime;
|
|
6
|
+
const frames = options.frameNumbers || [
|
|
7
|
+
...Array(dynamicVolume.numTimePoints).keys(),
|
|
8
|
+
];
|
|
9
|
+
if (!options.maskVolumeId && !options.imageCoordinate) {
|
|
10
|
+
throw new Error('No ROI provided');
|
|
11
|
+
}
|
|
12
|
+
if (options.maskVolumeId && options.imageCoordinate) {
|
|
13
|
+
throw new Error('Please provide only one ROI');
|
|
14
|
+
}
|
|
15
|
+
if (options.maskVolumeId) {
|
|
16
|
+
const segmentationVolume = core_1.cache.getVolume(options.maskVolumeId);
|
|
17
|
+
const indexArray = segmentationVolume
|
|
18
|
+
.getScalarData()
|
|
19
|
+
.map((_, i) => i)
|
|
20
|
+
.filter((i) => segmentationVolume.getScalarData()[i] !== 0);
|
|
21
|
+
const dataInTime = _getTimePointDataMask(frames, indexArray, dynamicVolume);
|
|
22
|
+
return dataInTime;
|
|
23
|
+
}
|
|
24
|
+
if (options.imageCoordinate) {
|
|
25
|
+
const dataInTime = _getTimePointDataCoordinate(frames, options.imageCoordinate, dynamicVolume);
|
|
26
|
+
return dataInTime;
|
|
27
|
+
}
|
|
28
|
+
return dataInTime;
|
|
29
|
+
}
|
|
30
|
+
function _getTimePointDataCoordinate(frames, coordinate, volume) {
|
|
31
|
+
const { dimensions, imageData } = volume;
|
|
32
|
+
const index = imageData.worldToIndex(coordinate);
|
|
33
|
+
index[0] = Math.floor(index[0]);
|
|
34
|
+
index[1] = Math.floor(index[1]);
|
|
35
|
+
index[2] = Math.floor(index[2]);
|
|
36
|
+
if (!core_1.utilities.indexWithinDimensions(index, dimensions)) {
|
|
37
|
+
throw new Error('outside bounds');
|
|
38
|
+
}
|
|
39
|
+
const yMultiple = dimensions[0];
|
|
40
|
+
const zMultiple = dimensions[0] * dimensions[1];
|
|
41
|
+
const allScalarData = volume.getScalarDataArrays();
|
|
42
|
+
const value = [];
|
|
43
|
+
for (let i = frames[0]; i < frames[0] + frames.length; i++) {
|
|
44
|
+
const activeScalarData = allScalarData[i];
|
|
45
|
+
const scalarIndex = index[2] * zMultiple + index[1] * yMultiple + index[0];
|
|
46
|
+
value.push(activeScalarData[scalarIndex]);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
function _getTimePointDataMask(frames, indexArray, volume) {
|
|
51
|
+
const allScalarData = volume.getScalarDataArrays();
|
|
52
|
+
const value = [];
|
|
53
|
+
for (let i = 0; i < indexArray.length; i++) {
|
|
54
|
+
const indexValues = [];
|
|
55
|
+
for (let j = frames[0]; j < frames[0] + frames.length; j++) {
|
|
56
|
+
const activeScalarData = allScalarData[j];
|
|
57
|
+
indexValues.push(activeScalarData[indexArray[i]]);
|
|
58
|
+
}
|
|
59
|
+
value.push(indexValues);
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
exports.default = getDataInTime;
|
|
64
|
+
//# sourceMappingURL=getDataInTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDataInTime.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/getDataInTime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getDataInTime = void 0;
|
|
7
|
+
const getDataInTime_1 = __importDefault(require("./getDataInTime"));
|
|
8
|
+
exports.getDataInTime = getDataInTime_1.default;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AACnC,wBADF,uBAAa,CACE"}
|
|
@@ -24,5 +24,6 @@ import * as rectangleROITool from './rectangleROITool';
|
|
|
24
24
|
import * as stackPrefetch from './stackPrefetch';
|
|
25
25
|
import * as viewport from './viewport';
|
|
26
26
|
import * as touch from './touch';
|
|
27
|
+
import * as dynamicVolume from './dynamicVolume';
|
|
27
28
|
import { triggerEvent } from '@cornerstonejs/core';
|
|
28
|
-
export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
29
|
+
export { math, planar, viewportFilters, drawing, debounce, deepMerge, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.scroll = exports.stackPrefetch = exports.planarFreehandROITool = exports.rectangleROITool = exports.boundingBox = exports.clip = exports.cine = exports.viewport = exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRender = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.touch = exports.isObject = exports.orientation = exports.throttle = exports.deepMerge = exports.debounce = exports.drawing = exports.viewportFilters = exports.planar = exports.math = void 0;
|
|
29
|
+
exports.scroll = exports.stackPrefetch = exports.planarFreehandROITool = exports.rectangleROITool = exports.boundingBox = exports.clip = exports.cine = exports.viewport = exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRender = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.touch = exports.isObject = exports.orientation = exports.throttle = exports.dynamicVolume = exports.deepMerge = exports.debounce = exports.drawing = exports.viewportFilters = exports.planar = exports.math = void 0;
|
|
30
30
|
const getAnnotationNearPoint_1 = require("./getAnnotationNearPoint");
|
|
31
31
|
Object.defineProperty(exports, "getAnnotationNearPoint", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPoint; } });
|
|
32
32
|
Object.defineProperty(exports, "getAnnotationNearPointOnEnabledElement", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPointOnEnabledElement; } });
|
|
@@ -80,6 +80,8 @@ const viewport = __importStar(require("./viewport"));
|
|
|
80
80
|
exports.viewport = viewport;
|
|
81
81
|
const touch = __importStar(require("./touch"));
|
|
82
82
|
exports.touch = touch;
|
|
83
|
+
const dynamicVolume = __importStar(require("./dynamicVolume"));
|
|
84
|
+
exports.dynamicVolume = dynamicVolume;
|
|
83
85
|
const core_1 = require("@cornerstonejs/core");
|
|
84
86
|
Object.defineProperty(exports, "triggerEvent", { enumerable: true, get: function () { return core_1.triggerEvent; } });
|
|
85
87
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;AAuDhC,uGAzDA,+CAAsB,OAyDA;AACtB,uHAzDA,+DAAsC,OAyDA;AArDxC,0DAAkC;AAsChC,mBAtCK,kBAAQ,CAsCL;AArCV,4DAAoC;AAsClC,oBAtCK,mBAAS,CAsCL;AArCX,0DAAkC;AAuChC,mBAvCK,kBAAQ,CAuCL;AAtCV,0DAAkC;AAwChC,mBAxCK,kBAAQ,CAwCL;AAvCV,kDAA0B;AAqDxB,eArDK,cAAI,CAqDL;AApDN,oFAA4D;AAyC1D,gCAzCK,+BAAqB,CAyCL;AAxCvB,oHAA4F;AA0C1F,gDA1CK,+CAAqC,CA0CL;AAzCvC,wFAAgE;AA0C9D,kCA1CK,iCAAuB,CA0CL;AAzCzB,yEAAiD;AA8C/C,sBA9CK,qBAAW,CA8CL;AA5Cb,kFAA0D;AAwCxD,+BAxCK,8BAAoB,CAwCL;AAvCtB,0GAAkF;AAwChF,2CAxCK,0CAAgC,CAwCL;AAvClC,sDAA8B;AAkD5B,iBAlDK,gBAAM,CAkDL;AA/CR,6DAA+C;AAgC7C,oCAAY;AA/Bd,mDAAqC;AAqBnC,0BAAO;AApBT,6CAA+B;AAiB7B,oBAAI;AAhBN,iDAAmC;AAiBjC,wBAAM;AAhBR,mEAAqD;AAiBnD,0CAAe;AAhBjB,2DAA6C;AAsB3C,kCAAW;AArBb,6CAA+B;AAmC7B,oBAAI;AAlCN,2DAA6C;AAoC3C,kCAAW;AAnCb,+EAAiE;AAqC/D,sDAAqB;AApCvB,qEAAuD;AAmCrD,4CAAgB;AAlClB,+DAAiD;AAoC/C,sCAAa;AAnCf,qDAAuC;AA6BrC,4BAAQ;AA5BV,+CAAiC;AAiB/B,sBAAK;AAhBP,+DAAiD;AAY/C,sCAAa;AATf,8CAAmD;AAcjD,6FAdO,mBAAY,OAcP"}
|
|
@@ -116,7 +116,10 @@ class WindowLevelTool extends BaseTool {
|
|
|
116
116
|
const imageVolume = cache.getVolume(volumeId);
|
|
117
117
|
const { dimensions } = imageVolume;
|
|
118
118
|
const scalarData = imageVolume.getScalarData();
|
|
119
|
-
|
|
119
|
+
const calculatedDynamicRange = this._getImageDynamicRangeFromMiddleSlice(scalarData, dimensions);
|
|
120
|
+
const BitsStored = imageVolume?.metadata?.BitsStored;
|
|
121
|
+
const metadataDynamicRange = BitsStored ? 2 ** BitsStored : Infinity;
|
|
122
|
+
imageDynamicRange = Math.min(calculatedDynamicRange, metadataDynamicRange);
|
|
120
123
|
}
|
|
121
124
|
else {
|
|
122
125
|
imageDynamicRange = this._getImageDynamicRangeFromViewport(viewport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowLevelTool.js","sourceRoot":"","sources":["../../../src/tools/WindowLevelTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,SAAS,EACT,KAAK,GAEN,MAAM,qBAAqB,CAAC;AAI7B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,2BAA2B,GAAG,IAAI,CAAC;AACzC,MAAM,EAAE,GAAG,IAAI,CAAC;AAQhB,MAAM,eAAgB,SAAQ,QAAQ;IAEpC,YACE,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG;QACjB,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;KAC9C;QAED,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"WindowLevelTool.js","sourceRoot":"","sources":["../../../src/tools/WindowLevelTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { utilities, cache } from '@cornerstonejs/core';
|
|
2
|
+
function getDataInTime(dynamicVolume, options) {
|
|
3
|
+
let dataInTime;
|
|
4
|
+
const frames = options.frameNumbers || [
|
|
5
|
+
...Array(dynamicVolume.numTimePoints).keys(),
|
|
6
|
+
];
|
|
7
|
+
if (!options.maskVolumeId && !options.imageCoordinate) {
|
|
8
|
+
throw new Error('No ROI provided');
|
|
9
|
+
}
|
|
10
|
+
if (options.maskVolumeId && options.imageCoordinate) {
|
|
11
|
+
throw new Error('Please provide only one ROI');
|
|
12
|
+
}
|
|
13
|
+
if (options.maskVolumeId) {
|
|
14
|
+
const segmentationVolume = cache.getVolume(options.maskVolumeId);
|
|
15
|
+
const indexArray = segmentationVolume
|
|
16
|
+
.getScalarData()
|
|
17
|
+
.map((_, i) => i)
|
|
18
|
+
.filter((i) => segmentationVolume.getScalarData()[i] !== 0);
|
|
19
|
+
const dataInTime = _getTimePointDataMask(frames, indexArray, dynamicVolume);
|
|
20
|
+
return dataInTime;
|
|
21
|
+
}
|
|
22
|
+
if (options.imageCoordinate) {
|
|
23
|
+
const dataInTime = _getTimePointDataCoordinate(frames, options.imageCoordinate, dynamicVolume);
|
|
24
|
+
return dataInTime;
|
|
25
|
+
}
|
|
26
|
+
return dataInTime;
|
|
27
|
+
}
|
|
28
|
+
function _getTimePointDataCoordinate(frames, coordinate, volume) {
|
|
29
|
+
const { dimensions, imageData } = volume;
|
|
30
|
+
const index = imageData.worldToIndex(coordinate);
|
|
31
|
+
index[0] = Math.floor(index[0]);
|
|
32
|
+
index[1] = Math.floor(index[1]);
|
|
33
|
+
index[2] = Math.floor(index[2]);
|
|
34
|
+
if (!utilities.indexWithinDimensions(index, dimensions)) {
|
|
35
|
+
throw new Error('outside bounds');
|
|
36
|
+
}
|
|
37
|
+
const yMultiple = dimensions[0];
|
|
38
|
+
const zMultiple = dimensions[0] * dimensions[1];
|
|
39
|
+
const allScalarData = volume.getScalarDataArrays();
|
|
40
|
+
const value = [];
|
|
41
|
+
for (let i = frames[0]; i < frames[0] + frames.length; i++) {
|
|
42
|
+
const activeScalarData = allScalarData[i];
|
|
43
|
+
const scalarIndex = index[2] * zMultiple + index[1] * yMultiple + index[0];
|
|
44
|
+
value.push(activeScalarData[scalarIndex]);
|
|
45
|
+
}
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
function _getTimePointDataMask(frames, indexArray, volume) {
|
|
49
|
+
const allScalarData = volume.getScalarDataArrays();
|
|
50
|
+
const value = [];
|
|
51
|
+
for (let i = 0; i < indexArray.length; i++) {
|
|
52
|
+
const indexValues = [];
|
|
53
|
+
for (let j = frames[0]; j < frames[0] + frames.length; j++) {
|
|
54
|
+
const activeScalarData = allScalarData[j];
|
|
55
|
+
indexValues.push(activeScalarData[indexArray[i]]);
|
|
56
|
+
}
|
|
57
|
+
value.push(indexValues);
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
export default getDataInTime;
|
|
62
|
+
//# sourceMappingURL=getDataInTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDataInTime.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/getDataInTime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/dynamicVolume/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -24,5 +24,6 @@ import * as rectangleROITool from './rectangleROITool';
|
|
|
24
24
|
import * as stackPrefetch from './stackPrefetch';
|
|
25
25
|
import * as viewport from './viewport';
|
|
26
26
|
import * as touch from './touch';
|
|
27
|
+
import * as dynamicVolume from './dynamicVolume';
|
|
27
28
|
import { triggerEvent } from '@cornerstonejs/core';
|
|
28
|
-
export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
29
|
+
export { math, planar, viewportFilters, drawing, debounce, deepMerge, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
@@ -24,6 +24,7 @@ import * as rectangleROITool from './rectangleROITool';
|
|
|
24
24
|
import * as stackPrefetch from './stackPrefetch';
|
|
25
25
|
import * as viewport from './viewport';
|
|
26
26
|
import * as touch from './touch';
|
|
27
|
+
import * as dynamicVolume from './dynamicVolume';
|
|
27
28
|
import { triggerEvent } from '@cornerstonejs/core';
|
|
28
|
-
export { math, planar, viewportFilters, drawing, debounce, deepMerge, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
29
|
+
export { math, planar, viewportFilters, drawing, debounce, deepMerge, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, };
|
|
29
30
|
//# 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;AACjD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,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;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,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,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,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"}
|