@cornerstonejs/core 1.77.13 → 1.78.1
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/cjs/RenderingEngine/RenderingEngine.d.ts +0 -2
- package/dist/cjs/RenderingEngine/RenderingEngine.js +0 -9
- package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
- package/dist/cjs/RenderingEngine/StackViewport.js +2 -2
- package/dist/cjs/RenderingEngine/VideoViewport.d.ts +2 -1
- package/dist/cjs/RenderingEngine/VideoViewport.js +15 -6
- package/dist/cjs/RenderingEngine/VideoViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/Viewport.d.ts +2 -1
- package/dist/cjs/RenderingEngine/Viewport.js +3 -0
- package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/WSIViewport.d.ts +82 -0
- package/dist/cjs/RenderingEngine/WSIViewport.js +447 -0
- package/dist/cjs/RenderingEngine/WSIViewport.js.map +1 -0
- package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
- package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
- package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js.map +1 -1
- package/dist/cjs/enums/MetadataModules.d.ts +2 -1
- package/dist/cjs/enums/MetadataModules.js +1 -0
- package/dist/cjs/enums/MetadataModules.js.map +1 -1
- package/dist/cjs/enums/ViewportType.d.ts +2 -1
- package/dist/cjs/enums/ViewportType.js +1 -0
- package/dist/cjs/enums/ViewportType.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/IRenderingEngine.d.ts +0 -2
- package/dist/cjs/types/IViewport.d.ts +7 -0
- package/dist/cjs/types/IWSIViewport.d.ts +13 -0
- package/dist/cjs/types/IWSIViewport.js +3 -0
- package/dist/cjs/types/IWSIViewport.js.map +1 -0
- package/dist/cjs/types/WSIViewportProperties.d.ts +3 -0
- package/dist/cjs/types/WSIViewportProperties.js +3 -0
- package/dist/cjs/types/WSIViewportProperties.js.map +1 -0
- package/dist/cjs/types/WSIViewportTypes.d.ts +13 -0
- package/dist/cjs/types/WSIViewportTypes.js +3 -0
- package/dist/cjs/types/WSIViewportTypes.js.map +1 -0
- package/dist/cjs/types/index.d.ts +5 -2
- package/dist/cjs/utilities/genericMetadataProvider.js +3 -1
- package/dist/cjs/utilities/genericMetadataProvider.js.map +1 -1
- package/dist/cjs/utilities/uuidv4.js +1 -1
- package/dist/cjs/utilities/uuidv4.js.map +1 -1
- package/dist/esm/RenderingEngine/RenderingEngine.js +0 -9
- package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
- package/dist/esm/RenderingEngine/StackViewport.js +2 -2
- package/dist/esm/RenderingEngine/VideoViewport.js +14 -6
- package/dist/esm/RenderingEngine/VideoViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/Viewport.js +3 -0
- package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
- package/dist/esm/RenderingEngine/WSIViewport.js +405 -0
- package/dist/esm/RenderingEngine/WSIViewport.js.map +1 -0
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js.map +1 -1
- package/dist/esm/enums/MetadataModules.js +1 -0
- package/dist/esm/enums/MetadataModules.js.map +1 -1
- package/dist/esm/enums/ViewportType.js +1 -0
- package/dist/esm/enums/ViewportType.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/IWSIViewport.js +2 -0
- package/dist/esm/types/IWSIViewport.js.map +1 -0
- package/dist/esm/types/WSIViewportProperties.js +2 -0
- package/dist/esm/types/WSIViewportProperties.js.map +1 -0
- package/dist/esm/types/WSIViewportTypes.js +2 -0
- package/dist/esm/types/WSIViewportTypes.js.map +1 -0
- package/dist/esm/utilities/genericMetadataProvider.js +2 -1
- package/dist/esm/utilities/genericMetadataProvider.js.map +1 -1
- package/dist/esm/utilities/uuidv4.js +1 -1
- package/dist/esm/utilities/uuidv4.js.map +1 -1
- package/dist/types/RenderingEngine/RenderingEngine.d.ts +0 -2
- package/dist/types/RenderingEngine/RenderingEngine.d.ts.map +1 -1
- package/dist/types/RenderingEngine/VideoViewport.d.ts +2 -1
- package/dist/types/RenderingEngine/VideoViewport.d.ts.map +1 -1
- package/dist/types/RenderingEngine/Viewport.d.ts +2 -1
- package/dist/types/RenderingEngine/Viewport.d.ts.map +1 -1
- package/dist/types/RenderingEngine/WSIViewport.d.ts +83 -0
- package/dist/types/RenderingEngine/WSIViewport.d.ts.map +1 -0
- package/dist/types/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
- package/dist/types/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts.map +1 -1
- package/dist/types/enums/MetadataModules.d.ts +2 -1
- package/dist/types/enums/MetadataModules.d.ts.map +1 -1
- package/dist/types/enums/ViewportType.d.ts +2 -1
- package/dist/types/enums/ViewportType.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/IRenderingEngine.d.ts +0 -2
- package/dist/types/types/IRenderingEngine.d.ts.map +1 -1
- package/dist/types/types/IViewport.d.ts +7 -0
- package/dist/types/types/IViewport.d.ts.map +1 -1
- package/dist/types/types/IWSIViewport.d.ts +14 -0
- package/dist/types/types/IWSIViewport.d.ts.map +1 -0
- package/dist/types/types/WSIViewportProperties.d.ts +4 -0
- package/dist/types/types/WSIViewportProperties.d.ts.map +1 -0
- package/dist/types/types/WSIViewportTypes.d.ts +14 -0
- package/dist/types/types/WSIViewportTypes.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +5 -2
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utilities/genericMetadataProvider.d.ts.map +1 -1
- package/dist/types/utilities/uuidv4.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +2 -2
- package/src/RenderingEngine/RenderingEngine.ts +0 -20
- package/src/RenderingEngine/StackViewport.ts +2 -2
- package/src/RenderingEngine/VideoViewport.ts +38 -10
- package/src/RenderingEngine/Viewport.ts +8 -0
- package/src/RenderingEngine/WSIViewport.ts +661 -0
- package/src/RenderingEngine/helpers/viewportTypeToViewportClass.ts +2 -0
- package/src/enums/MetadataModules.ts +5 -0
- package/src/enums/ViewportType.ts +4 -0
- package/src/index.ts +2 -0
- package/src/types/IRenderingEngine.ts +0 -2
- package/src/types/IViewport.ts +20 -0
- package/src/types/IWSIViewport.ts +59 -0
- package/src/types/WSIViewportProperties.ts +8 -0
- package/src/types/WSIViewportTypes.ts +14 -0
- package/src/types/index.ts +8 -0
- package/src/utilities/genericMetadataProvider.ts +3 -2
- package/src/utilities/uuidv4.ts +1 -5
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { IWSIViewport, WSIViewportProperties, Point3, Point2, ICamera, WSIViewportInput } from '../types';
|
|
2
|
+
import { Transform } from './helpers/cpuFallback/rendering/transform';
|
|
3
|
+
import Viewport from './Viewport';
|
|
4
|
+
declare class WSIViewport extends Viewport implements IWSIViewport {
|
|
5
|
+
modality: any;
|
|
6
|
+
protected imageIds: string[];
|
|
7
|
+
readonly uid: any;
|
|
8
|
+
readonly renderingEngineId: string;
|
|
9
|
+
private frameOfReferenceUID;
|
|
10
|
+
protected metadata: any;
|
|
11
|
+
protected metadataDicomweb: any;
|
|
12
|
+
private microscopyElement;
|
|
13
|
+
protected map: any;
|
|
14
|
+
private internalCamera;
|
|
15
|
+
private viewer;
|
|
16
|
+
private voiRange;
|
|
17
|
+
constructor(props: WSIViewportInput);
|
|
18
|
+
static get useCustomRenderingPipeline(): boolean;
|
|
19
|
+
private addEventListeners;
|
|
20
|
+
private removeEventListeners;
|
|
21
|
+
private elementDisabledHandler;
|
|
22
|
+
private getImageDataMetadata;
|
|
23
|
+
setFrameNumber(frame: number): Promise<void>;
|
|
24
|
+
setProperties(props: WSIViewportProperties): void;
|
|
25
|
+
getProperties: () => WSIViewportProperties;
|
|
26
|
+
resetProperties(): void;
|
|
27
|
+
protected getScalarData(): any;
|
|
28
|
+
getImageData(): {
|
|
29
|
+
dimensions: any;
|
|
30
|
+
spacing: any;
|
|
31
|
+
numComps: number;
|
|
32
|
+
origin: any;
|
|
33
|
+
direction: any;
|
|
34
|
+
metadata: {
|
|
35
|
+
Modality: any;
|
|
36
|
+
};
|
|
37
|
+
getScalarData: () => any;
|
|
38
|
+
imageData: {
|
|
39
|
+
getDirection: () => any;
|
|
40
|
+
getDimensions: () => any;
|
|
41
|
+
getRange: () => number[];
|
|
42
|
+
getScalarData: () => any;
|
|
43
|
+
getSpacing: () => any;
|
|
44
|
+
worldToIndex: (point: Point3) => number[];
|
|
45
|
+
indexToWorld: (point: Point3) => Point3;
|
|
46
|
+
};
|
|
47
|
+
hasPixelSpacing: boolean;
|
|
48
|
+
calibration: import("../types").IImageCalibration;
|
|
49
|
+
preScale: {
|
|
50
|
+
scaled: boolean;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
hasImageURI(imageURI: string): boolean;
|
|
54
|
+
setCamera(camera: ICamera): void;
|
|
55
|
+
getCurrentImageId(): string;
|
|
56
|
+
getFrameNumber(): number;
|
|
57
|
+
getCamera(): ICamera;
|
|
58
|
+
resetCamera: () => boolean;
|
|
59
|
+
getNumberOfSlices: () => number;
|
|
60
|
+
private getImportPath;
|
|
61
|
+
getFrameOfReferenceUID: () => string;
|
|
62
|
+
resize: () => void;
|
|
63
|
+
canvasToWorld: (canvasPos: Point2) => Point3;
|
|
64
|
+
worldToCanvas: (worldPos: Point3) => Point2;
|
|
65
|
+
setDataIds(imageIds: string[]): void;
|
|
66
|
+
setWSI(imageIds: string[], client: any): Promise<void>;
|
|
67
|
+
postrender: () => void;
|
|
68
|
+
scroll(delta: number): void;
|
|
69
|
+
getRotation: () => number;
|
|
70
|
+
protected canvasToIndex: (canvasPos: Point2) => Point2;
|
|
71
|
+
protected indexToCanvas: (indexPos: Point2) => Point2;
|
|
72
|
+
getSliceIndex(): number;
|
|
73
|
+
getView(): any;
|
|
74
|
+
private refreshRenderValues;
|
|
75
|
+
customRenderViewportToCanvas: () => void;
|
|
76
|
+
getZoom(): any;
|
|
77
|
+
setZoom(zoom: number): void;
|
|
78
|
+
protected getTransform(): Transform;
|
|
79
|
+
getReferenceId(): string;
|
|
80
|
+
getCurrentImageIdIndex(): number;
|
|
81
|
+
}
|
|
82
|
+
export default WSIViewport;
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
39
|
+
const enums_1 = require("../enums");
|
|
40
|
+
const metaData = __importStar(require("../metaData"));
|
|
41
|
+
const transform_1 = require("./helpers/cpuFallback/rendering/transform");
|
|
42
|
+
const Viewport_1 = __importDefault(require("./Viewport"));
|
|
43
|
+
const helpers_1 = require("./helpers");
|
|
44
|
+
const constants_1 = require("../constants");
|
|
45
|
+
const utilities_1 = require("../utilities");
|
|
46
|
+
const _map = Symbol.for('map');
|
|
47
|
+
const EVENT_POSTRENDER = 'postrender';
|
|
48
|
+
class WSIViewport extends Viewport_1.default {
|
|
49
|
+
constructor(props) {
|
|
50
|
+
super(Object.assign(Object.assign({}, props), { canvas: props.canvas || (0, helpers_1.getOrCreateCanvas)(props.element) }));
|
|
51
|
+
this.internalCamera = {
|
|
52
|
+
rotation: 0,
|
|
53
|
+
centerIndex: [0, 0],
|
|
54
|
+
extent: [0, -2, 1, -1],
|
|
55
|
+
xSpacing: 1,
|
|
56
|
+
ySpacing: 1,
|
|
57
|
+
resolution: 1,
|
|
58
|
+
zoom: 1,
|
|
59
|
+
};
|
|
60
|
+
this.voiRange = {
|
|
61
|
+
lower: 0,
|
|
62
|
+
upper: 255,
|
|
63
|
+
};
|
|
64
|
+
this.getProperties = () => {
|
|
65
|
+
return {};
|
|
66
|
+
};
|
|
67
|
+
this.resetCamera = () => {
|
|
68
|
+
return true;
|
|
69
|
+
};
|
|
70
|
+
this.getNumberOfSlices = () => {
|
|
71
|
+
return 1;
|
|
72
|
+
};
|
|
73
|
+
this.getFrameOfReferenceUID = () => {
|
|
74
|
+
return this.frameOfReferenceUID;
|
|
75
|
+
};
|
|
76
|
+
this.resize = () => {
|
|
77
|
+
const canvas = this.canvas;
|
|
78
|
+
const { clientWidth, clientHeight } = canvas;
|
|
79
|
+
if (canvas.width !== clientWidth || canvas.height !== clientHeight) {
|
|
80
|
+
canvas.width = clientWidth;
|
|
81
|
+
canvas.height = clientHeight;
|
|
82
|
+
}
|
|
83
|
+
this.refreshRenderValues();
|
|
84
|
+
};
|
|
85
|
+
this.canvasToWorld = (canvasPos) => {
|
|
86
|
+
if (!this.metadata) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const [px, py] = this.canvasToIndex(canvasPos);
|
|
90
|
+
const { origin, spacing, direction } = this.getImageData();
|
|
91
|
+
const worldPos = gl_matrix_1.vec3.fromValues(0, 0, 0);
|
|
92
|
+
const iVector = direction.slice(0, 3);
|
|
93
|
+
const jVector = direction.slice(3, 6);
|
|
94
|
+
gl_matrix_1.vec3.scaleAndAdd(worldPos, origin, iVector, px * spacing[0]);
|
|
95
|
+
gl_matrix_1.vec3.scaleAndAdd(worldPos, worldPos, jVector, py * spacing[1]);
|
|
96
|
+
return [worldPos[0], worldPos[1], worldPos[2]];
|
|
97
|
+
};
|
|
98
|
+
this.worldToCanvas = (worldPos) => {
|
|
99
|
+
if (!this.metadata) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const { spacing, direction, origin } = this.metadata;
|
|
103
|
+
const iVector = direction.slice(0, 3);
|
|
104
|
+
const jVector = direction.slice(3, 6);
|
|
105
|
+
const diff = gl_matrix_1.vec3.subtract([0, 0, 0], worldPos, origin);
|
|
106
|
+
const indexPoint = [
|
|
107
|
+
gl_matrix_1.vec3.dot(diff, iVector) / spacing[0],
|
|
108
|
+
gl_matrix_1.vec3.dot(diff, jVector) / spacing[1],
|
|
109
|
+
];
|
|
110
|
+
const canvasPoint = this.indexToCanvas(indexPoint);
|
|
111
|
+
return canvasPoint;
|
|
112
|
+
};
|
|
113
|
+
this.postrender = () => {
|
|
114
|
+
this.refreshRenderValues();
|
|
115
|
+
(0, utilities_1.triggerEvent)(this.element, enums_1.Events.IMAGE_RENDERED, {
|
|
116
|
+
element: this.element,
|
|
117
|
+
viewportId: this.id,
|
|
118
|
+
viewport: this,
|
|
119
|
+
renderingEngineId: this.renderingEngineId,
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
this.getRotation = () => 0;
|
|
123
|
+
this.canvasToIndex = (canvasPos) => {
|
|
124
|
+
const transform = this.getTransform();
|
|
125
|
+
transform.invert();
|
|
126
|
+
return transform.transformPoint(canvasPos);
|
|
127
|
+
};
|
|
128
|
+
this.indexToCanvas = (indexPos) => {
|
|
129
|
+
const transform = this.getTransform();
|
|
130
|
+
return transform.transformPoint(indexPos);
|
|
131
|
+
};
|
|
132
|
+
this.customRenderViewportToCanvas = () => {
|
|
133
|
+
};
|
|
134
|
+
this.renderingEngineId = props.renderingEngineId;
|
|
135
|
+
this.element.setAttribute('data-viewport-uid', this.id);
|
|
136
|
+
this.element.setAttribute('data-rendering-engine-uid', this.renderingEngineId);
|
|
137
|
+
this.element.style.position = 'relative';
|
|
138
|
+
this.microscopyElement = document.createElement('div');
|
|
139
|
+
this.microscopyElement.id = crypto.randomUUID();
|
|
140
|
+
this.microscopyElement.innerText = 'Initial';
|
|
141
|
+
this.microscopyElement.style.background = 'grey';
|
|
142
|
+
this.microscopyElement.style.width = '100%';
|
|
143
|
+
this.microscopyElement.style.height = '100%';
|
|
144
|
+
this.microscopyElement.style.position = 'absolute';
|
|
145
|
+
this.microscopyElement.style.left = '0';
|
|
146
|
+
this.microscopyElement.style.top = '0';
|
|
147
|
+
const cs3dElement = this.element.firstElementChild;
|
|
148
|
+
cs3dElement.insertBefore(this.microscopyElement, cs3dElement.childNodes[1]);
|
|
149
|
+
this.addEventListeners();
|
|
150
|
+
this.resize();
|
|
151
|
+
}
|
|
152
|
+
static get useCustomRenderingPipeline() {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
addEventListeners() {
|
|
156
|
+
this.canvas.addEventListener(enums_1.Events.ELEMENT_DISABLED, this.elementDisabledHandler);
|
|
157
|
+
}
|
|
158
|
+
removeEventListeners() {
|
|
159
|
+
this.canvas.removeEventListener(enums_1.Events.ELEMENT_DISABLED, this.elementDisabledHandler);
|
|
160
|
+
}
|
|
161
|
+
elementDisabledHandler() {
|
|
162
|
+
this.removeEventListeners();
|
|
163
|
+
}
|
|
164
|
+
getImageDataMetadata(imageIndex = 0) {
|
|
165
|
+
var _a;
|
|
166
|
+
const maxImage = this.metadataDicomweb.reduce((maxImage, image) => {
|
|
167
|
+
return (maxImage === null || maxImage === void 0 ? void 0 : maxImage.NumberOfFrames) < image.NumberOfFrames ? image : maxImage;
|
|
168
|
+
});
|
|
169
|
+
const { TotalPixelMatrixColumns: columns, TotalPixelMatrixRows: rows, ImageOrientationSlide, ImagedVolumeWidth: width, ImagedVolumeHeight: height, ImagedVolumeDepth: depth, } = maxImage;
|
|
170
|
+
const imagePlaneModule = metaData.get(enums_1.MetadataModules.IMAGE_PLANE, this.imageIds[imageIndex]);
|
|
171
|
+
let rowCosines = ImageOrientationSlide.slice(0, 3);
|
|
172
|
+
let columnCosines = ImageOrientationSlide.slice(3, 6);
|
|
173
|
+
if (rowCosines == null || columnCosines == null) {
|
|
174
|
+
rowCosines = [1, 0, 0];
|
|
175
|
+
columnCosines = [0, 1, 0];
|
|
176
|
+
}
|
|
177
|
+
const rowCosineVec = gl_matrix_1.vec3.fromValues(rowCosines[0], rowCosines[1], rowCosines[2]);
|
|
178
|
+
const colCosineVec = gl_matrix_1.vec3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
|
|
179
|
+
const scanAxisNormal = gl_matrix_1.vec3.create();
|
|
180
|
+
gl_matrix_1.vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
|
|
181
|
+
const { XOffsetInSlideCoordinateSystem = 0, YOffsetInSlideCoordinateSystem = 0, ZOffsetInSlideCoordinateSystem = 0, } = ((_a = maxImage.TotalPixelMatrixOriginSequence) === null || _a === void 0 ? void 0 : _a[0]) || {};
|
|
182
|
+
const origin = [
|
|
183
|
+
XOffsetInSlideCoordinateSystem,
|
|
184
|
+
YOffsetInSlideCoordinateSystem,
|
|
185
|
+
ZOffsetInSlideCoordinateSystem,
|
|
186
|
+
];
|
|
187
|
+
const xSpacing = width / columns;
|
|
188
|
+
const ySpacing = height / rows;
|
|
189
|
+
const xVoxels = columns;
|
|
190
|
+
const yVoxels = rows;
|
|
191
|
+
const zSpacing = depth;
|
|
192
|
+
const zVoxels = 1;
|
|
193
|
+
this.hasPixelSpacing = !!(width && height);
|
|
194
|
+
return {
|
|
195
|
+
bitsAllocated: 8,
|
|
196
|
+
numComps: 3,
|
|
197
|
+
origin,
|
|
198
|
+
direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
|
|
199
|
+
dimensions: [xVoxels, yVoxels, zVoxels],
|
|
200
|
+
spacing: [xSpacing, ySpacing, zSpacing],
|
|
201
|
+
hasPixelSpacing: this.hasPixelSpacing,
|
|
202
|
+
numVoxels: xVoxels * yVoxels * zVoxels,
|
|
203
|
+
imagePlaneModule,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
setFrameNumber(frame) {
|
|
207
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
setProperties(props) {
|
|
211
|
+
}
|
|
212
|
+
resetProperties() {
|
|
213
|
+
this.setProperties({});
|
|
214
|
+
}
|
|
215
|
+
getScalarData() {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
getImageData() {
|
|
219
|
+
const { metadata } = this;
|
|
220
|
+
const spacing = metadata.spacing;
|
|
221
|
+
return {
|
|
222
|
+
dimensions: metadata.dimensions,
|
|
223
|
+
spacing,
|
|
224
|
+
numComps: 3,
|
|
225
|
+
origin: metadata.origin,
|
|
226
|
+
direction: metadata.direction,
|
|
227
|
+
metadata: { Modality: this.modality },
|
|
228
|
+
getScalarData: () => this.getScalarData(),
|
|
229
|
+
imageData: {
|
|
230
|
+
getDirection: () => metadata.direction,
|
|
231
|
+
getDimensions: () => metadata.dimensions,
|
|
232
|
+
getRange: () => [0, 255],
|
|
233
|
+
getScalarData: () => this.getScalarData(),
|
|
234
|
+
getSpacing: () => metadata.spacing,
|
|
235
|
+
worldToIndex: (point) => {
|
|
236
|
+
const canvasPoint = this.worldToCanvas(point);
|
|
237
|
+
const pixelCoord = this.canvasToIndex(canvasPoint);
|
|
238
|
+
return [pixelCoord[0], pixelCoord[1], 0];
|
|
239
|
+
},
|
|
240
|
+
indexToWorld: (point) => {
|
|
241
|
+
const canvasPoint = this.indexToCanvas([point[0], point[1]]);
|
|
242
|
+
return this.canvasToWorld(canvasPoint);
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
hasPixelSpacing: this.hasPixelSpacing,
|
|
246
|
+
calibration: this.calibration,
|
|
247
|
+
preScale: {
|
|
248
|
+
scaled: false,
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
hasImageURI(imageURI) {
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
setCamera(camera) {
|
|
256
|
+
const previousCamera = this.getCamera();
|
|
257
|
+
const { parallelScale, focalPoint } = camera;
|
|
258
|
+
const view = this.getView();
|
|
259
|
+
const { xSpacing } = this.internalCamera;
|
|
260
|
+
if (parallelScale) {
|
|
261
|
+
const worldToCanvasRatio = this.element.clientHeight / parallelScale;
|
|
262
|
+
const resolution = 1 / xSpacing / worldToCanvasRatio;
|
|
263
|
+
view.setResolution(resolution);
|
|
264
|
+
}
|
|
265
|
+
if (focalPoint) {
|
|
266
|
+
const newCanvas = this.worldToCanvas(focalPoint);
|
|
267
|
+
const newIndex = this.canvasToIndex(newCanvas);
|
|
268
|
+
view.setCenter(newIndex);
|
|
269
|
+
}
|
|
270
|
+
const updatedCamera = this.getCamera();
|
|
271
|
+
this.triggerCameraModifiedEventIfNecessary(previousCamera, updatedCamera);
|
|
272
|
+
}
|
|
273
|
+
getCurrentImageId() {
|
|
274
|
+
return this.imageIds[0];
|
|
275
|
+
}
|
|
276
|
+
getFrameNumber() {
|
|
277
|
+
return 1;
|
|
278
|
+
}
|
|
279
|
+
getCamera() {
|
|
280
|
+
this.refreshRenderValues();
|
|
281
|
+
const { resolution, xSpacing } = this.internalCamera;
|
|
282
|
+
const canvasToWorldRatio = resolution * xSpacing;
|
|
283
|
+
const canvasCenter = [
|
|
284
|
+
this.element.clientWidth / 2,
|
|
285
|
+
this.element.clientHeight / 2,
|
|
286
|
+
];
|
|
287
|
+
const focalPoint = this.canvasToWorld(canvasCenter);
|
|
288
|
+
return {
|
|
289
|
+
parallelProjection: true,
|
|
290
|
+
focalPoint,
|
|
291
|
+
position: focalPoint,
|
|
292
|
+
viewUp: [0, -1, 0],
|
|
293
|
+
parallelScale: this.element.clientHeight * canvasToWorldRatio,
|
|
294
|
+
viewPlaneNormal: [0, 0, 1],
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
getImportPath() {
|
|
298
|
+
return '/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js';
|
|
299
|
+
}
|
|
300
|
+
setDataIds(imageIds) {
|
|
301
|
+
const webClient = metaData.get(enums_1.MetadataModules.WEB_CLIENT, imageIds[0]);
|
|
302
|
+
if (!webClient) {
|
|
303
|
+
throw new Error(`To use setDataIds on WSI data, you must provide metaData.webClient for ${imageIds[0]}`);
|
|
304
|
+
}
|
|
305
|
+
this.setWSI(imageIds, webClient);
|
|
306
|
+
}
|
|
307
|
+
setWSI(imageIds, client) {
|
|
308
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
309
|
+
this.microscopyElement.style.background = 'red';
|
|
310
|
+
this.microscopyElement.innerText = 'Loading';
|
|
311
|
+
this.imageIds = imageIds;
|
|
312
|
+
yield Promise.resolve().then(() => __importStar(require(this.getImportPath())));
|
|
313
|
+
const DicomMicroscopyViewer = window.dicomMicroscopyViewer;
|
|
314
|
+
this.frameOfReferenceUID = null;
|
|
315
|
+
const metadataDicomweb = this.imageIds.map((imageId) => {
|
|
316
|
+
var _a, _b, _c;
|
|
317
|
+
const imageMetadata = client.getDICOMwebMetadata(imageId);
|
|
318
|
+
Object.defineProperty(imageMetadata, 'isMultiframe', {
|
|
319
|
+
value: imageMetadata.isMultiframe,
|
|
320
|
+
enumerable: false,
|
|
321
|
+
});
|
|
322
|
+
Object.defineProperty(imageMetadata, 'frameNumber', {
|
|
323
|
+
value: undefined,
|
|
324
|
+
enumerable: false,
|
|
325
|
+
});
|
|
326
|
+
const imageType = (_a = imageMetadata['00080008']) === null || _a === void 0 ? void 0 : _a.Value;
|
|
327
|
+
if ((imageType === null || imageType === void 0 ? void 0 : imageType.length) === 1) {
|
|
328
|
+
imageMetadata['00080008'].Value = imageType[0].split('\\');
|
|
329
|
+
}
|
|
330
|
+
const frameOfReference = (_c = (_b = imageMetadata['00200052']) === null || _b === void 0 ? void 0 : _b.Value) === null || _c === void 0 ? void 0 : _c[0];
|
|
331
|
+
if (!this.frameOfReferenceUID) {
|
|
332
|
+
this.frameOfReferenceUID = frameOfReference;
|
|
333
|
+
}
|
|
334
|
+
else if (frameOfReference !== this.frameOfReferenceUID) {
|
|
335
|
+
imageMetadata['00200052'].Value = [this.frameOfReferenceUID];
|
|
336
|
+
}
|
|
337
|
+
return imageMetadata;
|
|
338
|
+
});
|
|
339
|
+
const volumeImages = [];
|
|
340
|
+
metadataDicomweb.forEach((m) => {
|
|
341
|
+
const image = new DicomMicroscopyViewer.metadata.VLWholeSlideMicroscopyImage({
|
|
342
|
+
metadata: m,
|
|
343
|
+
});
|
|
344
|
+
const imageFlavor = image.ImageType[2];
|
|
345
|
+
if (imageFlavor === 'VOLUME' || imageFlavor === 'THUMBNAIL') {
|
|
346
|
+
volumeImages.push(image);
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
this.metadataDicomweb = volumeImages;
|
|
350
|
+
const viewer = new DicomMicroscopyViewer.viewer.VolumeImageViewer({
|
|
351
|
+
client,
|
|
352
|
+
metadata: volumeImages,
|
|
353
|
+
controls: [],
|
|
354
|
+
bindings: {},
|
|
355
|
+
});
|
|
356
|
+
viewer.render({ container: this.microscopyElement });
|
|
357
|
+
this.metadata = this.getImageDataMetadata();
|
|
358
|
+
viewer.deactivateDragPanInteraction();
|
|
359
|
+
this.viewer = viewer;
|
|
360
|
+
this.map = viewer[_map];
|
|
361
|
+
this.map.on(EVENT_POSTRENDER, this.postrender);
|
|
362
|
+
this.resize();
|
|
363
|
+
this.microscopyElement.innerText = '';
|
|
364
|
+
Object.assign(this.microscopyElement.style, {
|
|
365
|
+
'--ol-partial-background-color': 'rgba(127, 127, 127, 0.7)',
|
|
366
|
+
'--ol-foreground-color': '#000000',
|
|
367
|
+
'--ol-subtle-foreground-color': '#000',
|
|
368
|
+
'--ol-subtle-background-color': 'rgba(78, 78, 78, 0.5)',
|
|
369
|
+
background: 'none',
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
scroll(delta) {
|
|
374
|
+
const camera = this.getCamera();
|
|
375
|
+
this.setCamera({
|
|
376
|
+
parallelScale: camera.parallelScale * (1 + 0.1 * delta),
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
getSliceIndex() {
|
|
380
|
+
return 0;
|
|
381
|
+
}
|
|
382
|
+
getView() {
|
|
383
|
+
if (!this.viewer) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
const map = this.viewer[_map];
|
|
387
|
+
const anyWindow = window;
|
|
388
|
+
anyWindow.map = map;
|
|
389
|
+
anyWindow.viewer = this.viewer;
|
|
390
|
+
anyWindow.view = map === null || map === void 0 ? void 0 : map.getView();
|
|
391
|
+
anyWindow.wsi = this;
|
|
392
|
+
return map === null || map === void 0 ? void 0 : map.getView();
|
|
393
|
+
}
|
|
394
|
+
refreshRenderValues() {
|
|
395
|
+
const view = this.getView();
|
|
396
|
+
if (!view) {
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
const resolution = view.getResolution();
|
|
400
|
+
if (!resolution || resolution < constants_1.EPSILON) {
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
const centerIndex = view.getCenter();
|
|
404
|
+
const extent = view.getProjection().getExtent();
|
|
405
|
+
const rotation = view.getRotation();
|
|
406
|
+
const zoom = view.getZoom();
|
|
407
|
+
const { metadata: { spacing: [xSpacing, ySpacing], }, } = this;
|
|
408
|
+
const worldToCanvasRatio = 1 / resolution / xSpacing;
|
|
409
|
+
Object.assign(this.internalCamera, {
|
|
410
|
+
extent,
|
|
411
|
+
centerIndex,
|
|
412
|
+
worldToCanvasRatio,
|
|
413
|
+
xSpacing,
|
|
414
|
+
ySpacing,
|
|
415
|
+
resolution,
|
|
416
|
+
rotation,
|
|
417
|
+
zoom,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
getZoom() {
|
|
421
|
+
var _a;
|
|
422
|
+
return (_a = this.getView()) === null || _a === void 0 ? void 0 : _a.getZoom();
|
|
423
|
+
}
|
|
424
|
+
setZoom(zoom) {
|
|
425
|
+
var _a;
|
|
426
|
+
(_a = this.getView()) === null || _a === void 0 ? void 0 : _a.setZoom(zoom);
|
|
427
|
+
}
|
|
428
|
+
getTransform() {
|
|
429
|
+
this.refreshRenderValues();
|
|
430
|
+
const { centerIndex: center, resolution, rotation } = this.internalCamera;
|
|
431
|
+
const halfCanvas = [this.canvas.width / 2, this.canvas.height / 2];
|
|
432
|
+
const transform = new transform_1.Transform();
|
|
433
|
+
transform.translate(halfCanvas[0], halfCanvas[1]);
|
|
434
|
+
transform.rotate(rotation);
|
|
435
|
+
transform.scale(1 / resolution, -1 / resolution);
|
|
436
|
+
transform.translate(-center[0], -center[1]);
|
|
437
|
+
return transform;
|
|
438
|
+
}
|
|
439
|
+
getReferenceId() {
|
|
440
|
+
return `imageId:${this.getCurrentImageId()}`;
|
|
441
|
+
}
|
|
442
|
+
getCurrentImageIdIndex() {
|
|
443
|
+
return 0;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
exports.default = WSIViewport;
|
|
447
|
+
//# sourceMappingURL=WSIViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WSIViewport.js","sourceRoot":"","sources":["../../../src/RenderingEngine/WSIViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,13 @@ import StackViewport from '../StackViewport';
|
|
|
2
2
|
import VolumeViewport from '../VolumeViewport';
|
|
3
3
|
import VolumeViewport3D from '../VolumeViewport3D';
|
|
4
4
|
import VideoViewport from '../VideoViewport';
|
|
5
|
+
import WSIViewport from '../WSIViewport';
|
|
5
6
|
declare const viewportTypeToViewportClass: {
|
|
6
7
|
orthographic: typeof VolumeViewport;
|
|
7
8
|
perspective: typeof VolumeViewport;
|
|
8
9
|
stack: typeof StackViewport;
|
|
9
10
|
volume3d: typeof VolumeViewport3D;
|
|
10
11
|
video: typeof VideoViewport;
|
|
12
|
+
wholeSlide: typeof WSIViewport;
|
|
11
13
|
};
|
|
12
14
|
export default viewportTypeToViewportClass;
|
|
@@ -8,12 +8,14 @@ const VolumeViewport_1 = __importDefault(require("../VolumeViewport"));
|
|
|
8
8
|
const ViewportType_1 = __importDefault(require("../../enums/ViewportType"));
|
|
9
9
|
const VolumeViewport3D_1 = __importDefault(require("../VolumeViewport3D"));
|
|
10
10
|
const VideoViewport_1 = __importDefault(require("../VideoViewport"));
|
|
11
|
+
const WSIViewport_1 = __importDefault(require("../WSIViewport"));
|
|
11
12
|
const viewportTypeToViewportClass = {
|
|
12
13
|
[ViewportType_1.default.ORTHOGRAPHIC]: VolumeViewport_1.default,
|
|
13
14
|
[ViewportType_1.default.PERSPECTIVE]: VolumeViewport_1.default,
|
|
14
15
|
[ViewportType_1.default.STACK]: StackViewport_1.default,
|
|
15
16
|
[ViewportType_1.default.VOLUME_3D]: VolumeViewport3D_1.default,
|
|
16
17
|
[ViewportType_1.default.VIDEO]: VideoViewport_1.default,
|
|
18
|
+
[ViewportType_1.default.WholeSlide]: WSIViewport_1.default,
|
|
17
19
|
};
|
|
18
20
|
exports.default = viewportTypeToViewportClass;
|
|
19
21
|
//# sourceMappingURL=viewportTypeToViewportClass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewportTypeToViewportClass.js","sourceRoot":"","sources":["../../../../src/RenderingEngine/helpers/viewportTypeToViewportClass.ts"],"names":[],"mappings":";;;;;AACA,qEAA6C;AAC7C,uEAA+C;AAC/C,4EAAoD;AACpD,2EAAmD;AACnD,qEAA6C;
|
|
1
|
+
{"version":3,"file":"viewportTypeToViewportClass.js","sourceRoot":"","sources":["../../../../src/RenderingEngine/helpers/viewportTypeToViewportClass.ts"],"names":[],"mappings":";;;;;AACA,qEAA6C;AAC7C,uEAA+C;AAC/C,4EAAoD;AACpD,2EAAmD;AACnD,qEAA6C;AAC7C,iEAAyC;AAEzC,MAAM,2BAA2B,GAAG;IAClC,CAAC,sBAAY,CAAC,YAAY,CAAC,EAAE,wBAAc;IAC3C,CAAC,sBAAY,CAAC,WAAW,CAAC,EAAE,wBAAc;IAC1C,CAAC,sBAAY,CAAC,KAAK,CAAC,EAAE,uBAAa;IACnC,CAAC,sBAAY,CAAC,SAAS,CAAC,EAAE,0BAAgB;IAC1C,CAAC,sBAAY,CAAC,KAAK,CAAC,EAAE,uBAAa;IACnC,CAAC,sBAAY,CAAC,UAAU,CAAC,EAAE,qBAAW;CACvC,CAAC;AAEF,kBAAe,2BAA2B,CAAC"}
|
|
@@ -18,6 +18,7 @@ declare enum MetadataModules {
|
|
|
18
18
|
PET_SERIES = "petSeriesModule",
|
|
19
19
|
SOP_COMMON = "sopCommonModule",
|
|
20
20
|
ULTRASOUND_ENHANCED_REGION = "ultrasoundEnhancedRegionModule",
|
|
21
|
-
VOI_LUT = "voiLutModule"
|
|
21
|
+
VOI_LUT = "voiLutModule",
|
|
22
|
+
WEB_CLIENT = "webClient"
|
|
22
23
|
}
|
|
23
24
|
export default MetadataModules;
|
|
@@ -22,6 +22,7 @@ var MetadataModules;
|
|
|
22
22
|
MetadataModules["SOP_COMMON"] = "sopCommonModule";
|
|
23
23
|
MetadataModules["ULTRASOUND_ENHANCED_REGION"] = "ultrasoundEnhancedRegionModule";
|
|
24
24
|
MetadataModules["VOI_LUT"] = "voiLutModule";
|
|
25
|
+
MetadataModules["WEB_CLIENT"] = "webClient";
|
|
25
26
|
})(MetadataModules || (MetadataModules = {}));
|
|
26
27
|
exports.default = MetadataModules;
|
|
27
28
|
//# sourceMappingURL=MetadataModules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataModules.js","sourceRoot":"","sources":["../../../src/enums/MetadataModules.ts"],"names":[],"mappings":";;AAQA,IAAK,
|
|
1
|
+
{"version":3,"file":"MetadataModules.js","sourceRoot":"","sources":["../../../src/enums/MetadataModules.ts"],"names":[],"mappings":";;AAQA,IAAK,eA0BJ;AA1BD,WAAK,eAAe;IAClB,oDAAiC,CAAA;IACjC,sCAAmB,CAAA;IACnB,uDAAoC,CAAA;IACpC,yDAAsC,CAAA;IACtC,uDAAoC,CAAA;IACpC,mDAAgC,CAAA;IAChC,mDAAgC,CAAA;IAChC,+CAA4B,CAAA;IAC5B,qDAAkC,CAAA;IAClC,kDAA+B,CAAA;IAC/B,wEAAqD,CAAA;IACrD,uDAAoC,CAAA;IACpC,4CAAyB,CAAA;IACzB,uDAAoC,CAAA;IACpC,+CAA4B,CAAA;IAC5B,mDAAgC,CAAA;IAChC,iDAA8B,CAAA;IAC9B,iDAA8B,CAAA;IAC9B,gFAA6D,CAAA;IAC7D,2CAAwB,CAAA;IAKxB,2CAAwB,CAAA;AAC1B,CAAC,EA1BI,eAAe,KAAf,eAAe,QA0BnB;AAED,kBAAe,eAAe,CAAC"}
|
|
@@ -7,6 +7,7 @@ var ViewportType;
|
|
|
7
7
|
ViewportType["PERSPECTIVE"] = "perspective";
|
|
8
8
|
ViewportType["VOLUME_3D"] = "volume3d";
|
|
9
9
|
ViewportType["VIDEO"] = "video";
|
|
10
|
+
ViewportType["WholeSlide"] = "wholeSlide";
|
|
10
11
|
})(ViewportType || (ViewportType = {}));
|
|
11
12
|
exports.default = ViewportType;
|
|
12
13
|
//# sourceMappingURL=ViewportType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewportType.js","sourceRoot":"","sources":["../../../src/enums/ViewportType.ts"],"names":[],"mappings":";;AAIA,IAAK,
|
|
1
|
+
{"version":3,"file":"ViewportType.js","sourceRoot":"","sources":["../../../src/enums/ViewportType.ts"],"names":[],"mappings":";;AAIA,IAAK,YAmBJ;AAnBD,WAAK,YAAY;IAKf,+BAAe,CAAA;IAKf,6CAA6B,CAAA;IAE7B,2CAA2B,CAAA;IAC3B,sCAAsB,CAAA;IACtB,+BAAe,CAAA;IAIf,yCAAyB,CAAA;AAC3B,CAAC,EAnBI,YAAY,KAAZ,YAAY,QAmBhB;AAED,kBAAe,YAAY,CAAC"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import VolumeViewport3D from './RenderingEngine/VolumeViewport3D';
|
|
|
8
8
|
import BaseVolumeViewport from './RenderingEngine/BaseVolumeViewport';
|
|
9
9
|
import StackViewport from './RenderingEngine/StackViewport';
|
|
10
10
|
import VideoViewport from './RenderingEngine/VideoViewport';
|
|
11
|
+
import WSIViewport from './RenderingEngine/WSIViewport';
|
|
11
12
|
import Viewport from './RenderingEngine/Viewport';
|
|
12
13
|
import eventTarget from './eventTarget';
|
|
13
14
|
import { getRenderingEngine, getRenderingEngines } from './RenderingEngine/getRenderingEngine';
|
|
@@ -29,4 +30,4 @@ import { registerImageLoader } from './loaders/imageLoader';
|
|
|
29
30
|
import triggerEvent from './utilities/triggerEvent';
|
|
30
31
|
import { setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports } from './RenderingEngine/helpers';
|
|
31
32
|
export type { Types, IRetrieveConfiguration, RetrieveOptions, RetrieveStage, ImageLoadListener, IImagesLoader, };
|
|
32
|
-
export { init, isCornerstoneInitialized, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, getShouldUseSharedArrayBuffer, setUseSharedArrayBuffer, resetUseSharedArrayBuffer, geometryLoader, ProgressiveRetrieveImages, };
|
|
33
|
+
export { init, isCornerstoneInitialized, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, getShouldUseSharedArrayBuffer, setUseSharedArrayBuffer, resetUseSharedArrayBuffer, geometryLoader, ProgressiveRetrieveImages, };
|