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

63 lines 9.84 kB
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { Enums, setVolumesForViewports } from '@cornerstonejs/core'; import { Enums as csToolEnum, segmentation } from '@cornerstonejs/tools'; import { imageInfoToUniqueId } from '../core'; import { BaseViewportComponent } from './base-viewport.component'; import * as i0 from "@angular/core"; import * as i1 from "../core"; export class OrthographicViewportComponent extends BaseViewportComponent { constructor(csService, zone) { super(csService, zone); this.csService = csService; } ngOnInit() { if (this.viewportInput) { this.viewportInput.type = Enums.ViewportType.ORTHOGRAPHIC; } super.ngOnInit(); } async renderImage(image) { if (!image || !this.viewport || !this.viewportInput?.viewportId) return; try { const volumeId = image.volumeId || imageInfoToUniqueId(image); await setVolumesForViewports(this.renderingEngine, [{ volumeId }], [this.viewportInput.viewportId]); this.renderingEngine.renderViewport(this.viewportInput.viewportId); } catch (error) { console.error('Failed to render volume in orthographic viewport:', error); } } async renderSegment(image, segment) { if (!segment || !image || !this.viewport || !this.viewportInput?.viewportId) { return; } // 获取分段ID和引用体积ID const segmentationId = imageInfoToUniqueId(segment); if (!segmentationId) { console.error('Invalid segmentation or reference volume data'); return; } try { // 将分段添加到视口 if (this.viewportInput.viewportId) { segmentation.addSegmentationRepresentations(this.viewportInput.viewportId, [ { segmentationId, type: csToolEnum.SegmentationRepresentations.Labelmap, }, ]); } } catch (error) { console.error('Failed to render segment in orthographic viewport:', error); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrthographicViewportComponent, deps: [{ token: i1.CornerstoneService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: OrthographicViewportComponent, selector: "nc-orthographic-viewport", usesInheritance: true, ngImport: i0, template: `<div #imageBox class="dicom-viewer-viewport-container"></div>`, isInline: true, styles: [".dicom-viewer-viewport-container{display:block;height:100%;width:100%}:host{border:1px solid rgba(59,219,223,.85);box-sizing:border-box}:host:focus,:host:active,:host.active{border:1px solid green}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrthographicViewportComponent, decorators: [{ type: Component, args: [{ selector: 'nc-orthographic-viewport', template: `<div #imageBox class="dicom-viewer-viewport-container"></div>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".dicom-viewer-viewport-container{display:block;height:100%;width:100%}:host{border:1px solid rgba(59,219,223,.85);box-sizing:border-box}:host:focus,:host:active,:host.active{border:1px solid green}\n"] }] }], ctorParameters: () => [{ type: i1.CornerstoneService }, { type: i0.NgZone }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3J0aG9ncmFwaGljLXZpZXdwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvcm5lcnN0b25lL3NyYy9saWIvdmlld3BvcnQvb3J0aG9ncmFwaGljLXZpZXdwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQWEsS0FBSyxFQUFTLHNCQUFzQixFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFFLEtBQUssSUFBSSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFpQyxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBU2xFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxxQkFBcUI7SUFDdEUsWUFBK0IsU0FBNkIsRUFBRSxJQUFZO1FBQ3hFLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFETSxjQUFTLEdBQVQsU0FBUyxDQUFvQjtJQUU1RCxDQUFDO0lBRVEsUUFBUTtRQUNmLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQzVELENBQUM7UUFDRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVrQixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWdCO1FBQ25ELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVO1lBQUUsT0FBTztRQUV4RSxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELE1BQU0sc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNwRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxtREFBbUQsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxDQUFDO0lBQ0gsQ0FBQztJQUVrQixLQUFLLENBQUMsYUFBYSxDQUFDLEtBQWdCLEVBQUUsT0FBa0I7UUFDekUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQzVFLE9BQU87UUFDVCxDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7WUFDL0QsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxXQUFXO1lBQ1gsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQyxZQUFZLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7b0JBQ3pFO3dCQUNFLGNBQWM7d0JBQ2QsSUFBSSxFQUFFLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRO3FCQUN0RDtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDSCxDQUFDOytHQWxEVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix1RkFKOUIsK0RBQStEOzs0RkFJOUQsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLDBCQUEwQixZQUMxQiwrREFBK0QsbUJBRXhELHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENPTlNUQU5UUywgRW51bXMsIFR5cGVzLCBzZXRWb2x1bWVzRm9yVmlld3BvcnRzLCB1dGlsaXRpZXMgfSBmcm9tICdAY29ybmVyc3RvbmVqcy9jb3JlJztcbmltcG9ydCB7IEVudW1zIGFzIGNzVG9vbEVudW0sIHNlZ21lbnRhdGlvbiB9IGZyb20gJ0Bjb3JuZXJzdG9uZWpzL3Rvb2xzJztcbmltcG9ydCB7IENvcm5lcnN0b25lU2VydmljZSwgSW1hZ2VJbmZvLCBpbWFnZUluZm9Ub1VuaXF1ZUlkIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBCYXNlVmlld3BvcnRDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Utdmlld3BvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYy1vcnRob2dyYXBoaWMtdmlld3BvcnQnLFxuICB0ZW1wbGF0ZTogYDxkaXYgI2ltYWdlQm94IGNsYXNzPVwiZGljb20tdmlld2VyLXZpZXdwb3J0LWNvbnRhaW5lclwiPjwvZGl2PmAsXG4gIHN0eWxlVXJsczogWycuL3ZpZXdwb3J0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPcnRob2dyYXBoaWNWaWV3cG9ydENvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3cG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvdmVycmlkZSBjc1NlcnZpY2U6IENvcm5lcnN0b25lU2VydmljZSwgem9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoY3NTZXJ2aWNlLCB6b25lKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZXdwb3J0SW5wdXQpIHtcbiAgICAgIHRoaXMudmlld3BvcnRJbnB1dC50eXBlID0gRW51bXMuVmlld3BvcnRUeXBlLk9SVEhPR1JBUEhJQztcbiAgICB9XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyByZW5kZXJJbWFnZShpbWFnZTogSW1hZ2VJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpbWFnZSB8fCAhdGhpcy52aWV3cG9ydCB8fCAhdGhpcy52aWV3cG9ydElucHV0Py52aWV3cG9ydElkKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgdm9sdW1lSWQgPSBpbWFnZS52b2x1bWVJZCB8fCBpbWFnZUluZm9Ub1VuaXF1ZUlkKGltYWdlKTtcbiAgICAgIGF3YWl0IHNldFZvbHVtZXNGb3JWaWV3cG9ydHModGhpcy5yZW5kZXJpbmdFbmdpbmUsIFt7IHZvbHVtZUlkIH1dLCBbdGhpcy52aWV3cG9ydElucHV0LnZpZXdwb3J0SWRdKTtcbiAgICAgIHRoaXMucmVuZGVyaW5nRW5naW5lLnJlbmRlclZpZXdwb3J0KHRoaXMudmlld3BvcnRJbnB1dC52aWV3cG9ydElkKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHJlbmRlciB2b2x1bWUgaW4gb3J0aG9ncmFwaGljIHZpZXdwb3J0OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgcmVuZGVyU2VnbWVudChpbWFnZTogSW1hZ2VJbmZvLCBzZWdtZW50OiBJbWFnZUluZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXNlZ21lbnQgfHwgIWltYWdlIHx8ICF0aGlzLnZpZXdwb3J0IHx8ICF0aGlzLnZpZXdwb3J0SW5wdXQ/LnZpZXdwb3J0SWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDojrflj5bliIbmrrVJROWSjOW8leeUqOS9k+enr0lEXG4gICAgY29uc3Qgc2VnbWVudGF0aW9uSWQgPSBpbWFnZUluZm9Ub1VuaXF1ZUlkKHNlZ21lbnQpO1xuXG4gICAgaWYgKCFzZWdtZW50YXRpb25JZCkge1xuICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBzZWdtZW50YXRpb24gb3IgcmVmZXJlbmNlIHZvbHVtZSBkYXRhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIOWwhuWIhuautea3u+WKoOWIsOinhuWPo1xuICAgICAgaWYgKHRoaXMudmlld3BvcnRJbnB1dC52aWV3cG9ydElkKSB7XG4gICAgICAgIHNlZ21lbnRhdGlvbi5hZGRTZWdtZW50YXRpb25SZXByZXNlbnRhdGlvbnModGhpcy52aWV3cG9ydElucHV0LnZpZXdwb3J0SWQsIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWdtZW50YXRpb25JZCxcbiAgICAgICAgICAgIHR5cGU6IGNzVG9vbEVudW0uU2VnbWVudGF0aW9uUmVwcmVzZW50YXRpb25zLkxhYmVsbWFwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcmVuZGVyIHNlZ21lbnQgaW4gb3J0aG9ncmFwaGljIHZpZXdwb3J0OicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==