OHIF with Cornerstone3D 2.0 (#4347)
This commit is contained in:
1 parent
8981a61b8c
commit
7ce7127d7c
803 files changed
+32760
-15893
No files matched your search
@@ -1,47 +1,18 @@
|
||||
import * as cornerstone from '@cornerstonejs/core';
|
||||
import { volumeLoader } from '@cornerstonejs/core';
|
||||
import {
|
||||
cornerstoneStreamingImageVolumeLoader,
|
||||
cornerstoneStreamingDynamicImageVolumeLoader,
|
||||
} from '@cornerstonejs/streaming-image-volume-loader';
|
||||
import dicomImageLoader, { webWorkerManager } from '@cornerstonejs/dicom-image-loader';
|
||||
import dicomParser from 'dicom-parser';
|
||||
} from '@cornerstonejs/core/loaders';
|
||||
import dicomImageLoader from '@cornerstonejs/dicom-image-loader';
|
||||
import { errorHandler, utils } from '@ohif/core';
|
||||
|
||||
const { registerVolumeLoader } = volumeLoader;
|
||||
|
||||
let initialized = false;
|
||||
|
||||
function initWebWorkers(appConfig) {
|
||||
const config = {
|
||||
maxWebWorkers: Math.min(
|
||||
Math.max(navigator.hardwareConcurrency - 1, 1),
|
||||
appConfig.maxNumberOfWebWorkers
|
||||
),
|
||||
startWebWorkersOnDemand: true,
|
||||
taskConfiguration: {
|
||||
decodeTask: {
|
||||
initializeCodecsOnStartup: false,
|
||||
usePDFJS: false,
|
||||
strict: false,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
if (!initialized) {
|
||||
dicomImageLoader.webWorkerManager.initialize(config);
|
||||
initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
export default function initWADOImageLoader(
|
||||
userAuthenticationService,
|
||||
appConfig,
|
||||
extensionManager
|
||||
) {
|
||||
dicomImageLoader.external.cornerstone = cornerstone;
|
||||
dicomImageLoader.external.dicomParser = dicomParser;
|
||||
|
||||
registerVolumeLoader('cornerstoneStreamingImageVolume', cornerstoneStreamingImageVolumeLoader);
|
||||
|
||||
registerVolumeLoader(
|
||||
@@ -49,17 +20,11 @@ export default function initWADOImageLoader(
|
||||
cornerstoneStreamingDynamicImageVolumeLoader
|
||||
);
|
||||
|
||||
dicomImageLoader.configure({
|
||||
decodeConfig: {
|
||||
// !! IMPORTANT !!
|
||||
// We should set this flag to false, since, by default @cornerstonejs/dicom-image-loader
|
||||
// will convert everything to integers (to be able to work with cornerstone-2d).
|
||||
// Until the default is set to true (which is the case for cornerstone3D),
|
||||
// we should set this flag to false.
|
||||
convertFloatPixelDataToInt: false,
|
||||
use16BitDataType:
|
||||
Boolean(appConfig.useNorm16Texture) || Boolean(appConfig.preferSizeOverAccuracy),
|
||||
},
|
||||
dicomImageLoader.init({
|
||||
maxWebWorkers: Math.min(
|
||||
Math.max(navigator.hardwareConcurrency - 1, 1),
|
||||
appConfig.maxNumberOfWebWorkers
|
||||
),
|
||||
beforeSend: function (xhr) {
|
||||
//TODO should be removed in the future and request emitted by DicomWebDataSource
|
||||
const sourceConfig = extensionManager.getActiveDataSource()?.[0].getConfig() ?? {};
|
||||
@@ -84,16 +49,8 @@ export default function initWADOImageLoader(
|
||||
errorHandler.getHTTPErrorHandler(error);
|
||||
},
|
||||
});
|
||||
|
||||
initWebWorkers(appConfig);
|
||||
}
|
||||
|
||||
export function destroy() {
|
||||
// Note: we don't want to call .terminate on the webWorkerManager since
|
||||
// that resets the config
|
||||
const webWorkers = webWorkerManager.webWorkers;
|
||||
for (let i = 0; i < webWorkers.length; i++) {
|
||||
webWorkers[i].worker.terminate();
|
||||
}
|
||||
webWorkers.length = 0;
|
||||
console.debug('Destroying WADO Image Loader');
|
||||
}
|
||||
Reference in new issue
Block a user