@ohif/app 3.13.0-beta.87 → 3.13.0-beta.89
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/{5491.bundle.4866d2ecb20dd089e071.js → 1124.bundle.3c1b947a1884362c1241.js} +376 -222
- package/dist/1429.bundle.bd1585628440399e6c3f.js +2079 -0
- package/dist/{2108.bundle.142ee8d405727d02b16a.js → 1704.bundle.38d95b81b9e1293e04de.js} +1 -643
- package/dist/{7537.bundle.3c7d71348190ed4e9565.js → 1741.bundle.abc3a09729ada4c25685.js} +105024 -55129
- package/dist/{1927.bundle.be67b3aafe238ca9f191.js → 1927.bundle.1749aa6ae7b1dd3d06b1.js} +1 -1
- package/dist/{2516.bundle.f62228e9a800de8d4b31.js → 2516.bundle.28427294c53e067811ca.js} +2 -2
- package/dist/{6354.bundle.929febcf6d326e582e00.js → 2802.bundle.3d6cc53ef3c69901431d.js} +31 -324
- package/dist/{3461.bundle.bb85e473a5de0d8a5fcd.js → 3461.bundle.2f3e998096ef3fca602b.js} +5 -4
- package/dist/{3617.bundle.502defead09bde277a49.js → 3617.bundle.f7f53b332f72e9fe6374.js} +2 -2
- package/dist/{3754.bundle.477cfd7fc3ff13e9dc67.js → 3754.bundle.2a46971b209140d4cb08.js} +12 -6
- package/dist/{9039.bundle.49ab126163ca208e52b3.js → 4335.bundle.69a7cc007e85f043488e.js} +4114 -4263
- package/dist/{4579.bundle.1c315389368cc476aed3.js → 451.bundle.6634a9dae2b4f0e9ebc9.js} +83 -30
- package/dist/{5028.bundle.7ad439186bb8b60b0536.js → 5028.bundle.f483671d94ded4c8f6f3.js} +2 -2
- package/dist/{5830.bundle.791019deddd536980a11.js → 5830.bundle.8327ccd3c8a6334ac315.js} +2 -2
- package/dist/{5858.bundle.466e58128de344ab53f3.js → 5858.bundle.c25c73ecbc47b1a69cea.js} +0 -4
- package/dist/{7190.bundle.479332d662ffe08d1f92.js → 6125.bundle.4e46ecd271f647cb977f.js} +2476 -4044
- package/dist/{6376.bundle.527820a5cb1eece2a8d2.js → 6376.bundle.c7c515ba478be810e03d.js} +8 -5
- package/dist/{9567.bundle.ff782480a4c66e306027.js → 650.bundle.5decc3ce72a22162b8f4.js} +3080 -216
- package/dist/{7166.bundle.557612f8ac4507000ee3.js → 7166.bundle.eeeda537770d73736e46.js} +161 -55
- package/dist/{6386.bundle.dc7e3b159d6b4733647f.js → 741.bundle.e47adc12429ee838d3fb.js} +3408 -3722
- package/dist/{7431.bundle.a9b4dbf97a8c196efe51.js → 7431.bundle.c3bd9a9f1ea743c81335.js} +61 -60
- package/dist/{8305.bundle.b6d3a2931f0edcc6652d.js → 8305.bundle.71787ad9e3df5d1dd30d.js} +2 -2
- package/dist/{8558.bundle.52ae379622062062207e.js → 8558.bundle.00d5dbdf73ca0a44831a.js} +1 -1
- package/dist/{8583.bundle.2debff754409dca6d074.js → 8583.bundle.40859ef5654559a1c66b.js} +3 -3
- package/dist/{9205.bundle.c974537f15d86687f6d2.js → 9205.bundle.d43cd617e38109746e4d.js} +2257 -2133
- package/dist/{4287.bundle.4f28e48c1e39a46dfc87.js → 9400.bundle.a56bfccf2bf7a51ed297.js} +1362 -692
- package/dist/{2075.bundle.ba9ac60662f1fa739378.js → 9475.bundle.693fe4de0573042a17f3.js} +203 -156
- package/dist/{app.bundle.50519318a7e0e4d2f0b1.js → app.bundle.93ee83d5e283aa1496da.js} +81239 -52123
- package/dist/{compute.bundle.2b82d8a0d1f3b41df1d2.js → compute.bundle.2fc1182cc9b2af5f4a40.js} +3 -15
- package/dist/{histogram-worker.bundle.a2a50c4674d99c619ca7.js → histogram-worker.bundle.c81373ef983363586dc5.js} +4 -4
- package/dist/index.html +1 -1
- package/dist/{interpolation.bundle.829844ff3f72f5645f29.js → interpolation.bundle.a31edd1d26d81ef65b9b.js} +6 -6
- package/dist/{polySeg.bundle.ad2080f28d2c471bf208.js → polySeg.bundle.294012e3a5458cd3fecc.js} +3 -15
- package/dist/sw.js +1 -1
- package/package.json +21 -21
- /package/dist/{1459.bundle.39220d7120bd7df8dd23.js → 1459.bundle.763540bccf93fda17fff.js} +0 -0
- /package/dist/{1933.bundle.33d48af9ebcc4d7649c5.js → 1933.bundle.8d54b74d93a7354925c5.js} +0 -0
- /package/dist/{2018.bundle.24c380747f172d7143ae.js → 2018.bundle.7ba8f9afeb48defb425b.js} +0 -0
- /package/dist/{213.bundle.e9ea6c402317dc346091.js → 213.bundle.1a54c6878a493c5b61c5.js} +0 -0
- /package/dist/{2424.bundle.f926b3128bb41763b849.js → 2424.bundle.c6d74f7129108d885a1b.js} +0 -0
- /package/dist/{3138.bundle.133e4884969b006957f1.js → 3138.bundle.3845b7e06b8ab2564951.js} +0 -0
- /package/dist/{4507.bundle.4d7e7016f2f64adfb1ae.js → 4507.bundle.b658ff59d35614916a2b.js} +0 -0
- /package/dist/{4819.bundle.4e047ba806033d9bba23.js → 4819.bundle.e28f5f1f0d481e190bb1.js} +0 -0
- /package/dist/{5015.bundle.c96918ea054c4b2b4200.js → 5015.bundle.455552a6df9b442b3c40.js} +0 -0
- /package/dist/{5457.bundle.482ba0f5ce9ff033e2fb.js → 5457.bundle.ee1026db729958b36a2e.js} +0 -0
- /package/dist/{5485.bundle.b9c59ca9409c3e907524.js → 5485.bundle.0ecad3940c321ae65b23.js} +0 -0
- /package/dist/{5802.bundle.da6055b6bf1a3db7b6d5.js → 5802.bundle.5e1a7df7ad850a5370f8.js} +0 -0
- /package/dist/{6027.bundle.11f3dfa6d991d343bc16.js → 6027.bundle.f276566b6237d9e16333.js} +0 -0
- /package/dist/{7639.bundle.6bbfb22054fb7f0f9de8.js → 7639.bundle.25e1a86f2248148c35d5.js} +0 -0
- /package/dist/{8499.bundle.64a3161ef7d9c8fc6791.js → 8499.bundle.22f25667db4ab2e59e57.js} +0 -0
- /package/dist/{85.bundle.38ef0a2e90a30dce91ae.js → 85.bundle.2aa39c9bf12258c7ca68.js} +0 -0
- /package/dist/{9862.bundle.f92516a34b9cef88c56f.js → 9862.bundle.fb87529360fb93010555.js} +0 -0
- /package/dist/{9927.bundle.550253549cb2ae31ba95.js → 9927.bundle.f6e7785bceeeb7a1c62e.js} +0 -0
|
@@ -142,7 +142,7 @@ function useActiveViewportSegmentationRepresentations() {
|
|
|
142
142
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86326);
|
|
143
143
|
/* harmony import */ var _ohif_core_src__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42356);
|
|
144
144
|
/* harmony import */ var _useViewportDisplaySets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10225);
|
|
145
|
-
/* harmony import */ var
|
|
145
|
+
/* harmony import */ var _utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(62739);
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
|
|
@@ -196,7 +196,7 @@ function useMeasurementTracking({
|
|
|
196
196
|
}
|
|
197
197
|
const viewport = cornerstoneViewportService?.getCornerstoneViewport(viewportId);
|
|
198
198
|
const SeriesInstanceUID = backgroundDisplaySet.SeriesInstanceUID;
|
|
199
|
-
if (
|
|
199
|
+
if ((0,_utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_3__/* .isVolumeViewportType */ .rX)(viewport)) {
|
|
200
200
|
const currentImageId = viewport?.getCurrentImageId();
|
|
201
201
|
if (!currentImageId) {
|
|
202
202
|
setIsTracked(false);
|
|
@@ -819,7 +819,9 @@ function useViewportDisplaySets(viewportId, options) {
|
|
|
819
819
|
/* harmony import */ var _useViewportDisplaySets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10225);
|
|
820
820
|
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15327);
|
|
821
821
|
/* harmony import */ var _utils_getDataIdForViewport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67142);
|
|
822
|
-
/* harmony import */ var
|
|
822
|
+
/* harmony import */ var _utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(62739);
|
|
823
|
+
/* harmony import */ var _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(93813);
|
|
824
|
+
|
|
823
825
|
|
|
824
826
|
|
|
825
827
|
|
|
@@ -828,13 +830,13 @@ function useViewportDisplaySets(viewportId, options) {
|
|
|
828
830
|
|
|
829
831
|
const getPosition = location => {
|
|
830
832
|
switch (location) {
|
|
831
|
-
case
|
|
833
|
+
case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_6__/* .ButtonLocation */ .ij.LeftMiddle:
|
|
832
834
|
return 'left';
|
|
833
|
-
case
|
|
835
|
+
case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_6__/* .ButtonLocation */ .ij.RightMiddle:
|
|
834
836
|
return 'right';
|
|
835
|
-
case
|
|
837
|
+
case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_6__/* .ButtonLocation */ .ij.BottomMiddle:
|
|
836
838
|
return 'bottom';
|
|
837
|
-
case
|
|
839
|
+
case _ohif_core_src_services_ToolBarService_ToolbarService__WEBPACK_IMPORTED_MODULE_6__/* .ButtonLocation */ .ij.TopMiddle:
|
|
838
840
|
return 'top';
|
|
839
841
|
default:
|
|
840
842
|
return 'bottom';
|
|
@@ -872,7 +874,7 @@ function useViewportRendering(viewportId, options) {
|
|
|
872
874
|
const voiRangeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
|
|
873
875
|
// Viewport from service; kept in state so we can subscribe to VIEWPORT_DATA_CHANGED when null and re-run effects when it becomes available
|
|
874
876
|
const [viewport, setViewport] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(() => viewportId ? cornerstoneViewportService.getCornerstoneViewport(viewportId) ?? null : null);
|
|
875
|
-
const [is3DVolume, setIs3DVolume] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(
|
|
877
|
+
const [is3DVolume, setIs3DVolume] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((0,_utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_5__/* .isVolume3DViewportType */ .Ov)(viewport));
|
|
876
878
|
const [opacity, setOpacityState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
|
|
877
879
|
const [opacityLinear, setOpacityLinearState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
|
|
878
880
|
const [threshold, setThresholdState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
|
|
@@ -957,7 +959,7 @@ function useViewportRendering(viewportId, options) {
|
|
|
957
959
|
if (!viewport) {
|
|
958
960
|
return;
|
|
959
961
|
}
|
|
960
|
-
if (!(
|
|
962
|
+
if (!(0,_utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_5__/* .isVolumeViewportType */ .rX)(viewport)) {
|
|
961
963
|
return;
|
|
962
964
|
}
|
|
963
965
|
const volumeIds = viewport.getAllVolumeIds();
|
|
@@ -994,7 +996,7 @@ function useViewportRendering(viewportId, options) {
|
|
|
994
996
|
return activePresetData.presets;
|
|
995
997
|
}, [allWindowLevelPresets, activeDisplaySetInstanceUID]);
|
|
996
998
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
997
|
-
setIs3DVolume(
|
|
999
|
+
setIs3DVolume((0,_utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_5__/* .isVolume3DViewportType */ .Ov)(viewport));
|
|
998
1000
|
if (!viewport || !activeDisplaySetInstanceUID) {
|
|
999
1001
|
return;
|
|
1000
1002
|
}
|
|
@@ -1236,7 +1238,7 @@ function useViewportRendering(viewportId, options) {
|
|
|
1236
1238
|
});
|
|
1237
1239
|
}, [commandsManager, validateActiveDisplaySet, viewport, viewportId]);
|
|
1238
1240
|
const setOpacity = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(opacityValue => {
|
|
1239
|
-
if (!viewport || !(
|
|
1241
|
+
if (!viewport || !(0,_utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_5__/* .isVolumeViewportType */ .rX)(viewport)) {
|
|
1240
1242
|
return;
|
|
1241
1243
|
}
|
|
1242
1244
|
|
|
@@ -1273,7 +1275,7 @@ function useViewportRendering(viewportId, options) {
|
|
|
1273
1275
|
setOpacity(actualOpacity);
|
|
1274
1276
|
}, [linearToOpacity, setOpacity]);
|
|
1275
1277
|
const setThreshold = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(thresholdValue => {
|
|
1276
|
-
if (!viewport || !(
|
|
1278
|
+
if (!viewport || !(0,_utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_5__/* .isVolumeViewportType */ .rX)(viewport)) {
|
|
1277
1279
|
return;
|
|
1278
1280
|
}
|
|
1279
1281
|
setThresholdState(thresholdValue);
|
|
@@ -1301,7 +1303,7 @@ function useViewportRendering(viewportId, options) {
|
|
|
1301
1303
|
if (!viewport) {
|
|
1302
1304
|
return null;
|
|
1303
1305
|
}
|
|
1304
|
-
if (
|
|
1306
|
+
if ((0,_utils_getLegacyViewportType__WEBPACK_IMPORTED_MODULE_5__/* .isStackViewportType */ .TF)(viewport)) {
|
|
1305
1307
|
const {
|
|
1306
1308
|
colormap
|
|
1307
1309
|
} = viewport.getProperties();
|
|
@@ -1708,8 +1710,8 @@ var src = __webpack_require__(42356);
|
|
|
1708
1710
|
var loaders = __webpack_require__(19742);
|
|
1709
1711
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/RequestType.js
|
|
1710
1712
|
var RequestType = __webpack_require__(43213);
|
|
1711
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/esm/index.js +
|
|
1712
|
-
var dicom_image_loader_dist_esm = __webpack_require__(
|
|
1713
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/dicom-image-loader/dist/esm/index.js + 81 modules
|
|
1714
|
+
var dicom_image_loader_dist_esm = __webpack_require__(88589);
|
|
1713
1715
|
;// ../../../extensions/cornerstone/src/initWADOImageLoader.js
|
|
1714
1716
|
|
|
1715
1717
|
|
|
@@ -1902,11 +1904,14 @@ const OverlayPlaneModuleProvider = {
|
|
|
1902
1904
|
// Needs to be higher priority than default provider
|
|
1903
1905
|
esm.metaData.addProvider(OverlayPlaneModuleProvider.get, 10_000);
|
|
1904
1906
|
/* harmony default export */ const tools_OverlayPlaneModuleProvider = (OverlayPlaneModuleProvider);
|
|
1907
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/utils/getLegacyViewportType.ts
|
|
1908
|
+
var getLegacyViewportType = __webpack_require__(62739);
|
|
1905
1909
|
;// ../../../extensions/cornerstone/src/tools/ImageOverlayViewerTool.tsx
|
|
1906
1910
|
|
|
1907
1911
|
|
|
1908
1912
|
|
|
1909
1913
|
|
|
1914
|
+
|
|
1910
1915
|
/**
|
|
1911
1916
|
* Image Overlay Viewer tool is not a traditional tool that requires user interactin.
|
|
1912
1917
|
* But it is used to display Pixel Overlays. And it will provide toggling capability.
|
|
@@ -1959,7 +1964,7 @@ class ImageOverlayViewerTool extends dist_esm.AnnotationDisplayTool {
|
|
|
1959
1964
|
};
|
|
1960
1965
|
}
|
|
1961
1966
|
getReferencedImageId(viewport) {
|
|
1962
|
-
if (
|
|
1967
|
+
if ((0,getLegacyViewportType/* isOrthographicViewportType */.tO)(viewport)) {
|
|
1963
1968
|
return;
|
|
1964
1969
|
}
|
|
1965
1970
|
const targetId = this.getTargetId(viewport);
|
|
@@ -6962,8 +6967,8 @@ var useLutPresentationStore = __webpack_require__(10182);
|
|
|
6962
6967
|
var usePositionPresentationStore = __webpack_require__(44646);
|
|
6963
6968
|
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/stores/useSegmentationPresentationStore.ts + 1 modules
|
|
6964
6969
|
var useSegmentationPresentationStore = __webpack_require__(2847);
|
|
6965
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js +
|
|
6966
|
-
var esm_utilities = __webpack_require__(
|
|
6970
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 42 modules
|
|
6971
|
+
var esm_utilities = __webpack_require__(18636);
|
|
6967
6972
|
;// ../../../extensions/cornerstone/src/utils/initWebWorkerProgressHandler.ts
|
|
6968
6973
|
|
|
6969
6974
|
|
|
@@ -7137,7 +7142,11 @@ async function init({
|
|
|
7137
7142
|
...esm.getConfiguration(),
|
|
7138
7143
|
rendering: {
|
|
7139
7144
|
...esm.getConfiguration().rendering,
|
|
7140
|
-
strictZSpacingForVolumeViewport: appConfig.strictZSpacingForVolumeViewport
|
|
7145
|
+
strictZSpacingForVolumeViewport: appConfig.strictZSpacingForVolumeViewport,
|
|
7146
|
+
// Opt-in: route legacy viewport types through the new GenericViewport render
|
|
7147
|
+
// paths while keeping the legacy public API via compatibility adapters.
|
|
7148
|
+
// No-op on cornerstone builds that predate the GenericViewport architecture.
|
|
7149
|
+
useGenericViewport: Boolean(appConfig.useGenericViewport)
|
|
7141
7150
|
}
|
|
7142
7151
|
});
|
|
7143
7152
|
|
|
@@ -9441,6 +9450,7 @@ var html2canvas_esm = __webpack_require__(91037);
|
|
|
9441
9450
|
|
|
9442
9451
|
|
|
9443
9452
|
|
|
9453
|
+
|
|
9444
9454
|
const {
|
|
9445
9455
|
downloadUrl
|
|
9446
9456
|
} = src/* utils */.Wp;
|
|
@@ -9554,10 +9564,10 @@ const CornerstoneViewportDownloadForm = ({
|
|
|
9554
9564
|
const properties = viewport.getProperties();
|
|
9555
9565
|
const viewPresentation = viewport.getViewPresentation?.();
|
|
9556
9566
|
const viewRef = viewport.getViewReference?.();
|
|
9557
|
-
if (
|
|
9567
|
+
if ((0,getLegacyViewportType/* isStackViewportType */.TF)(downloadViewport)) {
|
|
9558
9568
|
const imageId = viewport.getCurrentImageId();
|
|
9559
9569
|
await downloadViewport.setStack([imageId]);
|
|
9560
|
-
} else if (
|
|
9570
|
+
} else if ((0,getLegacyViewportType/* isVolumeViewportType */.rX)(downloadViewport)) {
|
|
9561
9571
|
const volumeIds = viewport.getAllVolumeIds();
|
|
9562
9572
|
await downloadViewport.setVolumes([{
|
|
9563
9573
|
volumeId: volumeIds[0]
|
|
@@ -10464,7 +10474,13 @@ async function createSegmentationForViewport(servicesManager, {
|
|
|
10464
10474
|
const viewport = viewports.get(targetViewportId);
|
|
10465
10475
|
|
|
10466
10476
|
// Todo: add support for multiple display sets
|
|
10467
|
-
|
|
10477
|
+
// Guard against the grid not having this viewport yet (a transient race when
|
|
10478
|
+
// "Add segmentation" runs before the viewport is registered in the grid). Bail
|
|
10479
|
+
// gracefully instead of throwing, which would surface an uncaught error overlay.
|
|
10480
|
+
const displaySetInstanceUID = options.displaySetInstanceUID || viewport?.displaySetInstanceUIDs?.[0];
|
|
10481
|
+
if (!displaySetInstanceUID) {
|
|
10482
|
+
return undefined;
|
|
10483
|
+
}
|
|
10468
10484
|
const segs = segmentationService.getSegmentations();
|
|
10469
10485
|
const label = options.label || `${i18n_src/* default */.A.t('Tools:Segmentation')} ${segs.length + 1}`;
|
|
10470
10486
|
const segmentationId = options.segmentationId || `${esm.utilities.uuidv4()}`;
|
|
@@ -10513,6 +10529,7 @@ var segmentation = __webpack_require__(55126);
|
|
|
10513
10529
|
|
|
10514
10530
|
|
|
10515
10531
|
|
|
10532
|
+
|
|
10516
10533
|
|
|
10517
10534
|
|
|
10518
10535
|
const {
|
|
@@ -10778,7 +10795,7 @@ function commandsModule({
|
|
|
10778
10795
|
|
|
10779
10796
|
const segmentationType =
|
|
10780
10797
|
// Todo: check if PMAP modality should be handled such as SEG
|
|
10781
|
-
displaySet.Modality !== 'SEG' ? esm_enums.SegmentationRepresentations.Contour :
|
|
10798
|
+
displaySet.Modality !== 'SEG' ? esm_enums.SegmentationRepresentations.Contour : (0,getLegacyViewportType/* isVolume3DViewportType */.Ov)(viewport) ? esm_enums.SegmentationRepresentations.Surface : esm_enums.SegmentationRepresentations.Labelmap;
|
|
10782
10799
|
commandsManager.runCommand('updateStoredSegmentationPresentation', {
|
|
10783
10800
|
displaySet,
|
|
10784
10801
|
type: segmentationType
|
|
@@ -11352,7 +11369,7 @@ function commandsModule({
|
|
|
11352
11369
|
lower,
|
|
11353
11370
|
upper
|
|
11354
11371
|
} = esm.utilities.windowLevel.toLowHighRange(windowWidthNum, windowCenterNum);
|
|
11355
|
-
if (
|
|
11372
|
+
if ((0,getLegacyViewportType/* isVolumeViewportType */.rX)(viewport)) {
|
|
11356
11373
|
const volumeId = actions.getVolumeIdForDisplaySet({
|
|
11357
11374
|
viewportId,
|
|
11358
11375
|
displaySetInstanceUID
|
|
@@ -11429,7 +11446,11 @@ function commandsModule({
|
|
|
11429
11446
|
displaySetInstanceUID
|
|
11430
11447
|
}) => {
|
|
11431
11448
|
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
11432
|
-
|
|
11449
|
+
// `instanceof BaseVolumeViewport` is false for GenericViewport compat adapters,
|
|
11450
|
+
// so use the capability guard instead (cornerstone 5.x generic-viewport guide).
|
|
11451
|
+
// A stack-mode adapter passes the guard but getAllVolumeIds() returns [], so the
|
|
11452
|
+
// result is the same null as before on stacks.
|
|
11453
|
+
if (esm.utilities.viewportSupportsVolumeId(viewport)) {
|
|
11433
11454
|
const volumeIds = viewport.getAllVolumeIds();
|
|
11434
11455
|
const volumeId = volumeIds.find(id => id.includes(displaySetInstanceUID));
|
|
11435
11456
|
return volumeId;
|
|
@@ -11720,7 +11741,7 @@ function commandsModule({
|
|
|
11720
11741
|
const {
|
|
11721
11742
|
viewport
|
|
11722
11743
|
} = enabledElement;
|
|
11723
|
-
if (
|
|
11744
|
+
if ((0,getLegacyViewportType/* isStackViewportType */.TF)(viewport)) {
|
|
11724
11745
|
if (direction) {
|
|
11725
11746
|
const {
|
|
11726
11747
|
parallelScale
|
|
@@ -11755,9 +11776,9 @@ function commandsModule({
|
|
|
11755
11776
|
// Get number of slices
|
|
11756
11777
|
// -> Copied from cornerstone3D jumpToSlice\_getImageSliceData()
|
|
11757
11778
|
let numberOfSlices = 0;
|
|
11758
|
-
if (
|
|
11779
|
+
if ((0,getLegacyViewportType/* isStackViewportType */.TF)(viewport)) {
|
|
11759
11780
|
numberOfSlices = viewport.getImageIds().length;
|
|
11760
|
-
} else if (
|
|
11781
|
+
} else if ((0,getLegacyViewportType/* isOrthographicViewportType */.tO)(viewport)) {
|
|
11761
11782
|
numberOfSlices = esm.utilities.getImageSliceDataForVolumeViewport(viewport).numberOfSlices;
|
|
11762
11783
|
} else {
|
|
11763
11784
|
throw new Error('Unsupported viewport type');
|
|
@@ -11813,12 +11834,12 @@ function commandsModule({
|
|
|
11813
11834
|
...colormap,
|
|
11814
11835
|
opacity: hpOpacity || opacity
|
|
11815
11836
|
};
|
|
11816
|
-
if (
|
|
11837
|
+
if ((0,getLegacyViewportType/* isStackViewportType */.TF)(viewport)) {
|
|
11817
11838
|
viewport.setProperties({
|
|
11818
11839
|
colormap
|
|
11819
11840
|
});
|
|
11820
11841
|
}
|
|
11821
|
-
if (
|
|
11842
|
+
if ((0,getLegacyViewportType/* isOrthographicViewportType */.tO)(viewport)) {
|
|
11822
11843
|
if (!displaySetInstanceUID) {
|
|
11823
11844
|
const {
|
|
11824
11845
|
viewports
|
|
@@ -12692,7 +12713,7 @@ function commandsModule({
|
|
|
12692
12713
|
orientation
|
|
12693
12714
|
}) => {
|
|
12694
12715
|
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
|
|
12695
|
-
if (!viewport ||
|
|
12716
|
+
if (!viewport || !(0,getLegacyViewportType/* isOrthographicViewportType */.tO)(viewport)) {
|
|
12696
12717
|
console.warn('Orientation can only be set on volume viewports');
|
|
12697
12718
|
return;
|
|
12698
12719
|
}
|
|
@@ -12772,7 +12793,7 @@ function commandsModule({
|
|
|
12772
12793
|
const {
|
|
12773
12794
|
viewport
|
|
12774
12795
|
} = enabledElement;
|
|
12775
|
-
if (
|
|
12796
|
+
if ((0,getLegacyViewportType/* isVolumeViewportType */.rX)(viewport)) {
|
|
12776
12797
|
const camera = viewport.getCamera();
|
|
12777
12798
|
const rotAngle = rotation * Math.PI / 180;
|
|
12778
12799
|
const rotMat = gl_matrix_esm/* mat4.identity */.pB.identity(new Float32Array(16));
|
|
@@ -19167,6 +19188,7 @@ function isAnyDisplaySetCommon(sourceDisplaySetUIDs, targetDisplaySetUIDs) {
|
|
|
19167
19188
|
|
|
19168
19189
|
|
|
19169
19190
|
|
|
19191
|
+
|
|
19170
19192
|
const {
|
|
19171
19193
|
createSynchronizer
|
|
19172
19194
|
} = dist_esm.SynchronizerManager;
|
|
@@ -19236,7 +19258,7 @@ const segmentationRepresentationModifiedCallback = async (synchronizerInstance,
|
|
|
19236
19258
|
}
|
|
19237
19259
|
|
|
19238
19260
|
// Ensure the segmentation representation aligns with the target viewport type.
|
|
19239
|
-
const type =
|
|
19261
|
+
const type = (0,getLegacyViewportType/* isVolume3DViewportType */.Ov)(viewport) ? dist_esm.Enums.SegmentationRepresentations.Surface : segmentationRepresentationType ?? dist_esm.Enums.SegmentationRepresentations.Labelmap;
|
|
19240
19262
|
await segmentationService.addSegmentationRepresentation(targetViewportId, {
|
|
19241
19263
|
segmentationId,
|
|
19242
19264
|
type,
|
|
@@ -19535,6 +19557,7 @@ var _SegmentationService;
|
|
|
19535
19557
|
|
|
19536
19558
|
|
|
19537
19559
|
|
|
19560
|
+
|
|
19538
19561
|
const {
|
|
19539
19562
|
DefaultHistoryMemo: SegmentationService_DefaultHistoryMemo
|
|
19540
19563
|
} = esm.utilities.HistoryMemo;
|
|
@@ -19820,7 +19843,7 @@ class SegmentationService extends src/* PubSubService */.Rc {
|
|
|
19820
19843
|
}
|
|
19821
19844
|
const colorLUTIndex = this._segmentationIdToColorLUTIndexMap.get(segmentationId);
|
|
19822
19845
|
let isConverted = false;
|
|
19823
|
-
const defaultRepresentationType =
|
|
19846
|
+
const defaultRepresentationType = (0,getLegacyViewportType/* isVolume3DViewportType */.Ov)(csViewport) ? SURFACE : LABELMAP;
|
|
19824
19847
|
let representationTypeToUse = type || defaultRepresentationType;
|
|
19825
19848
|
if (representationTypeToUse === LABELMAP) {
|
|
19826
19849
|
const {
|
|
@@ -20793,7 +20816,7 @@ class SegmentationService extends src/* PubSubService */.Rc {
|
|
|
20793
20816
|
}, isVisible);
|
|
20794
20817
|
}
|
|
20795
20818
|
determineViewportAndSegmentationType(csViewport, segmentation) {
|
|
20796
|
-
const isVolumeViewport =
|
|
20819
|
+
const isVolumeViewport = (0,getLegacyViewportType/* isVolumeViewportType */.rX)(csViewport);
|
|
20797
20820
|
const isVolumeSegmentation = 'volumeId' in segmentation.representationData[LABELMAP];
|
|
20798
20821
|
return {
|
|
20799
20822
|
isVolumeViewport,
|
|
@@ -20814,7 +20837,7 @@ class SegmentationService extends src/* PubSubService */.Rc {
|
|
|
20814
20837
|
};
|
|
20815
20838
|
}
|
|
20816
20839
|
async handleVolumeViewportCase(csViewport, segmentation, isVolumeSegmentation) {
|
|
20817
|
-
if (
|
|
20840
|
+
if ((0,getLegacyViewportType/* isVolume3DViewportType */.Ov)(csViewport)) {
|
|
20818
20841
|
return {
|
|
20819
20842
|
representationTypeToUse: SURFACE,
|
|
20820
20843
|
isConverted: false
|
|
@@ -21555,6 +21578,7 @@ function getCornerstoneOrientation(orientation) {
|
|
|
21555
21578
|
|
|
21556
21579
|
|
|
21557
21580
|
|
|
21581
|
+
|
|
21558
21582
|
const Viewport_STACK = 'stack';
|
|
21559
21583
|
const DEFAULT_TOOLGROUP_ID = 'default';
|
|
21560
21584
|
|
|
@@ -21569,7 +21593,7 @@ const dataContains = ({
|
|
|
21569
21593
|
if (imageId && data.isCompositeStack && data.imageIds) {
|
|
21570
21594
|
return !!data.imageIds.find(dataId => dataId === imageId);
|
|
21571
21595
|
}
|
|
21572
|
-
if (imageId && (data.volumeId ||
|
|
21596
|
+
if (imageId && (data.volumeId || (0,getLegacyViewportType/* isOrthographicViewportType */.tO)(viewport))) {
|
|
21573
21597
|
const isAcquisition = !!viewport.getCurrentImageId();
|
|
21574
21598
|
if (!isAcquisition) {
|
|
21575
21599
|
return false;
|
|
@@ -21810,15 +21834,25 @@ var _CornerstoneViewportService;
|
|
|
21810
21834
|
|
|
21811
21835
|
|
|
21812
21836
|
|
|
21837
|
+
|
|
21813
21838
|
const CornerstoneViewportService_EVENTS = {
|
|
21814
21839
|
VIEWPORT_DATA_CHANGED: 'event::cornerstoneViewportService:viewportDataChanged',
|
|
21815
21840
|
VIEWPORT_VOLUMES_CHANGED: 'event::cornerstoneViewportService:viewportVolumesChanged'
|
|
21816
21841
|
};
|
|
21817
21842
|
const MIN_STACK_VIEWPORTS_TO_ENQUEUE_RESIZE = 12;
|
|
21818
21843
|
const MIN_VOLUME_VIEWPORTS_TO_ENQUEUE_RESIZE = 6;
|
|
21844
|
+
|
|
21845
|
+
// Actor class names that represent a primary volume binding in a viewport.
|
|
21846
|
+
// Legacy ORTHOGRAPHIC / VOLUME_3D render the source volume as a 'vtkVolume'
|
|
21847
|
+
// actor. Under the GenericViewport-backed compat path (useGenericViewport),
|
|
21848
|
+
// the MPR slice render path emits 'vtkImageSlice' actors instead, so the
|
|
21849
|
+
// volume-set-vs-add optimization below must recognize both. (3D still uses
|
|
21850
|
+
// 'vtkVolume'.) Without this, the optimization silently no-ops and a full
|
|
21851
|
+
// setVolumes() teardown blanks MPR during SEG hydration.
|
|
21852
|
+
const VOLUME_ACTOR_CLASS_NAMES = new Set(['vtkVolume', 'vtkImageSlice']);
|
|
21819
21853
|
function getVolumeActorReferencedIds(viewport) {
|
|
21820
21854
|
const actors = viewport.getActors?.() ?? [];
|
|
21821
|
-
return actors.filter(ac => ac.actor?.getClassName?.()
|
|
21855
|
+
return actors.filter(ac => VOLUME_ACTOR_CLASS_NAMES.has(ac.actor?.getClassName?.() ?? '')).map(ac => ac.referencedId).filter(Boolean);
|
|
21822
21856
|
}
|
|
21823
21857
|
function volumeIdPrefixesMatch(existingIds, prefixLen, targetIds) {
|
|
21824
21858
|
if (prefixLen > targetIds.length) {
|
|
@@ -21837,7 +21871,7 @@ function volumeIdPrefixesMatch(existingIds, prefixLen, targetIds) {
|
|
|
21837
21871
|
*/
|
|
21838
21872
|
function viewportMatchesDesiredVolumePresentation(viewport, desiredViewportInfo) {
|
|
21839
21873
|
const desiredType = desiredViewportInfo.getViewportType();
|
|
21840
|
-
if (viewport
|
|
21874
|
+
if ((0,getLegacyViewportType/* getLegacyViewportType */.Gj)(viewport) !== desiredType) {
|
|
21841
21875
|
return false;
|
|
21842
21876
|
}
|
|
21843
21877
|
return desiredType === esm.Enums.ViewportType.ORTHOGRAPHIC || desiredType === esm.Enums.ViewportType.VOLUME_3D;
|
|
@@ -22100,7 +22134,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
22100
22134
|
const viewportInfo = this.viewportsById.get(viewportId);
|
|
22101
22135
|
return {
|
|
22102
22136
|
viewportType: viewportInfo.getViewportType(),
|
|
22103
|
-
viewReference:
|
|
22137
|
+
viewReference: (0,getLegacyViewportType/* isVolume3DViewportType */.Ov)(csViewport) ? null : csViewport.getViewReference(),
|
|
22104
22138
|
viewPresentation: csViewport.getViewPresentation({
|
|
22105
22139
|
pan: true,
|
|
22106
22140
|
zoom: true
|
|
@@ -22125,7 +22159,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
22125
22159
|
}
|
|
22126
22160
|
return properties;
|
|
22127
22161
|
};
|
|
22128
|
-
const properties =
|
|
22162
|
+
const properties = (0,getLegacyViewportType/* isVolumeViewportType */.rX)(csViewport) ? new Map() : cleanProperties(csViewport.getProperties());
|
|
22129
22163
|
if (properties instanceof Map) {
|
|
22130
22164
|
const volumeIds = csViewport.getAllVolumeIds();
|
|
22131
22165
|
volumeIds?.forEach(volumeId => {
|
|
@@ -22540,10 +22574,16 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
22540
22574
|
}
|
|
22541
22575
|
async _setOtherViewport(viewport, viewportData, viewportInfo, _presentations = {}) {
|
|
22542
22576
|
const [displaySet] = viewportData.data;
|
|
22543
|
-
|
|
22544
|
-
|
|
22545
|
-
|
|
22577
|
+
// CS3D's "redo viewports" replaced setDataIds with the generic
|
|
22578
|
+
// setDisplaySets({ displaySetId }) API; the legacy adapters key off
|
|
22579
|
+
// imageIds[0] as the displaySetId, so do the same here.
|
|
22580
|
+
await viewport.setDisplaySets({
|
|
22581
|
+
displaySetId: displaySet.imageIds[0]
|
|
22546
22582
|
});
|
|
22583
|
+
const viewReference = viewportInfo.getViewReference();
|
|
22584
|
+
if (viewReference) {
|
|
22585
|
+
viewport.setViewReference(viewReference);
|
|
22586
|
+
}
|
|
22547
22587
|
}
|
|
22548
22588
|
async _setStackViewport(viewport, viewportData, viewportInfo, presentations = {}) {
|
|
22549
22589
|
const displaySetOptions = viewportInfo.getDisplaySetOptions();
|
|
@@ -22836,7 +22876,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
22836
22876
|
if (backgroundDisplaySet.length !== 1) {
|
|
22837
22877
|
throw new Error('Background display set not found');
|
|
22838
22878
|
}
|
|
22839
|
-
if (
|
|
22879
|
+
if ((0,getLegacyViewportType/* isVolume3DViewportType */.Ov)(viewport)) {
|
|
22840
22880
|
timeoutViewportCallback(() => {
|
|
22841
22881
|
viewportGridService.setDisplaySetsForViewport({
|
|
22842
22882
|
viewportId: viewport.id,
|
|
@@ -22972,7 +23012,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
22972
23012
|
const viewport = this.getCornerstoneViewport(viewportId);
|
|
22973
23013
|
const viewportCamera = viewport.getCamera();
|
|
22974
23014
|
let displaySetPromise;
|
|
22975
|
-
if (
|
|
23015
|
+
if ((0,getLegacyViewportType/* isVolumeViewportType */.rX)(viewport)) {
|
|
22976
23016
|
displaySetPromise = this._setVolumeViewport(viewport, viewportData, viewportInfo).then(() => {
|
|
22977
23017
|
if (keepCamera) {
|
|
22978
23018
|
viewport.setCamera(viewportCamera);
|
|
@@ -22980,7 +23020,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
22980
23020
|
}
|
|
22981
23021
|
});
|
|
22982
23022
|
}
|
|
22983
|
-
if (
|
|
23023
|
+
if ((0,getLegacyViewportType/* isStackViewportType */.TF)(viewport)) {
|
|
22984
23024
|
displaySetPromise = this._setStackViewport(viewport, viewportData, viewportInfo);
|
|
22985
23025
|
}
|
|
22986
23026
|
displaySetPromise.then(() => {
|
|
@@ -22991,13 +23031,13 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
22991
23031
|
});
|
|
22992
23032
|
}
|
|
22993
23033
|
_setDisplaySets(viewport, viewportData, viewportInfo, presentations = {}) {
|
|
22994
|
-
if (
|
|
23034
|
+
if ((0,getLegacyViewportType/* isStackViewportType */.TF)(viewport)) {
|
|
22995
23035
|
return this._setStackViewport(viewport, viewportData, viewportInfo, presentations);
|
|
22996
23036
|
}
|
|
22997
|
-
if (
|
|
23037
|
+
if ((0,getLegacyViewportType/* isVolumeViewportType */.rX)(viewport)) {
|
|
22998
23038
|
return this._setVolumeViewport(viewport, viewportData, viewportInfo, presentations);
|
|
22999
23039
|
}
|
|
23000
|
-
if (viewport
|
|
23040
|
+
if ((0,getLegacyViewportType/* getLegacyViewportType */.Gj)(viewport) === esm.Enums.ViewportType.ECG) {
|
|
23001
23041
|
return this._setEcgViewport(viewport, viewportData);
|
|
23002
23042
|
}
|
|
23003
23043
|
return this._setOtherViewport(viewport, viewportData, viewportInfo, presentations);
|
|
@@ -23133,7 +23173,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
23133
23173
|
const {
|
|
23134
23174
|
properties
|
|
23135
23175
|
} = lutPresentation;
|
|
23136
|
-
if (
|
|
23176
|
+
if ((0,getLegacyViewportType/* isVolumeViewportType */.rX)(viewport)) {
|
|
23137
23177
|
if (properties instanceof Map) {
|
|
23138
23178
|
properties.forEach((propertiesEntry, volumeId) => {
|
|
23139
23179
|
viewport.setProperties(propertiesEntry, volumeId);
|
|
@@ -23179,7 +23219,7 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
|
|
|
23179
23219
|
Labelmap,
|
|
23180
23220
|
Surface
|
|
23181
23221
|
} = dist_esm.Enums.SegmentationRepresentations;
|
|
23182
|
-
const isVolume3D =
|
|
23222
|
+
const isVolume3D = (0,getLegacyViewportType/* isVolume3DViewportType */.Ov)(viewport);
|
|
23183
23223
|
|
|
23184
23224
|
// Determine the appropriate segmentation representation for the viewport.
|
|
23185
23225
|
// If the current type is Surface but the viewport is not 3D, fallback to Labelmap.
|
|
@@ -24783,9 +24823,13 @@ const ViewportWindowLevel = ({
|
|
|
24783
24823
|
const displaySets = (0,src/* useActiveViewportDisplaySets */.BZ)();
|
|
24784
24824
|
const getViewportsWithVolumeIds = (0,react.useCallback)(volumeIds => {
|
|
24785
24825
|
const renderingEngine = cornerstoneViewportService.getRenderingEngine();
|
|
24786
|
-
|
|
24826
|
+
// getVolumeViewports() was removed in the GenericViewport architecture
|
|
24827
|
+
// (a PLANAR_NEXT viewport can be volume-capable without being a VolumeViewport).
|
|
24828
|
+
// Official replacement: getViewports() + the viewportSupportsVolumeCompatibility
|
|
24829
|
+
// capability guard (cornerstone codemod cornerstone3d/5/generic-viewport).
|
|
24830
|
+
const viewports = renderingEngine.getViewports().filter(esm.utilities.viewportSupportsVolumeCompatibility);
|
|
24787
24831
|
return viewports.filter(vp => {
|
|
24788
|
-
const viewportVolumeIds = vp
|
|
24832
|
+
const viewportVolumeIds = vp.getAllVolumeIds();
|
|
24789
24833
|
return volumeIds.length === viewportVolumeIds.length && volumeIds.every(volumeId => viewportVolumeIds.includes(volumeId));
|
|
24790
24834
|
});
|
|
24791
24835
|
}, [cornerstoneViewportService]);
|
|
@@ -24849,7 +24893,7 @@ const ViewportWindowLevel = ({
|
|
|
24849
24893
|
if (!viewport) {
|
|
24850
24894
|
return;
|
|
24851
24895
|
}
|
|
24852
|
-
const viewportVolumeIds =
|
|
24896
|
+
const viewportVolumeIds = esm.utilities.viewportSupportsVolumeId(viewport) ? viewport.getAllVolumeIds() : [];
|
|
24853
24897
|
const viewports = getViewportsWithVolumeIds(viewportVolumeIds);
|
|
24854
24898
|
viewports.forEach(vp => {
|
|
24855
24899
|
vp.setProperties({
|
|
@@ -27381,6 +27425,68 @@ function getDataIdForViewport(viewport, displaySetInstanceUID) {
|
|
|
27381
27425
|
return volumeIds.length > 0 ? volumeIds.find(id => id.includes(displaySetInstanceUID)) ?? undefined : undefined;
|
|
27382
27426
|
}
|
|
27383
27427
|
|
|
27428
|
+
/***/ },
|
|
27429
|
+
|
|
27430
|
+
/***/ 62739
|
|
27431
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
27432
|
+
|
|
27433
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
27434
|
+
/* harmony export */ Gj: () => (/* binding */ getLegacyViewportType),
|
|
27435
|
+
/* harmony export */ Ov: () => (/* binding */ isVolume3DViewportType),
|
|
27436
|
+
/* harmony export */ TF: () => (/* binding */ isStackViewportType),
|
|
27437
|
+
/* harmony export */ rX: () => (/* binding */ isVolumeViewportType),
|
|
27438
|
+
/* harmony export */ tO: () => (/* binding */ isOrthographicViewportType)
|
|
27439
|
+
/* harmony export */ });
|
|
27440
|
+
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15327);
|
|
27441
|
+
|
|
27442
|
+
const {
|
|
27443
|
+
ViewportType
|
|
27444
|
+
} = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.Enums;
|
|
27445
|
+
/**
|
|
27446
|
+
* Returns the legacy/requested viewport type, transparent across GenericViewport
|
|
27447
|
+
* compatibility remapping.
|
|
27448
|
+
*
|
|
27449
|
+
* When `rendering.useGenericViewport` is enabled, a viewport requested as
|
|
27450
|
+
* `STACK` or `ORTHOGRAPHIC` has runtime `viewport.type === PLANAR_NEXT`, and a
|
|
27451
|
+
* `VOLUME_3D` request has `VOLUME_3D_NEXT`. The rendering engine records the
|
|
27452
|
+
* original request on `viewport.requestedType`, which this reads. Falls back to
|
|
27453
|
+
* `viewport.type` for legacy/non-remapped viewports (and older cornerstone builds
|
|
27454
|
+
* that do not populate `requestedType`).
|
|
27455
|
+
*
|
|
27456
|
+
* Use this instead of `viewport instanceof StackViewport/VolumeViewport/...` or
|
|
27457
|
+
* raw `viewport.type === ViewportType.X` when branching on the legacy viewport
|
|
27458
|
+
* type. For "does this viewport support operation X" questions, prefer the
|
|
27459
|
+
* cornerstone capability guards (`utilities.viewportSupports*`) instead.
|
|
27460
|
+
*/
|
|
27461
|
+
function getLegacyViewportType(viewport) {
|
|
27462
|
+
const vp = viewport;
|
|
27463
|
+
return vp?.requestedType ?? vp?.type;
|
|
27464
|
+
}
|
|
27465
|
+
|
|
27466
|
+
/** Legacy STACK viewport (image stack). Replaces `instanceof StackViewport`. */
|
|
27467
|
+
function isStackViewportType(viewport) {
|
|
27468
|
+
return getLegacyViewportType(viewport) === ViewportType.STACK;
|
|
27469
|
+
}
|
|
27470
|
+
|
|
27471
|
+
/** Legacy ORTHOGRAPHIC (MPR) viewport. Replaces `instanceof VolumeViewport`. */
|
|
27472
|
+
function isOrthographicViewportType(viewport) {
|
|
27473
|
+
return getLegacyViewportType(viewport) === ViewportType.ORTHOGRAPHIC;
|
|
27474
|
+
}
|
|
27475
|
+
|
|
27476
|
+
/** Legacy VOLUME_3D viewport. Replaces `instanceof VolumeViewport3D`. */
|
|
27477
|
+
function isVolume3DViewportType(viewport) {
|
|
27478
|
+
return getLegacyViewportType(viewport) === ViewportType.VOLUME_3D;
|
|
27479
|
+
}
|
|
27480
|
+
|
|
27481
|
+
/**
|
|
27482
|
+
* Legacy ORTHOGRAPHIC or VOLUME_3D viewport (i.e. a `BaseVolumeViewport`).
|
|
27483
|
+
* Replaces `instanceof BaseVolumeViewport`.
|
|
27484
|
+
*/
|
|
27485
|
+
function isVolumeViewportType(viewport) {
|
|
27486
|
+
const legacyType = getLegacyViewportType(viewport);
|
|
27487
|
+
return legacyType === ViewportType.ORTHOGRAPHIC || legacyType === ViewportType.VOLUME_3D;
|
|
27488
|
+
}
|
|
27489
|
+
|
|
27384
27490
|
/***/ }
|
|
27385
27491
|
|
|
27386
27492
|
}]);
|