@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.
Files changed (85) hide show
  1. package/dist/cjs/RenderingEngine/VolumeViewport.js +15 -27
  2. package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
  3. package/dist/cjs/RenderingEngine/helpers/addVolumesToViewports.js +4 -3
  4. package/dist/cjs/RenderingEngine/helpers/addVolumesToViewports.js.map +1 -1
  5. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.d.ts +3 -3
  6. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
  7. package/dist/cjs/RenderingEngine/index.d.ts +2 -1
  8. package/dist/cjs/RenderingEngine/index.js +3 -1
  9. package/dist/cjs/RenderingEngine/index.js.map +1 -1
  10. package/dist/cjs/constants/index.d.ts +2 -1
  11. package/dist/cjs/constants/index.js +3 -1
  12. package/dist/cjs/constants/index.js.map +1 -1
  13. package/dist/cjs/constants/mprCameraValues.d.ts +2 -0
  14. package/dist/cjs/constants/mprCameraValues.js +23 -0
  15. package/dist/cjs/constants/mprCameraValues.js.map +1 -0
  16. package/dist/cjs/enums/Events.d.ts +2 -0
  17. package/dist/cjs/enums/Events.js +2 -0
  18. package/dist/cjs/enums/Events.js.map +1 -1
  19. package/dist/cjs/metaData.d.ts +3 -5
  20. package/dist/cjs/metaData.js +2 -2
  21. package/dist/cjs/metaData.js.map +1 -1
  22. package/dist/cjs/types/IActor.d.ts +1 -0
  23. package/dist/cjs/utilities/calculateViewportsSpatialRegistration.d.ts +3 -0
  24. package/dist/cjs/utilities/calculateViewportsSpatialRegistration.js +37 -0
  25. package/dist/cjs/utilities/calculateViewportsSpatialRegistration.js.map +1 -0
  26. package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js +3 -1
  27. package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js.map +1 -1
  28. package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js +5 -4
  29. package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js.map +1 -1
  30. package/dist/cjs/utilities/getViewportImageCornersInWorld.d.ts +2 -0
  31. package/dist/cjs/utilities/getViewportImageCornersInWorld.js +64 -0
  32. package/dist/cjs/utilities/getViewportImageCornersInWorld.js.map +1 -0
  33. package/dist/cjs/utilities/index.d.ts +4 -1
  34. package/dist/cjs/utilities/index.js +7 -1
  35. package/dist/cjs/utilities/index.js.map +1 -1
  36. package/dist/cjs/utilities/spatialRegistrationMetadataProvider.d.ts +6 -0
  37. package/dist/cjs/utilities/spatialRegistrationMetadataProvider.js +32 -0
  38. package/dist/cjs/utilities/spatialRegistrationMetadataProvider.js.map +1 -0
  39. package/dist/cjs/volumeLoader.d.ts +2 -1
  40. package/dist/cjs/volumeLoader.js +64 -55
  41. package/dist/cjs/volumeLoader.js.map +1 -1
  42. package/dist/esm/RenderingEngine/VolumeViewport.js +16 -29
  43. package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
  44. package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.js +4 -3
  45. package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.js.map +1 -1
  46. package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +3 -3
  47. package/dist/esm/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
  48. package/dist/esm/RenderingEngine/index.d.ts +2 -1
  49. package/dist/esm/RenderingEngine/index.js +2 -1
  50. package/dist/esm/RenderingEngine/index.js.map +1 -1
  51. package/dist/esm/constants/index.d.ts +2 -1
  52. package/dist/esm/constants/index.js +2 -1
  53. package/dist/esm/constants/index.js.map +1 -1
  54. package/dist/esm/constants/mprCameraValues.d.ts +2 -0
  55. package/dist/esm/constants/mprCameraValues.js +18 -0
  56. package/dist/esm/constants/mprCameraValues.js.map +1 -0
  57. package/dist/esm/enums/Events.d.ts +2 -0
  58. package/dist/esm/enums/Events.js +2 -0
  59. package/dist/esm/enums/Events.js.map +1 -1
  60. package/dist/esm/metaData.d.ts +3 -5
  61. package/dist/esm/metaData.js +2 -2
  62. package/dist/esm/metaData.js.map +1 -1
  63. package/dist/esm/types/IActor.d.ts +1 -0
  64. package/dist/esm/utilities/calculateViewportsSpatialRegistration.d.ts +3 -0
  65. package/dist/esm/utilities/calculateViewportsSpatialRegistration.js +32 -0
  66. package/dist/esm/utilities/calculateViewportsSpatialRegistration.js.map +1 -0
  67. package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js +3 -1
  68. package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js.map +1 -1
  69. package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js +4 -4
  70. package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js.map +1 -1
  71. package/dist/esm/utilities/getViewportImageCornersInWorld.d.ts +2 -0
  72. package/dist/esm/utilities/getViewportImageCornersInWorld.js +61 -0
  73. package/dist/esm/utilities/getViewportImageCornersInWorld.js.map +1 -0
  74. package/dist/esm/utilities/index.d.ts +4 -1
  75. package/dist/esm/utilities/index.js +4 -1
  76. package/dist/esm/utilities/index.js.map +1 -1
  77. package/dist/esm/utilities/spatialRegistrationMetadataProvider.d.ts +6 -0
  78. package/dist/esm/utilities/spatialRegistrationMetadataProvider.js +30 -0
  79. package/dist/esm/utilities/spatialRegistrationMetadataProvider.js.map +1 -0
  80. package/dist/esm/volumeLoader.d.ts +2 -1
  81. package/dist/esm/volumeLoader.js +10 -3
  82. package/dist/esm/volumeLoader.js.map +1 -1
  83. package/dist/umd/index.js +1 -1
  84. package/dist/umd/index.js.map +1 -1
  85. 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",
