@cornerstonejs/core 0.19.1 → 0.20.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/index.d.ts +3 -1
- package/dist/cjs/utilities/index.js +5 -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/index.d.ts +3 -1
- package/dist/esm/utilities/index.js +3 -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 +5 -4
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"}
|
|
@@ -27,6 +27,8 @@ 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';
|
|
30
32
|
import * as planar from './planar';
|
|
31
33
|
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, };
|
|
34
|
+
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, };
|
|
@@ -27,7 +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';
|
|
30
32
|
import * as planar from './planar';
|
|
31
33
|
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, };
|
|
34
|
+
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, };
|
|
33
35
|
//# 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;AAGxF,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,GACpC,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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"}
|