@cornerstonejs/core 0.19.2 → 0.21.0
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/VolumeViewport.js +15 -27
- package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/helpers/addVolumesToViewports.js +4 -3
- package/dist/cjs/RenderingEngine/helpers/addVolumesToViewports.js.map +1 -1
- package/dist/cjs/RenderingEngine/helpers/createVolumeActor.d.ts +3 -3
- package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
- package/dist/cjs/RenderingEngine/index.d.ts +2 -1
- package/dist/cjs/RenderingEngine/index.js +3 -1
- package/dist/cjs/RenderingEngine/index.js.map +1 -1
- package/dist/cjs/constants/index.d.ts +2 -1
- package/dist/cjs/constants/index.js +3 -1
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/mprCameraValues.d.ts +2 -0
- package/dist/cjs/constants/mprCameraValues.js +23 -0
- package/dist/cjs/constants/mprCameraValues.js.map +1 -0
- package/dist/cjs/enums/Events.d.ts +2 -0
- package/dist/cjs/enums/Events.js +2 -0
- package/dist/cjs/enums/Events.js.map +1 -1
- package/dist/cjs/metaData.d.ts +3 -5
- package/dist/cjs/metaData.js +2 -2
- package/dist/cjs/metaData.js.map +1 -1
- package/dist/cjs/types/IActor.d.ts +1 -0
- package/dist/cjs/utilities/calculateViewportsSpatialRegistration.d.ts +3 -0
- package/dist/cjs/utilities/calculateViewportsSpatialRegistration.js +37 -0
- package/dist/cjs/utilities/calculateViewportsSpatialRegistration.js.map +1 -0
- package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js +3 -1
- package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js.map +1 -1
- package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js +5 -4
- package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js.map +1 -1
- package/dist/cjs/utilities/getViewportImageCornersInWorld.d.ts +2 -0
- package/dist/cjs/utilities/getViewportImageCornersInWorld.js +64 -0
- package/dist/cjs/utilities/getViewportImageCornersInWorld.js.map +1 -0
- package/dist/cjs/utilities/index.d.ts +4 -1
- package/dist/cjs/utilities/index.js +7 -1
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/cjs/utilities/spatialRegistrationMetadataProvider.d.ts +6 -0
- package/dist/cjs/utilities/spatialRegistrationMetadataProvider.js +32 -0
- package/dist/cjs/utilities/spatialRegistrationMetadataProvider.js.map +1 -0
- package/dist/cjs/volumeLoader.d.ts +2 -1
- package/dist/cjs/volumeLoader.js +64 -55
- package/dist/cjs/volumeLoader.js.map +1 -1
- package/dist/esm/RenderingEngine/VolumeViewport.js +16 -29
- package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.js +4 -3
- package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.js.map +1 -1
- package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +3 -3
- package/dist/esm/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
- package/dist/esm/RenderingEngine/index.d.ts +2 -1
- package/dist/esm/RenderingEngine/index.js +2 -1
- package/dist/esm/RenderingEngine/index.js.map +1 -1
- package/dist/esm/constants/index.d.ts +2 -1
- package/dist/esm/constants/index.js +2 -1
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/constants/mprCameraValues.d.ts +2 -0
- package/dist/esm/constants/mprCameraValues.js +18 -0
- package/dist/esm/constants/mprCameraValues.js.map +1 -0
- package/dist/esm/enums/Events.d.ts +2 -0
- package/dist/esm/enums/Events.js +2 -0
- package/dist/esm/enums/Events.js.map +1 -1
- package/dist/esm/metaData.d.ts +3 -5
- package/dist/esm/metaData.js +2 -2
- package/dist/esm/metaData.js.map +1 -1
- package/dist/esm/types/IActor.d.ts +1 -0
- package/dist/esm/utilities/calculateViewportsSpatialRegistration.d.ts +3 -0
- package/dist/esm/utilities/calculateViewportsSpatialRegistration.js +32 -0
- package/dist/esm/utilities/calculateViewportsSpatialRegistration.js.map +1 -0
- package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js +3 -1
- package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js.map +1 -1
- package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js +4 -4
- package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js.map +1 -1
- package/dist/esm/utilities/getViewportImageCornersInWorld.d.ts +2 -0
- package/dist/esm/utilities/getViewportImageCornersInWorld.js +61 -0
- package/dist/esm/utilities/getViewportImageCornersInWorld.js.map +1 -0
- package/dist/esm/utilities/index.d.ts +4 -1
- package/dist/esm/utilities/index.js +4 -1
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/esm/utilities/spatialRegistrationMetadataProvider.d.ts +6 -0
- package/dist/esm/utilities/spatialRegistrationMetadataProvider.js +30 -0
- package/dist/esm/utilities/spatialRegistrationMetadataProvider.js.map +1 -0
- package/dist/esm/volumeLoader.d.ts +2 -1
- package/dist/esm/volumeLoader.js +10 -3
- package/dist/esm/volumeLoader.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -2,6 +2,7 @@ declare enum Events {
|
|
|
2
2
|
CACHE_SIZE_EXCEEDED = "CACHE_SIZE_EXCEEDED",
|
|
3
3
|
IMAGE_LOAD_ERROR = "IMAGE_LOAD_ERROR",
|
|
4
4
|
CAMERA_MODIFIED = "CORNERSTONE_CAMERA_MODIFIED",
|
|
5
|
+
CAMERA_RESET = "CORNERSTONE_CAMERA_RESET",
|
|
5
6
|
VOI_MODIFIED = "CORNERSTONE_VOI_MODIFIED",
|
|
6
7
|
ELEMENT_DISABLED = "CORNERSTONE_ELEMENT_DISABLED",
|
|
7
8
|
ELEMENT_ENABLED = "CORNERSTONE_ELEMENT_ENABLED",
|
|
@@ -9,6 +10,7 @@ declare enum Events {
|
|
|
9
10
|
IMAGE_VOLUME_MODIFIED = "CORNERSTONE_IMAGE_VOLUME_MODIFIED",
|
|
10
11
|
IMAGE_LOADED = "CORNERSTONE_IMAGE_LOADED",
|
|
11
12
|
IMAGE_LOAD_FAILED = "CORNERSTONE_IMAGE_LOAD_FAILED",
|
|
13
|
+
VOLUME_VIEWPORT_NEW_VOLUME = "CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",
|
|
12
14
|
VOLUME_LOADED = "CORNERSTONE_VOLUME_LOADED",
|
|
13
15
|
VOLUME_LOADED_FAILED = "CORNERSTONE_VOLUME_LOADED_FAILED",
|
|
14
16
|
IMAGE_CACHE_IMAGE_ADDED = "CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",
|
package/dist/esm/enums/Events.js
CHANGED
|
@@ -3,6 +3,7 @@ var Events;
|
|
|
3
3
|
Events["CACHE_SIZE_EXCEEDED"] = "CACHE_SIZE_EXCEEDED";
|
|
4
4
|
Events["IMAGE_LOAD_ERROR"] = "IMAGE_LOAD_ERROR";
|
|
5
5
|
Events["CAMERA_MODIFIED"] = "CORNERSTONE_CAMERA_MODIFIED";
|
|
6
|
+
Events["CAMERA_RESET"] = "CORNERSTONE_CAMERA_RESET";
|
|
6
7
|
Events["VOI_MODIFIED"] = "CORNERSTONE_VOI_MODIFIED";
|
|
7
8
|
Events["ELEMENT_DISABLED"] = "CORNERSTONE_ELEMENT_DISABLED";
|
|
8
9
|
Events["ELEMENT_ENABLED"] = "CORNERSTONE_ELEMENT_ENABLED";
|
|
@@ -10,6 +11,7 @@ var Events;
|
|
|
10
11
|
Events["IMAGE_VOLUME_MODIFIED"] = "CORNERSTONE_IMAGE_VOLUME_MODIFIED";
|
|
11
12
|
Events["IMAGE_LOADED"] = "CORNERSTONE_IMAGE_LOADED";
|
|
12
13
|
Events["IMAGE_LOAD_FAILED"] = "CORNERSTONE_IMAGE_LOAD_FAILED";
|
|
14
|
+
Events["VOLUME_VIEWPORT_NEW_VOLUME"] = "CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME";
|
|
13
15
|
Events["VOLUME_LOADED"] = "CORNERSTONE_VOLUME_LOADED";
|
|
14
16
|
Events["VOLUME_LOADED_FAILED"] = "CORNERSTONE_VOLUME_LOADED_FAILED";
|
|
15
17
|
Events["IMAGE_CACHE_IMAGE_ADDED"] = "CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/enums/Events.ts"],"names":[],"mappings":"AAGA,IAAK,
|
|
1
|
+
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/enums/Events.ts"],"names":[],"mappings":"AAGA,IAAK,MAyLJ;AAzLD,WAAK,MAAM;IAST,qDAA2C,CAAA;IAK3C,+CAAqC,CAAA;IAQrC,yDAA+C,CAAA;IAO/C,mDAAyC,CAAA;IAOzC,mDAAyC,CAAA;IAOzC,2DAAiD,CAAA;IAOjD,yDAA+C,CAAA;IAO/C,uDAA6C,CAAA;IAS7C,qEAA2D,CAAA;IAO3D,mDAAyC,CAAA;IAOzC,6DAAmD,CAAA;IAInD,+EAAqE,CAAA;IAQrE,qDAA2C,CAAA;IAO3C,mEAAyD,CAAA;IAOzD,yEAA+D,CAAA;IAO/D,6EAAmE,CAAA;IAOnE,6EAAmE,CAAA;IAOnE,iFAAuE,CAAA;IAOvE,yDAA+C,CAAA;IAS/C,2DAAiD,CAAA;IAQjD,iEAAuD,CAAA;IAOvD,2EAAiE,CAAA;IAQjE,iEAAuD,CAAA;IAOvD,2EAAiE,CAAA;IAOjE,qEAA2D,CAAA;AAK7D,CAAC,EAzLI,MAAM,KAAN,MAAM,QAyLV;AAED,eAAe,MAAM,CAAC"}
|
package/dist/esm/metaData.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
export declare function addProvider(provider: (type: string,
|
|
2
|
-
|
|
3
|
-
}, priority?: number): void;
|
|
4
|
-
export declare function removeProvider(provider: (type: string, imageId: string) => {
|
|
1
|
+
export declare function addProvider(provider: (type: string, query: any) => any, priority?: number): void;
|
|
2
|
+
export declare function removeProvider(provider: (type: string, query: any) => {
|
|
5
3
|
any: any;
|
|
6
4
|
}): void;
|
|
7
5
|
export declare function removeAllProviders(): void;
|
|
8
|
-
declare function getMetaData(type: string,
|
|
6
|
+
declare function getMetaData(type: string, query: string): any;
|
|
9
7
|
export { getMetaData as get };
|
package/dist/esm/metaData.js
CHANGED
|
@@ -24,9 +24,9 @@ export function removeAllProviders() {
|
|
|
24
24
|
providers.pop();
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
function getMetaData(type,
|
|
27
|
+
function getMetaData(type, query) {
|
|
28
28
|
for (let i = 0; i < providers.length; i++) {
|
|
29
|
-
const result = providers[i].provider(type,
|
|
29
|
+
const result = providers[i].provider(type, query);
|
|
30
30
|
if (result !== undefined) {
|
|
31
31
|
return result;
|
|
32
32
|
}
|
package/dist/esm/metaData.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metaData.js","sourceRoot":"","sources":["../../src/metaData.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS,GAAG,EAAE,CAAC;AASrB,MAAM,UAAU,WAAW,CACzB,
|
|
1
|
+
{"version":3,"file":"metaData.js","sourceRoot":"","sources":["../../src/metaData.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS,GAAG,EAAE,CAAC;AASrB,MAAM,UAAU,WAAW,CACzB,QAA2C,EAC3C,QAAQ,GAAG,CAAC;IAEZ,IAAI,CAAC,CAAC;IAGN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,EAAE;YACrC,MAAM;SACP;KACF;IAGD,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;QACrB,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AASD,MAAM,UAAU,cAAc,CAC5B,QAA+C;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACtC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvB,MAAM;SACP;KACF;AACH,CAAC;AAOD,MAAM,UAAU,kBAAkB;IAChC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,SAAS,CAAC,GAAG,EAAE,CAAC;KACjB;AACH,CAAC;AAYD,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAElD,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,MAAM,CAAC;SACf;KACF;AACH,CAAC;AAED,OAAO,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { vec3, mat4 } from 'gl-matrix';
|
|
2
|
+
import { StackViewport } from '../RenderingEngine';
|
|
3
|
+
import spatialRegistrationMetadataProvider from './spatialRegistrationMetadataProvider';
|
|
4
|
+
import { metaData } from '..';
|
|
5
|
+
import isEqual from './isEqual';
|
|
6
|
+
function calculateViewportsSpatialRegistration(viewport1, viewport2) {
|
|
7
|
+
if (!(viewport1 instanceof StackViewport) ||
|
|
8
|
+
!(viewport2 instanceof StackViewport)) {
|
|
9
|
+
throw new Error('calculateViewportsSpatialRegistration: Both viewports must be StackViewports, volume viewports are not supported yet');
|
|
10
|
+
}
|
|
11
|
+
const isSameFrameOfReference = viewport1.getFrameOfReferenceUID() === viewport2.getFrameOfReferenceUID();
|
|
12
|
+
if (isSameFrameOfReference) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const imageId1 = viewport1.getCurrentImageId();
|
|
16
|
+
const imageId2 = viewport2.getCurrentImageId();
|
|
17
|
+
const imagePlaneModule1 = metaData.get('imagePlaneModule', imageId1);
|
|
18
|
+
const imagePlaneModule2 = metaData.get('imagePlaneModule', imageId2);
|
|
19
|
+
const isSameImagePlane = imagePlaneModule1 &&
|
|
20
|
+
imagePlaneModule2 &&
|
|
21
|
+
isEqual(imagePlaneModule1.imageOrientationPatient, imagePlaneModule2.imageOrientationPatient);
|
|
22
|
+
if (!isSameImagePlane) {
|
|
23
|
+
throw new Error('Viewport spatial registration only supported for same orientation (hence translation only) for now');
|
|
24
|
+
}
|
|
25
|
+
const imagePositionPatient1 = imagePlaneModule1.imagePositionPatient;
|
|
26
|
+
const imagePositionPatient2 = imagePlaneModule2.imagePositionPatient;
|
|
27
|
+
const translation = vec3.subtract(vec3.create(), imagePositionPatient1, imagePositionPatient2);
|
|
28
|
+
const mat = mat4.fromTranslation(mat4.create(), translation);
|
|
29
|
+
spatialRegistrationMetadataProvider.add([viewport1.id, viewport2.id], mat);
|
|
30
|
+
}
|
|
31
|
+
export default calculateViewportsSpatialRegistration;
|
|
32
|
+
//# sourceMappingURL=calculateViewportsSpatialRegistration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateViewportsSpatialRegistration.js","sourceRoot":"","sources":["../../../src/utilities/calculateViewportsSpatialRegistration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,mCAAmC,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAchC,SAAS,qCAAqC,CAC5C,SAAyB,EACzB,SAAyB;IAEzB,IACE,CAAC,CAAC,SAAS,YAAY,aAAa,CAAC;QACrC,CAAC,CAAC,SAAS,YAAY,aAAa,CAAC,EACrC;QACA,MAAM,IAAI,KAAK,CACb,sHAAsH,CACvH,CAAC;KACH;IAED,MAAM,sBAAsB,GAC1B,SAAS,CAAC,sBAAsB,EAAE,KAAK,SAAS,CAAC,sBAAsB,EAAE,CAAC;IAE5E,IAAI,sBAAsB,EAAE;QAC1B,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAE/C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAErE,MAAM,gBAAgB,GACpB,iBAAiB;QACjB,iBAAiB;QACjB,OAAO,CACL,iBAAiB,CAAC,uBAAuB,EACzC,iBAAiB,CAAC,uBAAuB,CAC1C,CAAC;IAEJ,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;KACH;IAED,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;IACrE,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;IAErE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAC/B,IAAI,CAAC,MAAM,EAAE,EACb,qBAAqB,EACrB,qBAAqB,CACtB,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC;IAE7D,mCAAmC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,eAAe,qCAAqC,CAAC"}
|
|
@@ -7,7 +7,9 @@ function getImageSliceDataForVolumeViewport(viewport) {
|
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
9
|
const { viewPlaneNormal, focalPoint } = camera;
|
|
10
|
-
const actorEntry = viewport
|
|
10
|
+
const actorEntry = viewport
|
|
11
|
+
.getActors()
|
|
12
|
+
.find((a) => a.referenceId === imageVolume.volumeId || a.uid === imageVolume.volumeId);
|
|
11
13
|
if (!actorEntry) {
|
|
12
14
|
console.warn('No actor found for with actorUID of', imageVolume.volumeId);
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getImageSliceDataForVolumeViewport.js","sourceRoot":"","sources":["../../../src/utilities/getImageSliceDataForVolumeViewport.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAQ1F,SAAS,kCAAkC,CACzC,QAAyB;IAEzB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IAEpC,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,GAC7C,oCAAoC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEzD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO;KACR;IAED,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"getImageSliceDataForVolumeViewport.js","sourceRoot":"","sources":["../../../src/utilities/getImageSliceDataForVolumeViewport.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAQ1F,SAAS,kCAAkC,CACzC,QAAyB;IAEzB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IAEpC,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,GAC7C,oCAAoC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEzD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO;KACR;IAED,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE/C,MAAM,UAAU,GAAG,QAAQ;SACxB,SAAS,EAAE;SACX,IAAI,CACH,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,QAAQ,CAC3E,CAAC;IAEJ,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC3E;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,KAAoB,CAAC;IACpD,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAE3E,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAGzC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAG9E,IAAI,UAAU,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;IAClE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAGpC,IAAI,UAAU,GAAG,cAAc,GAAG,CAAC,EAAE;QACnC,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC;KACjC;SAAM,IAAI,UAAU,GAAG,CAAC,EAAE;QACzB,UAAU,GAAG,CAAC,CAAC;KAChB;IAED,OAAO;QACL,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,eAAe,kCAAkC,CAAC"}
|
|
@@ -7,7 +7,10 @@ export default function getTargetVolumeAndSpacingInNormalDir(viewport, camera, t
|
|
|
7
7
|
return { spacingInNormalDirection: null, imageVolume: null };
|
|
8
8
|
}
|
|
9
9
|
const numVolumeActors = volumeActors.length;
|
|
10
|
-
const imageVolumes = volumeActors.map((va) =>
|
|
10
|
+
const imageVolumes = volumeActors.map((va) => {
|
|
11
|
+
const uid = va.referenceId ?? va.uid;
|
|
12
|
+
return cache.getVolume(uid);
|
|
13
|
+
});
|
|
11
14
|
if (targetVolumeId) {
|
|
12
15
|
const imageVolume = imageVolumes.find((iv) => iv.volumeId === targetVolumeId);
|
|
13
16
|
const spacingInNormalDirection = getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
|
|
@@ -19,9 +22,6 @@ export default function getTargetVolumeAndSpacingInNormalDir(viewport, camera, t
|
|
|
19
22
|
};
|
|
20
23
|
for (let i = 0; i < numVolumeActors; i++) {
|
|
21
24
|
const imageVolume = imageVolumes[i];
|
|
22
|
-
if (!imageVolume) {
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
25
|
const spacingInNormalDirection = getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
|
|
26
26
|
if (spacingInNormalDirection < smallest.spacingInNormalDirection) {
|
|
27
27
|
smallest.spacingInNormalDirection = spacingInNormalDirection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTargetVolumeAndSpacingInNormalDir.js","sourceRoot":"","sources":["../../../src/utilities/getTargetVolumeAndSpacingInNormalDir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAGnC,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AAiBxE,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,QAAyB,EACzB,MAAe,EACf,cAAuB;IAKvB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IAE1C,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACzC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;KAC9D;IACD,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"getTargetVolumeAndSpacingInNormalDir.js","sourceRoot":"","sources":["../../../src/utilities/getTargetVolumeAndSpacingInNormalDir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAGnC,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AAiBxE,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,QAAyB,EACzB,MAAe,EACf,cAAuB;IAKvB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IAE1C,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACzC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;KAC9D;IACD,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC;IAE5C,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAG3C,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC;QACrC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAGH,IAAI,cAAc,EAAE;QAClB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CACnC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,cAAc,CACvC,CAAC;QAEF,MAAM,wBAAwB,GAAG,2BAA2B,CAC1D,WAAW,EACX,eAAe,CAChB,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;KAClD;IAGD,MAAM,QAAQ,GAAG;QACf,wBAAwB,EAAE,QAAQ;QAClC,WAAW,EAAE,IAAI;KAClB,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAEpC,MAAM,wBAAwB,GAAG,2BAA2B,CAC1D,WAAW,EACX,eAAe,CAChB,CAAC;QAEF,IAAI,wBAAwB,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YAChE,QAAQ,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;YAC7D,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;SACpC;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export default function getViewportImageCornersInWorld(viewport) {
|
|
2
|
+
const { imageData, dimensions } = viewport.getImageData();
|
|
3
|
+
const { canvas } = viewport;
|
|
4
|
+
const topLeftCanvas = [0, 0];
|
|
5
|
+
const topRightCanvas = [canvas.width, 0];
|
|
6
|
+
const bottomRightCanvas = [canvas.width, canvas.height];
|
|
7
|
+
const bottomLeftCanvas = [0, canvas.height];
|
|
8
|
+
const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
|
|
9
|
+
const topRightWorld = viewport.canvasToWorld(topRightCanvas);
|
|
10
|
+
const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
|
|
11
|
+
const bottomLeftWorld = viewport.canvasToWorld(bottomLeftCanvas);
|
|
12
|
+
const topLeftImage = imageData.worldToIndex(topLeftWorld);
|
|
13
|
+
const topRightImage = imageData.worldToIndex(topRightWorld);
|
|
14
|
+
const bottomRightImage = imageData.worldToIndex(bottomRightWorld);
|
|
15
|
+
const bottomLeftImage = imageData.worldToIndex(bottomLeftWorld);
|
|
16
|
+
return _getStackViewportImageCorners({
|
|
17
|
+
dimensions,
|
|
18
|
+
imageData,
|
|
19
|
+
topLeftImage,
|
|
20
|
+
topRightImage,
|
|
21
|
+
bottomRightImage,
|
|
22
|
+
bottomLeftImage,
|
|
23
|
+
topLeftWorld,
|
|
24
|
+
topRightWorld,
|
|
25
|
+
bottomRightWorld,
|
|
26
|
+
bottomLeftWorld,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function _getStackViewportImageCorners({ dimensions, imageData, topLeftImage, topRightImage, bottomRightImage, bottomLeftImage, topLeftWorld, topRightWorld, bottomRightWorld, bottomLeftWorld, }) {
|
|
30
|
+
const topLeftImageWorld = _isInBounds(topLeftImage, dimensions)
|
|
31
|
+
? topLeftWorld
|
|
32
|
+
: imageData.indexToWorld([0, 0, 0]);
|
|
33
|
+
const topRightImageWorld = _isInBounds(topRightImage, dimensions)
|
|
34
|
+
? topRightWorld
|
|
35
|
+
: imageData.indexToWorld([dimensions[0] - 1, 0, 0]);
|
|
36
|
+
const bottomRightImageWorld = _isInBounds(bottomRightImage, dimensions)
|
|
37
|
+
? bottomRightWorld
|
|
38
|
+
: imageData.indexToWorld([
|
|
39
|
+
dimensions[0] - 1,
|
|
40
|
+
dimensions[1] - 1,
|
|
41
|
+
0,
|
|
42
|
+
]);
|
|
43
|
+
const bottomLeftImageWorld = _isInBounds(bottomLeftImage, dimensions)
|
|
44
|
+
? bottomLeftWorld
|
|
45
|
+
: imageData.indexToWorld([0, dimensions[1] - 1, 0]);
|
|
46
|
+
return [
|
|
47
|
+
topLeftImageWorld,
|
|
48
|
+
topRightImageWorld,
|
|
49
|
+
bottomLeftImageWorld,
|
|
50
|
+
bottomRightImageWorld,
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
function _isInBounds(imageCoord, dimensions) {
|
|
54
|
+
return (imageCoord[0] > 0 ||
|
|
55
|
+
imageCoord[0] < dimensions[0] - 1 ||
|
|
56
|
+
imageCoord[1] > 0 ||
|
|
57
|
+
imageCoord[1] < dimensions[1] - 1 ||
|
|
58
|
+
imageCoord[2] > 0 ||
|
|
59
|
+
imageCoord[2] < dimensions[2] - 1);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=getViewportImageCornersInWorld.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getViewportImageCornersInWorld.js","sourceRoot":"","sources":["../../../src/utilities/getViewportImageCornersInWorld.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,9 @@ import snapFocalPointToSlice from './snapFocalPointToSlice';
|
|
|
27
27
|
import getImageSliceDataForVolumeViewport from './getImageSliceDataForVolumeViewport';
|
|
28
28
|
import isImageActor from './isImageActor';
|
|
29
29
|
import getViewportsWithImageURI from './getViewportsWithImageURI';
|
|
30
|
+
import calculateViewportsSpatialRegistration from './calculateViewportsSpatialRegistration';
|
|
31
|
+
import spatialRegistrationMetadataProvider from './spatialRegistrationMetadataProvider';
|
|
32
|
+
import getViewportImageCornersInWorld from './getViewportImageCornersInWorld';
|
|
30
33
|
import * as planar from './planar';
|
|
31
34
|
import * as windowLevel from './windowLevel';
|
|
32
|
-
export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, getViewportsWithImageURI, };
|
|
35
|
+
export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, getViewportsWithImageURI, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, };
|
|
@@ -27,7 +27,10 @@ import snapFocalPointToSlice from './snapFocalPointToSlice';
|
|
|
27
27
|
import getImageSliceDataForVolumeViewport from './getImageSliceDataForVolumeViewport';
|
|
28
28
|
import isImageActor from './isImageActor';
|
|
29
29
|
import getViewportsWithImageURI from './getViewportsWithImageURI';
|
|
30
|
+
import calculateViewportsSpatialRegistration from './calculateViewportsSpatialRegistration';
|
|
31
|
+
import spatialRegistrationMetadataProvider from './spatialRegistrationMetadataProvider';
|
|
32
|
+
import getViewportImageCornersInWorld from './getViewportImageCornersInWorld';
|
|
30
33
|
import * as planar from './planar';
|
|
31
34
|
import * as windowLevel from './windowLevel';
|
|
32
|
-
export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, getViewportsWithImageURI, };
|
|
35
|
+
export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, getViewportsWithImageURI, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, };
|
|
33
36
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,sCAAsC,MAAM,0CAA0C,CAAC;AAC9F,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAC1F,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,uCAAuC,MAAM,2CAA2C,CAAC;AAChG,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,sCAAsC,MAAM,0CAA0C,CAAC;AAC9F,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAC1F,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,uCAAuC,MAAM,2CAA2C,CAAC;AAChG,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,qCAAqC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,mCAAmC,MAAM,uCAAuC,CAAC;AACxF,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAG9E,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,OAAO,IAAI,yBAAyB,EACpC,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,sCAAsC,EACtC,MAAM,EACN,MAAM,EACN,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,oCAAoC,EACpC,qBAAqB,EACrB,qBAAqB,EACrB,uCAAuC,EACvC,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,kCAAkC,EAClC,YAAY,EACZ,wBAAwB,EACxB,qCAAqC,EACrC,mCAAmC,EACnC,8BAA8B,GAC/B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { mat4 } from 'gl-matrix';
|
|
2
|
+
import { addProvider } from '../metaData';
|
|
3
|
+
const state = {};
|
|
4
|
+
const spatialRegistrationMetadataProvider = {
|
|
5
|
+
add: (query, payload) => {
|
|
6
|
+
const [viewportId1, viewportId2] = query;
|
|
7
|
+
const entryId = `${viewportId1}_${viewportId2}`;
|
|
8
|
+
if (!state[entryId]) {
|
|
9
|
+
state[entryId] = {};
|
|
10
|
+
}
|
|
11
|
+
state[entryId] = payload;
|
|
12
|
+
},
|
|
13
|
+
get: (type, query) => {
|
|
14
|
+
if (type !== 'spatialRegistrationModule') {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const [viewportId1, viewportId2] = query;
|
|
18
|
+
const entryId = `${viewportId1}_${viewportId2}`;
|
|
19
|
+
if (state[entryId]) {
|
|
20
|
+
return state[entryId];
|
|
21
|
+
}
|
|
22
|
+
const entryIdReverse = `${viewportId2}_${viewportId1}`;
|
|
23
|
+
if (state[entryIdReverse]) {
|
|
24
|
+
return mat4.invert(mat4.create(), state[entryIdReverse]);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
addProvider(spatialRegistrationMetadataProvider.get.bind(spatialRegistrationMetadataProvider));
|
|
29
|
+
export default spatialRegistrationMetadataProvider;
|
|
30
|
+
//# sourceMappingURL=spatialRegistrationMetadataProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatialRegistrationMetadataProvider.js","sourceRoot":"","sources":["../../../src/utilities/spatialRegistrationMetadataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,KAAK,GAAG,EAAE,CAAC;AAKjB,MAAM,mCAAmC,GAAG;IAE1C,GAAG,EAAE,CAAC,KAAe,EAAE,OAAa,EAAQ,EAAE;QAC5C,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;QAEhD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SACrB;QAED,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,GAAG,EAAE,CAAC,IAAY,EAAE,KAAe,EAAQ,EAAE;QAC3C,IAAI,IAAI,KAAK,2BAA2B,EAAE;YACxC,OAAO;SACR;QAED,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;QAGzC,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;QAEhD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YAClB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC;SACvB;QAED,MAAM,cAAc,GAAG,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;QAEvD,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;SAC1D;IACH,CAAC;CACF,CAAC;AAEF,WAAW,CACT,mCAAmC,CAAC,GAAG,CAAC,IAAI,CAC1C,mCAAmC,CACpC,CACF,CAAC;AAEF,eAAe,mCAAmC,CAAC"}
|
|
@@ -9,6 +9,7 @@ interface DerivedVolumeOptions {
|
|
|
9
9
|
volumeId: string;
|
|
10
10
|
targetBuffer?: {
|
|
11
11
|
type: 'Float32Array' | 'Uint8Array';
|
|
12
|
+
sharedArrayBuffer?: boolean;
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
interface LocalVolumeOptions {
|
|
@@ -21,7 +22,7 @@ interface LocalVolumeOptions {
|
|
|
21
22
|
}
|
|
22
23
|
export declare function loadVolume(volumeId: string, options?: VolumeLoaderOptions): Promise<Types.IImageVolume>;
|
|
23
24
|
export declare function createAndCacheVolume(volumeId: string, options: VolumeLoaderOptions): Promise<Record<string, any>>;
|
|
24
|
-
export declare function createAndCacheDerivedVolume(referencedVolumeId: string, options: DerivedVolumeOptions): ImageVolume
|
|
25
|
+
export declare function createAndCacheDerivedVolume(referencedVolumeId: string, options: DerivedVolumeOptions): Promise<ImageVolume>;
|
|
25
26
|
export declare function createLocalVolume(options: LocalVolumeOptions, volumeId: string, preventCache?: boolean): ImageVolume;
|
|
26
27
|
export declare function registerVolumeLoader(scheme: string, volumeLoader: Types.VolumeLoaderFn): void;
|
|
27
28
|
export declare function registerUnknownVolumeLoader(volumeLoader: Types.VolumeLoaderFn): Types.VolumeLoaderFn | undefined;
|
package/dist/esm/volumeLoader.js
CHANGED
|
@@ -82,7 +82,7 @@ export async function createAndCacheVolume(volumeId, options) {
|
|
|
82
82
|
});
|
|
83
83
|
return volumeLoadObject.promise;
|
|
84
84
|
}
|
|
85
|
-
export function createAndCacheDerivedVolume(referencedVolumeId, options) {
|
|
85
|
+
export async function createAndCacheDerivedVolume(referencedVolumeId, options) {
|
|
86
86
|
const referencedVolume = cache.getVolume(referencedVolumeId);
|
|
87
87
|
if (!referencedVolume) {
|
|
88
88
|
throw new Error(`Cannot created derived volume: Referenced volume with id ${referencedVolumeId} does not exist.`);
|
|
@@ -116,7 +116,14 @@ export function createAndCacheDerivedVolume(referencedVolumeId, options) {
|
|
|
116
116
|
if (!isCacheable) {
|
|
117
117
|
throw new Error(Events.CACHE_SIZE_EXCEEDED);
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
let volumeScalarData;
|
|
120
|
+
if (targetBuffer?.sharedArrayBuffer) {
|
|
121
|
+
const buffer = new SharedArrayBuffer(numBytes);
|
|
122
|
+
volumeScalarData = new TypedArray(buffer);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
volumeScalarData = new TypedArray(scalarLength);
|
|
126
|
+
}
|
|
120
127
|
const scalarArray = vtkDataArray.newInstance({
|
|
121
128
|
name: 'Pixels',
|
|
122
129
|
numberOfComponents: 1,
|
|
@@ -143,7 +150,7 @@ export function createAndCacheDerivedVolume(referencedVolumeId, options) {
|
|
|
143
150
|
const volumeLoadObject = {
|
|
144
151
|
promise: Promise.resolve(derivedVolume),
|
|
145
152
|
};
|
|
146
|
-
cache.putVolumeLoadObject(volumeId, volumeLoadObject);
|
|
153
|
+
await cache.putVolumeLoadObject(volumeId, volumeLoadObject);
|
|
147
154
|
return derivedVolume;
|
|
148
155
|
}
|
|
149
156
|
export function createLocalVolume(options, volumeId, preventCache = false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volumeLoader.js","sourceRoot":"","sources":["../../src/volumeLoader.ts"],"names":[],"mappings":"AAAA,OAAO,2CAA2C,CAAC;AAEnD,OAAO,YAAY,MAAM,4CAA4C,CAAC;AAEtE,OAAO,YAAY,MAAM,uCAAuC,CAAC;AACjE,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,KAAK,MAAM,eAAe,CAAC;AAClC,OAAO,MAAM,MAAM,gBAAgB,CAAC;AACpC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"volumeLoader.js","sourceRoot":"","sources":["../../src/volumeLoader.ts"],"names":[],"mappings":"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"}
|