ng-cornerstone
Version:
[](https://github.com/prettier/prettier) [](http://commitizen.git
63 lines • 9.84 kB
JavaScript
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==