@@ -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,MA6KJ;AA7KD,WAAK,MAAM;IAST,qDAA2C,CAAA;IAK3C,+CAAqC,CAAA;IAQrC,yDAA+C,CAAA;IAO/C,mDAAyC,CAAA;IAOzC,2DAAiD,CAAA;IAOjD,yDAA+C,CAAA;IAO/C,uDAA6C,CAAA;IAS7C,qEAA2D,CAAA;IAO3D,mDAAyC,CAAA;IAOzC,6DAAmD,CAAA;IAOnD,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,EA7KI,MAAM,KAAN,MAAM,QA6KV;AAED,eAAe,MAAM,CAAC"}
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"}
@@ -1,9 +1,7 @@
1
- export declare function addProvider(provider: (type: string, imageId: string) => {
2
- any: any;
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, imageId: string): any;
6
+ declare function getMetaData(type: string, query: string): any;
9
7
  export { getMetaData as get };
@@ -24,9 +24,9 @@ export function removeAllProviders() {
24
24
  providers.pop();
25
25
  }
26
26
  }
27
- function getMetaData(type, imageId) {
27
+ function getMetaData(type, query) {
28
28
  for (let i = 0; i < providers.length; i++) {
29
- const result = providers[i].provider(type, imageId);
29
+ const result = providers[i].provider(type, query);
30
30
  if (result !== undefined) {
31
31
  return result;
32
32
  }
@@ -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,QAAoD,EACpD,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,QAAoD;IAEpD,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,OAAe;IAEhD,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,OAAO,CAAC,CAAC;QAEpD,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,MAAM,CAAC;SACf;KACF;AACH,CAAC;AAED,OAAO,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC"}
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"}
@@ -7,5 +7,6 @@ export declare type ImageActor = vtkImageSlice;
7
7
  export declare type ActorEntry = {
8
8
  uid: string;
9
9
  actor: Actor | VolumeActor | ImageActor;
10
+ referenceId?: string;
10
11
  slabThickness?: number;
11
12
  };
@@ -0,0 +1,3 @@
1
+ import { IStackViewport } from '../types';
2
+ declare function calculateViewportsSpatialRegistration(viewport1: IStackViewport, viewport2: IStackViewport): void;
3
+ export default calculateViewportsSpatialRegistration;
@@ -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.getActor(imageVolume.volumeId);
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;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE3D,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"}
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) => cache.getVolume(va.uid));
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;IAC5C,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAGvE,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;QAGpC,IAAI,CAAC,WAAW,EAAE;YAChB,SAAS;SACV;QAED,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"}
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,2 @@
1
+ import { IStackViewport, IVolumeViewport, Point3 } from '../types';
2
+ export default function getViewportImageCornersInWorld(viewport: IStackViewport | IVolumeViewport): Point3[];
@@ -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;AAGlE,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,GACzB,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,6 @@
1
+ import { mat4 } from 'gl-matrix';
2
+ declare const spatialRegistrationMetadataProvider: {
3
+ add: (query: string[], payload: mat4) => void;
4
+ get: (type: string, query: string[]) => mat4;
5
+ };
6
+ export default spatialRegistrationMetadataProvider;
@@ -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;
@@ -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
- const volumeScalarData = new TypedArray(scalarLength);
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":"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"}
1
+ {"version":3,"file":"volumeLoader.js","sourceRoot":"","sources":["../../src/volumeLoader.ts"],"names":[],"mappings":"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"}