UNPKG

ng-cornerstone

Version:

[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.git

75 lines 8.47 kB
import initProviders from './initProviders'; import initVolumeLoader from './initVolumeLoader'; import { cache, eventTarget, imageLoader, init as csRenderInit, metaData, RenderingEngine, } from '@cornerstonejs/core'; import * as polySeg from '@cornerstonejs/polymorphic-segmentation'; import { Injectable } from '@angular/core'; import { init as csToolInit, destroy } from '@cornerstonejs/tools'; import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader'; import * as i0 from "@angular/core"; export class CornerstoneService { constructor() { this.renderingEngineId = 'RENDERING_ENGINE_ID'; this.initialized = false; } async init() { try { if (this.initialized) { return; } initProviders(); cornerstoneDICOMImageLoader.init(); initVolumeLoader(); await Promise.all([ csRenderInit(), csToolInit({ addons: { polySeg: polySeg, }, }), ]); this.renderingEngine = new RenderingEngine(this.renderingEngineId); this.initialized = true; console.debug('CornerstoneService initialized'); } catch (error) { console.error('Failed to initialize CornerstoneService:', error); throw error; } } checkInitialized() { if (!this.initialized) { throw new Error('CornerstoneService not initialized'); } } setToolGroup(toolGroup) { this.toolGroup = toolGroup; } getRenderingEngine() { this.checkInitialized(); return this.renderingEngine; } getRenderingEngineId() { return this.renderingEngineId; } getToolGroup() { return this.toolGroup; } ngOnDestroy() { this.renderingEngine.destroy(); eventTarget.reset(); cache.purgeCache(); destroy(); metaData.removeAllProviders(); imageLoader.unregisterAllImageLoaders(); console.debug('cs service destroyed'); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CornerstoneService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CornerstoneService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CornerstoneService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ybmVyc3RvbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvcm5lcnN0b25lL3NyYy9saWIvY29yZS9pbml0L2Nvcm5lcnN0b25lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxnQkFBZ0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsS0FBSyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsSUFBSSxJQUFJLFlBQVksRUFDcEIsUUFBUSxFQUNSLGVBQWUsR0FFaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssT0FBTyxNQUFNLHlDQUF5QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLElBQUksSUFBSSxVQUFVLEVBQXdCLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpGLE9BQU8sMkJBQTJCLE1BQU0sbUNBQW1DLENBQUM7O0FBSzVFLE1BQU0sT0FBTyxrQkFBa0I7SUFNN0I7UUFMUSxzQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztRQUcxQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUViLENBQUM7SUFFaEIsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckIsT0FBTztZQUNULENBQUM7WUFFRCxhQUFhLEVBQUUsQ0FBQztZQUNoQiwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDaEIsWUFBWSxFQUFFO2dCQUNkLFVBQVUsQ0FBQztvQkFDVCxNQUFNLEVBQUU7d0JBQ04sT0FBTyxFQUFFLE9BQWM7cUJBQ3hCO2lCQUNGLENBQUM7YUFDSCxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRW5FLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMENBQTBDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakUsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFpQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLE9BQU8sRUFBRSxDQUFDO1FBQ1YsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUIsV0FBVyxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7K0dBbkVVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5pdFByb3ZpZGVycyBmcm9tICcuL2luaXRQcm92aWRlcnMnO1xuaW1wb3J0IGluaXRWb2x1bWVMb2FkZXIgZnJvbSAnLi9pbml0Vm9sdW1lTG9hZGVyJztcbmltcG9ydCB7XG4gIGNhY2hlLFxuICBldmVudFRhcmdldCxcbiAgaW1hZ2VMb2FkZXIsXG4gIGluaXQgYXMgY3NSZW5kZXJJbml0LFxuICBtZXRhRGF0YSxcbiAgUmVuZGVyaW5nRW5naW5lLFxuICBUeXBlcyBhcyBjc0NvcmVUeXBlcyxcbn0gZnJvbSAnQGNvcm5lcnN0b25lanMvY29yZSc7XG5pbXBvcnQgKiBhcyBwb2x5U2VnIGZyb20gJ0Bjb3JuZXJzdG9uZWpzL3BvbHltb3JwaGljLXNlZ21lbnRhdGlvbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluaXQgYXMgY3NUb29sSW5pdCwgVHlwZXMgYXMgY3NUb29sVHlwZXMsIGRlc3Ryb3kgfSBmcm9tICdAY29ybmVyc3RvbmVqcy90b29scyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgY29ybmVyc3RvbmVESUNPTUltYWdlTG9hZGVyIGZyb20gJ0Bjb3JuZXJzdG9uZWpzL2RpY29tLWltYWdlLWxvYWRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb3JuZXJzdG9uZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlbmRlcmluZ0VuZ2luZUlkID0gJ1JFTkRFUklOR19FTkdJTkVfSUQnO1xuICBwcml2YXRlIHJlbmRlcmluZ0VuZ2luZSE6IFJlbmRlcmluZ0VuZ2luZTtcbiAgcHJpdmF0ZSB0b29sR3JvdXAhOiBjc1Rvb2xUeXBlcy5JVG9vbEdyb3VwO1xuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGFzeW5jIGluaXQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaW5pdFByb3ZpZGVycygpO1xuICAgICAgY29ybmVyc3RvbmVESUNPTUltYWdlTG9hZGVyLmluaXQoKTtcbiAgICAgIGluaXRWb2x1bWVMb2FkZXIoKTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgY3NSZW5kZXJJbml0KCksXG4gICAgICAgIGNzVG9vbEluaXQoe1xuICAgICAgICAgIGFkZG9uczoge1xuICAgICAgICAgICAgcG9seVNlZzogcG9seVNlZyBhcyBhbnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICBdKTtcblxuICAgICAgdGhpcy5yZW5kZXJpbmdFbmdpbmUgPSBuZXcgUmVuZGVyaW5nRW5naW5lKHRoaXMucmVuZGVyaW5nRW5naW5lSWQpO1xuXG4gICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ0Nvcm5lcnN0b25lU2VydmljZSBpbml0aWFsaXplZCcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb3JuZXJzdG9uZVNlcnZpY2U6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0luaXRpYWxpemVkKCkge1xuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3JuZXJzdG9uZVNlcnZpY2Ugbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0VG9vbEdyb3VwKHRvb2xHcm91cDogY3NUb29sVHlwZXMuSVRvb2xHcm91cCkge1xuICAgIHRoaXMudG9vbEdyb3VwID0gdG9vbEdyb3VwO1xuICB9XG5cbiAgZ2V0UmVuZGVyaW5nRW5naW5lKCkge1xuICAgIHRoaXMuY2hlY2tJbml0aWFsaXplZCgpO1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmluZ0VuZ2luZTtcbiAgfVxuXG4gIGdldFJlbmRlcmluZ0VuZ2luZUlkKCkge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmluZ0VuZ2luZUlkO1xuICB9XG5cbiAgZ2V0VG9vbEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLnRvb2xHcm91cDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyaW5nRW5naW5lLmRlc3Ryb3koKTtcbiAgICBldmVudFRhcmdldC5yZXNldCgpO1xuICAgIGNhY2hlLnB1cmdlQ2FjaGUoKTtcbiAgICBkZXN0cm95KCk7XG4gICAgbWV0YURhdGEucmVtb3ZlQWxsUHJvdmlkZXJzKCk7XG4gICAgaW1hZ2VMb2FkZXIudW5yZWdpc3RlckFsbEltYWdlTG9hZGVycygpO1xuICAgIGNvbnNvbGUuZGVidWcoJ2NzIHNlcnZpY2UgZGVzdHJveWVkJyk7XG4gIH1cbn1cbiJdfQ==