@ohif/app 3.13.0-beta.64 → 3.13.0-beta.65
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/{2851.bundle.f4f60fab803d915d29c9.js → 2851.bundle.ffc5656f20a4159d591d.js} +2 -2
- package/dist/{7537.bundle.1726a7f7a4c378296085.js → 7537.bundle.889ba5f2707418c6fd88.js} +1 -1
- package/dist/{9039.bundle.7afa93b103c3b26d4855.js → 9039.bundle.f72736f47fedeff521e2.js} +123 -47
- package/dist/{9205.bundle.315c3b56464a7590235a.js → 9205.bundle.ed7bce8436a7a431955e.js} +122 -47
- package/dist/{9567.bundle.be350438bed4e656f278.js → 9567.bundle.ff782480a4c66e306027.js} +438 -85
- package/dist/{app.bundle.db872e626c172c6ad084.js → app.bundle.9e45525b479dad4d8113.js} +3 -3
- package/dist/{compute.bundle.a41ec0ba4f935200ab93.js → compute.bundle.b7c2ea55f1a69f4a736b.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/{polySeg.bundle.be57af5b834dd833a418.js → polySeg.bundle.e1f6f05d81ea1352bef3.js} +1 -1
- package/dist/sw.js +1 -1
- package/package.json +21 -21
- /package/dist/{1459.bundle.075f1c281d008449f184.js → 1459.bundle.b76252d4cbc3588eba65.js} +0 -0
- /package/dist/{1933.bundle.8ab15ac46f3904309eee.js → 1933.bundle.10e823bd588169da5894.js} +0 -0
- /package/dist/{2018.bundle.45bbc23e30f022f0f051.js → 2018.bundle.a2960b28da742a90207e.js} +0 -0
- /package/dist/{213.bundle.a5eb36962ddcf90bcf1f.js → 213.bundle.33ca5d29734d9e99a676.js} +0 -0
- /package/dist/{2424.bundle.aebb08690e66ee2d4cb6.js → 2424.bundle.31d8e6bdf23d51886680.js} +0 -0
- /package/dist/{3138.bundle.3bbb1dcd1744680d059b.js → 3138.bundle.2fd53c9e63b1aea321ac.js} +0 -0
- /package/dist/{3461.bundle.1f379ffaaa0fa18a557d.js → 3461.bundle.b50d8125ecc168f22da3.js} +0 -0
- /package/dist/{4507.bundle.5ce023184cf2bcaa1670.js → 4507.bundle.061dfcf4609ef7aa8ede.js} +0 -0
- /package/dist/{4819.bundle.758017f50435d201d4b2.js → 4819.bundle.ac518de1987ad93304c8.js} +0 -0
- /package/dist/{5015.bundle.8c007df25792b1e1f7aa.js → 5015.bundle.46f8b754a318286c18ad.js} +0 -0
- /package/dist/{5028.bundle.03f40e29fdff23f6849a.js → 5028.bundle.608de6dde0d0af9e2b3e.js} +0 -0
- /package/dist/{5457.bundle.b44b51c1cd66d564910a.js → 5457.bundle.449b35dfd1134c977985.js} +0 -0
- /package/dist/{5485.bundle.25750f0b942d84d64902.js → 5485.bundle.c59e61ecef95882924d1.js} +0 -0
- /package/dist/{6027.bundle.ec904d1b23d3802ff878.js → 6027.bundle.ea6f6e5bbb336cdb2796.js} +0 -0
- /package/dist/{7166.bundle.3dbcf50dcc98c5a2dc58.js → 7166.bundle.bd50b3917b5ee6166971.js} +0 -0
- /package/dist/{7639.bundle.80cfc93c666ebaf624e1.js → 7639.bundle.04596df767fc6b0003a3.js} +0 -0
- /package/dist/{8305.bundle.fb3d726f0b3cc90f1e0a.js → 8305.bundle.a9764cd29cfa5bc6fd79.js} +0 -0
- /package/dist/{8499.bundle.5456c7de8e58ee651477.js → 8499.bundle.4a7f127900cf03af4e49.js} +0 -0
- /package/dist/{85.bundle.cbf41aeda04786647753.js → 85.bundle.e122f01517ddea1e3af0.js} +0 -0
- /package/dist/{8558.bundle.deca7697a26442ff37ec.js → 8558.bundle.522dbc153f443298deaa.js} +0 -0
- /package/dist/{8583.bundle.a3c87b570c9206a60c5b.js → 8583.bundle.bd1d92122c5ebfb867fc.js} +0 -0
- /package/dist/{9927.bundle.0c91b35dba333bce3a49.js → 9927.bundle.21cdba4cf5309feb8b7d.js} +0 -0
|
@@ -10438,6 +10438,7 @@ class AdvancedMagnifyViewport {
|
|
|
10438
10438
|
_syncViewportsCameras(sourceViewport, magnifyViewport) {
|
|
10439
10439
|
const worldPos = sourceViewport.canvasToWorld(this.position);
|
|
10440
10440
|
const parallelScale = this._convertZoomFactorToParallelScale(sourceViewport, magnifyViewport, this.zoomFactor);
|
|
10441
|
+
const { flipHorizontal, flipVertical } = sourceViewport.getCamera();
|
|
10441
10442
|
const { focalPoint, position, viewPlaneNormal } = magnifyViewport.getCamera();
|
|
10442
10443
|
const distance = Math.sqrt(Math.pow(focalPoint[0] - position[0], 2) +
|
|
10443
10444
|
Math.pow(focalPoint[1] - position[1], 2) +
|
|
@@ -10456,6 +10457,8 @@ class AdvancedMagnifyViewport {
|
|
|
10456
10457
|
parallelScale,
|
|
10457
10458
|
focalPoint: updatedFocalPoint,
|
|
10458
10459
|
position: updatedPosition,
|
|
10460
|
+
flipHorizontal,
|
|
10461
|
+
flipVertical,
|
|
10459
10462
|
});
|
|
10460
10463
|
}
|
|
10461
10464
|
_syncStackViewports(sourceViewport, magnifyViewport) {
|
|
@@ -12518,7 +12521,7 @@ class MagnifyTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .BaseTool */ .oS
|
|
|
12518
12521
|
const { viewport } = enabledElement;
|
|
12519
12522
|
const { element } = viewport;
|
|
12520
12523
|
const viewportProperties = viewport.getProperties();
|
|
12521
|
-
const { rotation: originalViewportRotation } = viewport.getViewPresentation();
|
|
12524
|
+
const { rotation: originalViewportRotation, flipHorizontal: originalViewportFlipHorizontal, flipVertical: originalViewportFlipVertical, } = viewport.getViewPresentation();
|
|
12522
12525
|
const { canvas: canvasPos, world: worldPos } = currentPoints;
|
|
12523
12526
|
let magnifyToolElement;
|
|
12524
12527
|
magnifyToolElement = element.querySelector('.magnifyTool');
|
|
@@ -12549,6 +12552,8 @@ class MagnifyTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .BaseTool */ .oS
|
|
|
12549
12552
|
magnifyViewport.setProperties(viewportProperties);
|
|
12550
12553
|
magnifyViewport.setViewPresentation({
|
|
12551
12554
|
rotation: originalViewportRotation,
|
|
12555
|
+
flipHorizontal: originalViewportFlipHorizontal,
|
|
12556
|
+
flipVertical: originalViewportFlipVertical,
|
|
12552
12557
|
});
|
|
12553
12558
|
const { parallelScale } = viewport.getCamera();
|
|
12554
12559
|
const { focalPoint, position, viewPlaneNormal } = magnifyViewport.getCamera();
|
|
@@ -12756,12 +12761,19 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
12756
12761
|
showEdgeFaces: true,
|
|
12757
12762
|
showCornerFaces: true,
|
|
12758
12763
|
keepOrientationUp: true,
|
|
12764
|
+
highlightColor: [255, 255, 255],
|
|
12765
|
+
edgeColor: [200, 200, 200],
|
|
12766
|
+
cornerColor: [150, 150, 150],
|
|
12767
|
+
restingAmbient: 1.0,
|
|
12768
|
+
hoverAmbient: 1.0,
|
|
12759
12769
|
},
|
|
12760
12770
|
}) {
|
|
12761
12771
|
super(toolProps, defaultToolProps);
|
|
12762
12772
|
this.widget = new _utilities_vtkjs_OrientationControllerWidget__WEBPACK_IMPORTED_MODULE_5__/* .vtkOrientationControllerWidget */ .C();
|
|
12763
12773
|
this.resizeObservers = new Map();
|
|
12764
12774
|
this.cameraHandlers = new Map();
|
|
12775
|
+
this.animationFrameHandles = new Map();
|
|
12776
|
+
this.animationTokens = new Map();
|
|
12765
12777
|
this._getViewportsInfo = () => {
|
|
12766
12778
|
const viewports = (0,_store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_2__.getToolGroup)(this.toolGroupId)?.viewportsInfo;
|
|
12767
12779
|
return viewports || [];
|
|
@@ -12855,6 +12867,7 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
12855
12867
|
}
|
|
12856
12868
|
const volumeViewport = viewport;
|
|
12857
12869
|
this.widget.positionActors(volumeViewport, actors, this.getPositionConfig());
|
|
12870
|
+
this.widget.syncOverlayViewport(viewportId, volumeViewport);
|
|
12858
12871
|
viewport.render();
|
|
12859
12872
|
};
|
|
12860
12873
|
}
|
|
@@ -12920,6 +12933,9 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
12920
12933
|
this.resizeObservers.forEach((observer) => observer.disconnect());
|
|
12921
12934
|
this.resizeObservers.clear();
|
|
12922
12935
|
this.cameraHandlers.clear();
|
|
12936
|
+
this.animationFrameHandles.forEach((handle) => cancelAnimationFrame(handle));
|
|
12937
|
+
this.animationFrameHandles.clear();
|
|
12938
|
+
this.animationTokens.clear();
|
|
12923
12939
|
}
|
|
12924
12940
|
createAnnotatedRhombActor() {
|
|
12925
12941
|
const faceColors = this.getFaceColors();
|
|
@@ -12930,9 +12946,17 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
12930
12946
|
opacity: this.configuration.opacity ?? 1.0,
|
|
12931
12947
|
showEdgeFaces: this.configuration.showEdgeFaces !== false,
|
|
12932
12948
|
showCornerFaces: this.configuration.showCornerFaces !== false,
|
|
12949
|
+
highlightColor: this.configuration.highlightColor ?? [255, 255, 255],
|
|
12950
|
+
edgeColor: this.configuration.edgeColor ?? [200, 200, 200],
|
|
12951
|
+
cornerColor: this.configuration.cornerColor ?? [150, 150, 150],
|
|
12952
|
+
restingAmbient: this.configuration.restingAmbient ?? 1.0,
|
|
12953
|
+
hoverAmbient: this.configuration.hoverAmbient ?? 1.0,
|
|
12933
12954
|
});
|
|
12934
12955
|
}
|
|
12935
12956
|
addMarkerToViewport(viewportId, renderingEngineId) {
|
|
12957
|
+
if (this.widget.getActors(viewportId)) {
|
|
12958
|
+
return;
|
|
12959
|
+
}
|
|
12936
12960
|
const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__.getEnabledElementByIds)(viewportId, renderingEngineId);
|
|
12937
12961
|
if (!enabledElement) {
|
|
12938
12962
|
console.warn('OrientationControllerTool: No enabled element found');
|
|
@@ -12973,8 +12997,8 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
12973
12997
|
}
|
|
12974
12998
|
},
|
|
12975
12999
|
onFaceHover: (result) => {
|
|
12976
|
-
if (result
|
|
12977
|
-
this.widget.highlightFace(result.pickedActor, result.cellId, volumeViewport,
|
|
13000
|
+
if (result) {
|
|
13001
|
+
this.widget.highlightFace(result.pickedActor, result.cellId, volumeViewport, result.actorIndex === 0);
|
|
12978
13002
|
}
|
|
12979
13003
|
else {
|
|
12980
13004
|
this.widget.clearHighlight();
|
|
@@ -13013,6 +13037,14 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
13013
13037
|
viewport.render();
|
|
13014
13038
|
}
|
|
13015
13039
|
animateCameraToOrientation(viewport, targetViewPlaneNormal, targetViewUp) {
|
|
13040
|
+
const viewportId = viewport.id;
|
|
13041
|
+
const existingHandle = this.animationFrameHandles.get(viewportId);
|
|
13042
|
+
if (existingHandle !== undefined) {
|
|
13043
|
+
cancelAnimationFrame(existingHandle);
|
|
13044
|
+
this.animationFrameHandles.delete(viewportId);
|
|
13045
|
+
}
|
|
13046
|
+
const nextToken = (this.animationTokens.get(viewportId) ?? 0) + 1;
|
|
13047
|
+
this.animationTokens.set(viewportId, nextToken);
|
|
13016
13048
|
const keepOrientationUp = this.configuration.keepOrientationUp !== false;
|
|
13017
13049
|
const renderer = viewport.getRenderer();
|
|
13018
13050
|
const camera = renderer.getActiveCamera();
|
|
@@ -13024,34 +13056,33 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
13024
13056
|
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(startRight, startUp, startForward);
|
|
13025
13057
|
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(startRight, startRight);
|
|
13026
13058
|
const startMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.fromValues */ .pB.fromValues(startRight[0], startRight[1], startRight[2], 0, startUp[0], startUp[1], startUp[2], 0, startForward[0], startForward[1], startForward[2], 0, 0, 0, 0, 1);
|
|
13059
|
+
const targetForward = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create(), targetViewPlaneNormal);
|
|
13027
13060
|
let targetUp;
|
|
13028
13061
|
if (keepOrientationUp) {
|
|
13029
13062
|
targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.fromValues */ .eR.fromValues(targetViewUp[0], targetViewUp[1], targetViewUp[2]);
|
|
13030
13063
|
}
|
|
13031
13064
|
else {
|
|
13032
|
-
const
|
|
13033
|
-
const
|
|
13034
|
-
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .
|
|
13035
|
-
const dot = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(currentUp, normalizedForward);
|
|
13065
|
+
const currentFwd = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create(), startForward);
|
|
13066
|
+
const rotQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create();
|
|
13067
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.rotationTo */ .Yu.rotationTo(rotQuat, currentFwd, targetForward);
|
|
13036
13068
|
targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create();
|
|
13037
|
-
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.
|
|
13069
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.transformQuat */ .eR.transformQuat(targetUp, startUp, rotQuat);
|
|
13038
13070
|
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
|
|
13039
|
-
if (gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.length */ .eR.length(targetUp) < 0.001) {
|
|
13040
|
-
if (Math.abs(normalizedForward[2]) < 0.9) {
|
|
13041
|
-
targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.fromValues */ .eR.fromValues(0, 0, 1);
|
|
13042
|
-
}
|
|
13043
|
-
else {
|
|
13044
|
-
targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.fromValues */ .eR.fromValues(0, 1, 0);
|
|
13045
|
-
}
|
|
13046
|
-
const dot2 = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(targetUp, normalizedForward);
|
|
13047
|
-
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(targetUp, targetUp, normalizedForward, -dot2);
|
|
13048
|
-
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
|
|
13049
|
-
}
|
|
13050
13071
|
}
|
|
13072
|
+
const upDotForward = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(targetUp, targetForward);
|
|
13073
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(targetUp, targetUp, targetForward, -upDotForward);
|
|
13074
|
+
if (gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.length */ .eR.length(targetUp) < 0.0001) {
|
|
13075
|
+
targetUp = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.clone */ .eR.clone(startUp);
|
|
13076
|
+
const fallbackDot = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.dot */ .eR.dot(targetUp, targetForward);
|
|
13077
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(targetUp, targetUp, targetForward, -fallbackDot);
|
|
13078
|
+
}
|
|
13079
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
|
|
13051
13080
|
const targetRight = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.create */ .eR.create();
|
|
13052
|
-
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(targetRight, targetUp,
|
|
13081
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(targetRight, targetUp, targetForward);
|
|
13053
13082
|
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetRight, targetRight);
|
|
13054
|
-
|
|
13083
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.cross */ .eR.cross(targetUp, targetForward, targetRight);
|
|
13084
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .vec3.normalize */ .eR.normalize(targetUp, targetUp);
|
|
13085
|
+
const targetMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.fromValues */ .pB.fromValues(targetRight[0], targetRight[1], targetRight[2], 0, targetUp[0], targetUp[1], targetUp[2], 0, targetForward[0], targetForward[1], targetForward[2], 0, 0, 0, 0, 1);
|
|
13055
13086
|
const startQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.getRotation */ .pB.getRotation(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create(), startMatrix);
|
|
13056
13087
|
const targetQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .mat4.getRotation */ .pB.getRotation(gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create(), targetMatrix);
|
|
13057
13088
|
let dotProduct = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.dot */ .Yu.dot(startQuat, targetQuat);
|
|
@@ -13063,13 +13094,21 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
13063
13094
|
if (dotProduct > threshold) {
|
|
13064
13095
|
return;
|
|
13065
13096
|
}
|
|
13066
|
-
const steps = 10;
|
|
13067
13097
|
const duration = 150;
|
|
13068
|
-
const
|
|
13069
|
-
|
|
13070
|
-
|
|
13071
|
-
|
|
13072
|
-
|
|
13098
|
+
const animationStart = performance.now();
|
|
13099
|
+
const finalNormal = [
|
|
13100
|
+
targetForward[0],
|
|
13101
|
+
targetForward[1],
|
|
13102
|
+
targetForward[2],
|
|
13103
|
+
];
|
|
13104
|
+
const finalUp = [targetUp[0], targetUp[1], targetUp[2]];
|
|
13105
|
+
const animate = (now) => {
|
|
13106
|
+
if (this.animationTokens.get(viewportId) !== nextToken) {
|
|
13107
|
+
return;
|
|
13108
|
+
}
|
|
13109
|
+
const elapsed = now - animationStart;
|
|
13110
|
+
const t = Math.min(1, elapsed / duration);
|
|
13111
|
+
const isLastStep = t >= 1;
|
|
13073
13112
|
const easedT = t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;
|
|
13074
13113
|
const interpolatedQuat = gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.create */ .Yu.create();
|
|
13075
13114
|
gl_matrix__WEBPACK_IMPORTED_MODULE_4__/* .quat.slerp */ .Yu.slerp(interpolatedQuat, startQuat, targetQuat, easedT);
|
|
@@ -13078,16 +13117,21 @@ class OrientationControllerTool extends _base__WEBPACK_IMPORTED_MODULE_0__/* .Ba
|
|
|
13078
13117
|
const interpolatedForward = interpolatedMatrix.slice(8, 11);
|
|
13079
13118
|
const interpolatedUp = interpolatedMatrix.slice(4, 7);
|
|
13080
13119
|
viewport.setCamera({
|
|
13081
|
-
viewPlaneNormal: interpolatedForward,
|
|
13082
|
-
viewUp: interpolatedUp,
|
|
13120
|
+
viewPlaneNormal: isLastStep ? finalNormal : interpolatedForward,
|
|
13121
|
+
viewUp: isLastStep ? finalUp : interpolatedUp,
|
|
13083
13122
|
});
|
|
13084
13123
|
viewport.resetCamera(ANIMATE_RESET_CAMERA_OPTIONS);
|
|
13085
13124
|
viewport.render();
|
|
13086
|
-
if (
|
|
13087
|
-
|
|
13125
|
+
if (!isLastStep) {
|
|
13126
|
+
const handle = requestAnimationFrame(animate);
|
|
13127
|
+
this.animationFrameHandles.set(viewportId, handle);
|
|
13128
|
+
}
|
|
13129
|
+
else {
|
|
13130
|
+
this.animationFrameHandles.delete(viewportId);
|
|
13088
13131
|
}
|
|
13089
13132
|
};
|
|
13090
|
-
animate
|
|
13133
|
+
const handle = requestAnimationFrame(animate);
|
|
13134
|
+
this.animationFrameHandles.set(viewportId, handle);
|
|
13091
13135
|
}
|
|
13092
13136
|
}
|
|
13093
13137
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrientationControllerTool);
|
|
@@ -16524,6 +16568,8 @@ VolumeCroppingControlTool.toolName = 'VolumeCroppingControl';
|
|
|
16524
16568
|
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(29857);
|
|
16525
16569
|
/* harmony import */ var _utilities_volumeCropping__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(88380);
|
|
16526
16570
|
/* harmony import */ var _utilities_draw3D__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(68304);
|
|
16571
|
+
/* harmony import */ var _utilities_interactionDragCoordinator__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(51970);
|
|
16572
|
+
|
|
16527
16573
|
|
|
16528
16574
|
|
|
16529
16575
|
|
|
@@ -16567,6 +16613,7 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
16567
16613
|
this.originalClippingPlanes = [];
|
|
16568
16614
|
this.draggingSphereIndex = null;
|
|
16569
16615
|
this.rotatePlanesOnDrag = false;
|
|
16616
|
+
this.suppressPlaneRotationForCurrentDrag = false;
|
|
16570
16617
|
this.cornerDragOffset = null;
|
|
16571
16618
|
this.faceDragOffset = null;
|
|
16572
16619
|
this.volumeDirectionVectors = null;
|
|
@@ -16589,8 +16636,11 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
16589
16636
|
const { element } = eventDetail;
|
|
16590
16637
|
const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_8__.getEnabledElement)(element);
|
|
16591
16638
|
const { viewport } = enabledElement;
|
|
16592
|
-
|
|
16593
|
-
const actor =
|
|
16639
|
+
this.suppressPlaneRotationForCurrentDrag = (0,_utilities_interactionDragCoordinator__WEBPACK_IMPORTED_MODULE_13__/* .isDragOwnedBy */ .lq)(viewport.id, 'orientation-controller');
|
|
16640
|
+
const actor = this._getVolumeActor(viewport);
|
|
16641
|
+
if (!actor) {
|
|
16642
|
+
return false;
|
|
16643
|
+
}
|
|
16594
16644
|
const mapper = actor.getMapper();
|
|
16595
16645
|
const mouseCanvas = [
|
|
16596
16646
|
evt.detail.currentPoints.canvas[0],
|
|
@@ -16661,6 +16711,7 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
16661
16711
|
this.draggingSphereIndex = null;
|
|
16662
16712
|
this.cornerDragOffset = null;
|
|
16663
16713
|
this.faceDragOffset = null;
|
|
16714
|
+
this.suppressPlaneRotationForCurrentDrag = false;
|
|
16664
16715
|
viewport.render();
|
|
16665
16716
|
this._hasResolutionChanged = false;
|
|
16666
16717
|
};
|
|
@@ -16818,12 +16869,12 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
16818
16869
|
if (!viewport) {
|
|
16819
16870
|
return;
|
|
16820
16871
|
}
|
|
16821
|
-
const
|
|
16822
|
-
if (!
|
|
16872
|
+
const volumeActor = this._getVolumeActor(viewport);
|
|
16873
|
+
if (!volumeActor) {
|
|
16823
16874
|
console.warn('VolumeCroppingTool: No volume actors found in the viewport.');
|
|
16824
16875
|
return;
|
|
16825
16876
|
}
|
|
16826
|
-
const imageData =
|
|
16877
|
+
const imageData = volumeActor.getMapper().getInputData();
|
|
16827
16878
|
if (!imageData) {
|
|
16828
16879
|
console.warn('VolumeCroppingTool: No image data found for volume actor.');
|
|
16829
16880
|
return;
|
|
@@ -16945,9 +16996,7 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
16945
16996
|
this.edgeLines[uid] = { actor, source, key1, key2 };
|
|
16946
16997
|
}
|
|
16947
16998
|
});
|
|
16948
|
-
const mapper =
|
|
16949
|
-
.getDefaultActor()
|
|
16950
|
-
.actor.getMapper();
|
|
16999
|
+
const mapper = volumeActor.getMapper();
|
|
16951
17000
|
mapper.addClippingPlane(planeXMin);
|
|
16952
17001
|
mapper.addClippingPlane(planeXMax);
|
|
16953
17002
|
mapper.addClippingPlane(planeYMin);
|
|
@@ -17294,6 +17343,23 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
17294
17343
|
getHandlesVisible() {
|
|
17295
17344
|
return this.configuration.showHandles;
|
|
17296
17345
|
}
|
|
17346
|
+
setHandleRadius(radius) {
|
|
17347
|
+
this.configuration.sphereRadius = radius;
|
|
17348
|
+
this.sphereStates.forEach((state) => {
|
|
17349
|
+
if (state?.sphereSource?.setRadius) {
|
|
17350
|
+
state.sphereSource.setRadius(radius);
|
|
17351
|
+
state.sphereSource.modified();
|
|
17352
|
+
}
|
|
17353
|
+
});
|
|
17354
|
+
const viewportsInfo = this._getViewportsInfo();
|
|
17355
|
+
const [viewport3D] = viewportsInfo;
|
|
17356
|
+
if (!viewport3D) {
|
|
17357
|
+
return;
|
|
17358
|
+
}
|
|
17359
|
+
const renderingEngine = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_8__.getRenderingEngine)(viewport3D.renderingEngineId);
|
|
17360
|
+
const viewport = renderingEngine?.getViewport(viewport3D.viewportId);
|
|
17361
|
+
viewport?.render();
|
|
17362
|
+
}
|
|
17297
17363
|
getClippingPlanesVisible() {
|
|
17298
17364
|
return this.configuration.showClippingPlanes;
|
|
17299
17365
|
}
|
|
@@ -17329,7 +17395,8 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
17329
17395
|
}
|
|
17330
17396
|
else {
|
|
17331
17397
|
const shiftKey = evt.detail.event?.shiftKey ?? false;
|
|
17332
|
-
if (this.rotatePlanesOnDrag === true || shiftKey)
|
|
17398
|
+
if ((this.rotatePlanesOnDrag === true || shiftKey) &&
|
|
17399
|
+
!this.suppressPlaneRotationForCurrentDrag) {
|
|
17333
17400
|
this._rotateClippingPlanes(evt);
|
|
17334
17401
|
return;
|
|
17335
17402
|
}
|
|
@@ -17387,9 +17454,11 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
17387
17454
|
}
|
|
17388
17455
|
}
|
|
17389
17456
|
_updateClippingPlanes(viewport) {
|
|
17390
|
-
const
|
|
17391
|
-
const
|
|
17392
|
-
|
|
17457
|
+
const actor = this._getVolumeActor(viewport);
|
|
17458
|
+
const mapper = this._getVolumeMapper(viewport);
|
|
17459
|
+
if (!actor || !mapper) {
|
|
17460
|
+
return;
|
|
17461
|
+
}
|
|
17393
17462
|
const matrix = actor.getMatrix();
|
|
17394
17463
|
if (!this.configuration.showClippingPlanes) {
|
|
17395
17464
|
mapper.removeAllClippingPlanes();
|
|
@@ -17526,7 +17595,10 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
17526
17595
|
}
|
|
17527
17596
|
_getVolumeActor(viewport) {
|
|
17528
17597
|
const vp = viewport || this._getViewport();
|
|
17529
|
-
return vp
|
|
17598
|
+
return vp
|
|
17599
|
+
?.getActors?.()
|
|
17600
|
+
?.find((entry) => entry.actor?.getClassName?.() === 'vtkVolume')
|
|
17601
|
+
?.actor;
|
|
17530
17602
|
}
|
|
17531
17603
|
_getVolumeMapper(viewport) {
|
|
17532
17604
|
const actor = this._getVolumeActor(viewport);
|
|
@@ -17543,7 +17615,10 @@ class VolumeCroppingTool extends _base__WEBPACK_IMPORTED_MODULE_7__/* .BaseTool
|
|
|
17543
17615
|
}
|
|
17544
17616
|
}
|
|
17545
17617
|
_updateClippingPlanesFromFaceSpheres(viewport) {
|
|
17546
|
-
const mapper =
|
|
17618
|
+
const mapper = this._getVolumeMapper(viewport);
|
|
17619
|
+
if (!mapper) {
|
|
17620
|
+
return;
|
|
17621
|
+
}
|
|
17547
17622
|
this.originalClippingPlanes[_utilities_volumeCropping__WEBPACK_IMPORTED_MODULE_11__.PLANEINDEX.XMIN].origin = [
|
|
17548
17623
|
...this.sphereStates[_utilities_volumeCropping__WEBPACK_IMPORTED_MODULE_11__.SPHEREINDEX.XMIN].point,
|
|
17549
17624
|
];
|
|
@@ -47473,7 +47548,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
47473
47548
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
47474
47549
|
/* harmony export */ r: () => (/* binding */ version)
|
|
47475
47550
|
/* harmony export */ });
|
|
47476
|
-
const version = '4.
|
|
47551
|
+
const version = '4.22.3';
|
|
47477
47552
|
|
|
47478
47553
|
|
|
47479
47554
|
/***/ },
|