@cornerstonejs/core 0.44.2 → 0.45.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 (70) hide show
  1. package/dist/cjs/RenderingEngine/RenderingEngine.js +6 -2
  2. package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
  3. package/dist/cjs/RenderingEngine/StackViewport.d.ts +2 -0
  4. package/dist/cjs/RenderingEngine/StackViewport.js +20 -7
  5. package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
  6. package/dist/cjs/RenderingEngine/renderingEngineCache.js +11 -0
  7. package/dist/cjs/RenderingEngine/renderingEngineCache.js.map +1 -1
  8. package/dist/cjs/types/RGB.d.ts +2 -0
  9. package/dist/cjs/types/RGB.js +3 -0
  10. package/dist/cjs/types/RGB.js.map +1 -0
  11. package/dist/cjs/types/ViewportInputOptions.d.ts +2 -1
  12. package/dist/cjs/types/index.d.ts +2 -1
  13. package/dist/cjs/utilities/index.d.ts +3 -2
  14. package/dist/cjs/utilities/index.js +5 -3
  15. package/dist/cjs/utilities/index.js.map +1 -1
  16. package/dist/cjs/utilities/invertRgbTransferFunction.js +3 -0
  17. package/dist/cjs/utilities/invertRgbTransferFunction.js.map +1 -1
  18. package/dist/cjs/utilities/loadImageToCanvas.d.ts +10 -1
  19. package/dist/cjs/utilities/loadImageToCanvas.js +9 -5
  20. package/dist/cjs/utilities/loadImageToCanvas.js.map +1 -1
  21. package/dist/cjs/utilities/renderToCanvasCPU.d.ts +2 -0
  22. package/dist/cjs/utilities/{renderToCanvas.js → renderToCanvasCPU.js} +7 -4
  23. package/dist/cjs/utilities/renderToCanvasCPU.js.map +1 -0
  24. package/dist/cjs/utilities/renderToCanvasGPU.d.ts +2 -0
  25. package/dist/cjs/utilities/renderToCanvasGPU.js +77 -0
  26. package/dist/cjs/utilities/renderToCanvasGPU.js.map +1 -0
  27. package/dist/esm/RenderingEngine/RenderingEngine.js +6 -2
  28. package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
  29. package/dist/esm/RenderingEngine/StackViewport.d.ts +2 -0
  30. package/dist/esm/RenderingEngine/StackViewport.js +18 -5
  31. package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
  32. package/dist/esm/RenderingEngine/renderingEngineCache.js +11 -0
  33. package/dist/esm/RenderingEngine/renderingEngineCache.js.map +1 -1
  34. package/dist/esm/types/RGB.d.ts +2 -0
  35. package/dist/esm/types/RGB.js +2 -0
  36. package/dist/esm/types/RGB.js.map +1 -0
  37. package/dist/esm/types/ViewportInputOptions.d.ts +2 -1
  38. package/dist/esm/types/index.d.ts +2 -1
  39. package/dist/esm/utilities/index.d.ts +3 -2
  40. package/dist/esm/utilities/index.js +3 -2
  41. package/dist/esm/utilities/index.js.map +1 -1
  42. package/dist/esm/utilities/invertRgbTransferFunction.js +3 -0
  43. package/dist/esm/utilities/invertRgbTransferFunction.js.map +1 -1
  44. package/dist/esm/utilities/loadImageToCanvas.d.ts +10 -1
  45. package/dist/esm/utilities/loadImageToCanvas.js +9 -5
  46. package/dist/esm/utilities/loadImageToCanvas.js.map +1 -1
  47. package/dist/esm/utilities/renderToCanvasCPU.d.ts +2 -0
  48. package/dist/esm/utilities/{renderToCanvas.js → renderToCanvasCPU.js} +6 -3
  49. package/dist/esm/utilities/renderToCanvasCPU.js.map +1 -0
  50. package/dist/esm/utilities/renderToCanvasGPU.d.ts +2 -0
  51. package/dist/esm/utilities/renderToCanvasGPU.js +71 -0
  52. package/dist/esm/utilities/renderToCanvasGPU.js.map +1 -0
  53. package/dist/umd/index.js +1 -1
  54. package/dist/umd/index.js.map +1 -1
  55. package/package.json +2 -2
  56. package/src/RenderingEngine/RenderingEngine.ts +10 -6
  57. package/src/RenderingEngine/StackViewport.ts +40 -6
  58. package/src/RenderingEngine/renderingEngineCache.ts +15 -0
  59. package/src/types/RGB.ts +6 -0
  60. package/src/types/ViewportInputOptions.ts +3 -1
  61. package/src/types/index.ts +3 -0
  62. package/src/utilities/index.ts +4 -2
  63. package/src/utilities/invertRgbTransferFunction.ts +5 -0
  64. package/src/utilities/loadImageToCanvas.ts +33 -11
  65. package/src/utilities/{renderToCanvas.ts → renderToCanvasCPU.ts} +8 -4
  66. package/src/utilities/renderToCanvasGPU.ts +130 -0
  67. package/dist/cjs/utilities/renderToCanvas.d.ts +0 -2
  68. package/dist/cjs/utilities/renderToCanvas.js.map +0 -1
  69. package/dist/esm/utilities/renderToCanvas.d.ts +0 -2
  70. package/dist/esm/utilities/renderToCanvas.js.map +0 -1
@@ -13,6 +13,17 @@ const renderingEngineCache = {
13
13
  getAll: () => {
14
14
  const renderingEngineIds = Object.keys(cache);
15
15
  const renderingEngines = renderingEngineIds.map((id) => cache[id]);
16
+ renderingEngines.sort((a, b) => {
17
+ if (a.id[0] === '_' && b.id[0] !== '_') {
18
+ return 1;
19
+ }
20
+ else if (a.id[0] !== '_' && b.id[0] === '_') {
21
+ return -1;
22
+ }
23
+ else {
24
+ return 0;
25
+ }
26
+ });
16
27
  return renderingEngines;
17
28
  },
18
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"renderingEngineCache.js","sourceRoot":"","sources":["../../../src/RenderingEngine/renderingEngineCache.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,MAAM,oBAAoB,GAAG;IAO3B,GAAG,EAAE,CAAC,EAAU,EAAoB,EAAE;QACpC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAMD,GAAG,EAAE,CAAC,EAAoB,EAAQ,EAAE;QAClC,MAAM,iBAAiB,GAAG,EAAE,CAAC,EAAE,CAAC;QAEhC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IAOD,MAAM,EAAE,CAAC,EAAU,EAAE,EAAE;QACrB,OAAO,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,EAAE,GAA4B,EAAE;QACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"renderingEngineCache.js","sourceRoot":"","sources":["../../../src/RenderingEngine/renderingEngineCache.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,MAAM,oBAAoB,GAAG;IAO3B,GAAG,EAAE,CAAC,EAAU,EAAoB,EAAE;QACpC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAMD,GAAG,EAAE,CAAC,EAAoB,EAAQ,EAAE;QAClC,MAAM,iBAAiB,GAAG,EAAE,CAAC,EAAE,CAAC;QAEhC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IAOD,MAAM,EAAE,CAAC,EAAU,EAAE,EAAE;QACrB,OAAO,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,EAAE,GAA4B,EAAE;QACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAOnE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7B,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACtC,OAAO,CAAC,CAAC;aACV;iBAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7C,OAAO,CAAC,CAAC,CAAC;aACX;iBAAM;gBACL,OAAO,CAAC,CAAC;aACV;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare type RGB = [number, number, number];
2
+ export default RGB;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RGB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RGB.js","sourceRoot":"","sources":["../../../src/types/RGB.ts"],"names":[],"mappings":""}
@@ -1,8 +1,9 @@
1
1
  import { OrientationAxis } from '../enums';
2
2
  import OrientationVectors from './OrientationVectors';
3
3
  import DisplayArea from './displayArea';
4
+ import RGB from './RGB';
4
5
  declare type ViewportInputOptions = {
5
- background?: [number, number, number];
6
+ background?: RGB;
6
7
  orientation?: OrientationAxis | OrientationVectors;
7
8
  displayArea?: DisplayArea;
8
9
  suppressEvents?: boolean;
@@ -59,4 +59,5 @@ import type { PublicContourSetData, ContourSetData, ContourData } from './Contou
59
59
  import type ICachedGeometry from './ICachedGeometry';
60
60
  import type { IContourSet } from './IContourSet';
61
61
  import type { IContour } from './IContour';
62
- export type { Cornerstone3DConfig, ICamera, IStackViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, VolumeScalarData, IViewportId, IImageVolume, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, Scaling, IStreamingImageVolume, IImage, IImageData, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, StackViewportProperties, VolumeViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, ViewportPreset, Metadata, OrientationVectors, Point2, Point3, Point4, Mat3, Plane, ViewportInputOptions, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, };
62
+ import type RGB from './RGB';
63
+ export type { Cornerstone3DConfig, ICamera, IStackViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, VolumeScalarData, IViewportId, IImageVolume, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, Scaling, IStreamingImageVolume, IImage, IImageData, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, StackViewportProperties, VolumeViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, ViewportPreset, Metadata, OrientationVectors, Point2, Point3, Point4, Mat3, Plane, ViewportInputOptions, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, RGB, };
@@ -24,7 +24,8 @@ import getVolumeViewportsContainingSameVolumes from './getVolumeViewportsContain
24
24
  import getViewportsWithVolumeId from './getViewportsWithVolumeId';
25
25
  import transformWorldToIndex from './transformWorldToIndex';
26
26
  import loadImageToCanvas from './loadImageToCanvas';
27
- import renderToCanvas from './renderToCanvas';
27
+ import renderToCanvasCPU from './renderToCanvasCPU';
28
+ import renderToCanvasGPU from './renderToCanvasGPU';
28
29
  import worldToImageCoords from './worldToImageCoords';
29
30
  import imageToWorldCoords from './imageToWorldCoords';
30
31
  import getVolumeSliceRangeInfo from './getVolumeSliceRangeInfo';
@@ -45,4 +46,4 @@ import getScalingParameters from './getScalingParameters';
45
46
  import getScalarDataType from './getScalarDataType';
46
47
  import * as planar from './planar';
47
48
  import * as windowLevel from './windowLevel';
48
- export { csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, createUint16SharedArray, createInt16SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, getScalingParameters, getScalarDataType, };
49
+ export { csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, createUint16SharedArray, createInt16SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, getScalingParameters, getScalarDataType, };
@@ -24,7 +24,8 @@ import getVolumeViewportsContainingSameVolumes from './getVolumeViewportsContain
24
24
  import getViewportsWithVolumeId from './getViewportsWithVolumeId';
25
25
  import transformWorldToIndex from './transformWorldToIndex';
26
26
  import loadImageToCanvas from './loadImageToCanvas';
27
- import renderToCanvas from './renderToCanvas';
27
+ import renderToCanvasCPU from './renderToCanvasCPU';
28
+ import renderToCanvasGPU from './renderToCanvasGPU';
28
29
  import worldToImageCoords from './worldToImageCoords';
29
30
  import imageToWorldCoords from './imageToWorldCoords';
30
31
  import getVolumeSliceRangeInfo from './getVolumeSliceRangeInfo';
@@ -45,5 +46,5 @@ import getScalingParameters from './getScalingParameters';
45
46
  import getScalarDataType from './getScalarDataType';
46
47
  import * as planar from './planar';
47
48
  import * as windowLevel from './windowLevel';
48
- export { csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, createUint16SharedArray, createInt16SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, getScalingParameters, getScalarDataType, };
49
+ export { csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, createUint16SharedArray, createInt16SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, getScalingParameters, getScalarDataType, };
49
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  export default function invertRgbTransferFunction(rgbTransferFunction) {
2
+ if (!rgbTransferFunction) {
3
+ return;
4
+ }
2
5
  const size = rgbTransferFunction.getSize();
3
6
  for (let index = 0; index < size; index++) {
4
7
  const nodeValue1 = [];
@@ -1 +1 @@
1
- {"version":3,"file":"invertRgbTransferFunction.js","sourceRoot":"","sources":["../../../src/utilities/invertRgbTransferFunction.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,mBAAwB;IAExB,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC;IAE3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAEpD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAElC,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACrD;AACH,CAAC"}
1
+ {"version":3,"file":"invertRgbTransferFunction.js","sourceRoot":"","sources":["../../../src/utilities/invertRgbTransferFunction.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,mBAAwB;IAGxB,IAAI,CAAC,mBAAmB,EAAE;QACxB,OAAO;KACR;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC;IAE3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAEpD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAElC,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACrD;AACH,CAAC"}
@@ -1,2 +1,11 @@
1
1
  import { RequestType } from '../enums';
2
- export default function loadImageToCanvas(canvas: HTMLCanvasElement, imageId: string, requestType?: RequestType, priority?: number): Promise<string>;
2
+ interface LoadImageOptions {
3
+ canvas: HTMLCanvasElement;
4
+ imageId: string;
5
+ requestType?: RequestType;
6
+ priority?: number;
7
+ renderingEngineId?: string;
8
+ useCPURendering?: boolean;
9
+ }
10
+ export default function loadImageToCanvas(options: LoadImageOptions): Promise<string>;
11
+ export {};
@@ -2,15 +2,19 @@ import { loadAndCacheImage } from '../loaders/imageLoader';
2
2
  import * as metaData from '../metaData';
3
3
  import { RequestType } from '../enums';
4
4
  import imageLoadPoolManager from '../requestPool/imageLoadPoolManager';
5
- import renderToCanvas from './renderToCanvas';
5
+ import renderToCanvasGPU from './renderToCanvasGPU';
6
+ import renderToCanvasCPU from './renderToCanvasCPU';
6
7
  import { getConfiguration } from '../init';
7
- export default function loadImageToCanvas(canvas, imageId, requestType = RequestType.Thumbnail, priority = -5) {
8
+ export default function loadImageToCanvas(options) {
9
+ const { canvas, imageId, requestType = RequestType.Thumbnail, priority = -5, renderingEngineId = '_thumbnails', useCPURendering = false, } = options;
10
+ const renderFn = useCPURendering ? renderToCanvasCPU : renderToCanvasGPU;
8
11
  return new Promise((resolve, reject) => {
9
12
  function successCallback(image, imageId) {
10
13
  const { modality } = metaData.get('generalSeriesModule', imageId) || {};
11
14
  image.isPreScaled = image.isPreScaled || image.preScale?.scaled;
12
- renderToCanvas(canvas, image, modality);
13
- resolve(imageId);
15
+ renderFn(canvas, image, modality, renderingEngineId).then(() => {
16
+ resolve(imageId);
17
+ });
14
18
  }
15
19
  function errorCallback(error, imageId) {
16
20
  console.error(error, imageId);
@@ -28,10 +32,10 @@ export default function loadImageToCanvas(canvas, imageId, requestType = Request
28
32
  targetBuffer: {
29
33
  type: useNorm16Texture ? undefined : 'Float32Array',
30
34
  },
31
- useRGBA: true,
32
35
  preScale: {
33
36
  enabled: true,
34
37
  },
38
+ useRGBA: !!useCPURendering,
35
39
  requestType,
36
40
  };
37
41
  imageLoadPoolManager.addRequest(sendRequest.bind(null, imageId, null, options), requestType, { imageId }, priority);
@@ -1 +1 @@
1
- {"version":3,"file":"loadImageToCanvas.js","sourceRoot":"","sources":["../../../src/utilities/loadImageToCanvas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;AACvE,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAoB3C,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,MAAyB,EACzB,OAAe,EACf,WAAW,GAAG,WAAW,CAAC,SAAS,EACnC,QAAQ,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,eAAe,CAAC,KAAa,EAAE,OAAe;YACrD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAExE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;YAChE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QAED,SAAS,aAAa,CAAC,KAAY,EAAE,OAAe;YAClD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO;YACjD,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAC7C,CAAC,KAAK,EAAE,EAAE;gBACR,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC,CACF,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC,SAAS,CAAC;QAI1D,MAAM,OAAO,GAAG;YACd,YAAY,EAAE;gBACZ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;aACpD;YACD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;aACd;YACD,WAAW;SACZ,CAAC;QAEF,oBAAoB,CAAC,UAAU,CAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAC9C,WAAW,EACX,EAAE,OAAO,EAAE,EACX,QAAQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"loadImageToCanvas.js","sourceRoot":"","sources":["../../../src/utilities/loadImageToCanvas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;AACvE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA+B3C,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,OAAyB;IAEzB,MAAM,EACJ,MAAM,EACN,OAAO,EACP,WAAW,GAAG,WAAW,CAAC,SAAS,EACnC,QAAQ,GAAG,CAAC,CAAC,EACb,iBAAiB,GAAG,aAAa,EACjC,eAAe,GAAG,KAAK,GACxB,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,eAAe,CAAC,KAAa,EAAE,OAAe;YACrD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAExE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;YAEhE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7D,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,SAAS,aAAa,CAAC,KAAY,EAAE,OAAe;YAClD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO;YACjD,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAC7C,CAAC,KAAK,EAAE,EAAE;gBACR,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC,CACF,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC,SAAS,CAAC;QAI1D,MAAM,OAAO,GAAG;YACd,YAAY,EAAE;gBACZ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;aACpD;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;aACd;YACD,OAAO,EAAE,CAAC,CAAC,eAAe;YAC1B,WAAW;SACZ,CAAC;QAEF,oBAAoB,CAAC,UAAU,CAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAC9C,WAAW,EACX,EAAE,OAAO,EAAE,EACX,QAAQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { IImage } from '../types';
2
+ export default function renderToCanvasCPU(canvas: HTMLCanvasElement, image: IImage, modality?: string, renderingEngineId?: string): Promise<string>;
@@ -1,7 +1,7 @@
1
1
  import getDefaultViewport from '../RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport';
2
2
  import calculateTransform from '../RenderingEngine/helpers/cpuFallback/rendering/calculateTransform';
3
3
  import drawImageSync from '../RenderingEngine/helpers/cpuFallback/drawImageSync';
4
- export default function renderToCanvas(canvas, image, modality) {
4
+ export default function renderToCanvasCPU(canvas, image, modality, renderingEngineId) {
5
5
  const viewport = getDefaultViewport(canvas, image, modality);
6
6
  const enabledElement = {
7
7
  canvas,
@@ -11,6 +11,9 @@ export default function renderToCanvas(canvas, image, modality) {
11
11
  };
12
12
  enabledElement.transform = calculateTransform(enabledElement);
13
13
  const invalidated = true;
14
- drawImageSync(enabledElement, invalidated);
14
+ return new Promise((resolve, reject) => {
15
+ drawImageSync(enabledElement, invalidated);
16
+ resolve(image.imageId);
17
+ });
15
18
  }
16
- //# sourceMappingURL=renderToCanvas.js.map
19
+ //# sourceMappingURL=renderToCanvasCPU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderToCanvasCPU.js","sourceRoot":"","sources":["../../../src/utilities/renderToCanvasCPU.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,MAAM,qEAAqE,CAAC;AACrG,OAAO,kBAAkB,MAAM,qEAAqE,CAAC;AACrG,OAAO,aAAa,MAAM,sDAAsD,CAAC;AASjF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,MAAyB,EACzB,KAAa,EACb,QAAiB,EACjB,iBAA0B;IAE1B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE7D,MAAM,cAAc,GAA8B;QAChD,MAAM;QACN,QAAQ;QACR,KAAK;QACL,cAAc,EAAE,EAAE;KACnB,CAAC;IAEF,cAAc,CAAC,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,IAAI,CAAC;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { IImage } from '../types';
2
+ export default function renderToCanvasGPU(canvas: HTMLCanvasElement, image: IImage, modality?: any, renderingEngineId?: string): Promise<string>;
@@ -0,0 +1,71 @@
1
+ import getOrCreateCanvas from '../RenderingEngine/helpers/getOrCreateCanvas';
2
+ import { ViewportType, Events } from '../enums';
3
+ import { getRenderingEngine } from '../RenderingEngine/getRenderingEngine';
4
+ import RenderingEngine from '../RenderingEngine';
5
+ export default function renderToCanvasGPU(canvas, image, modality = undefined, renderingEngineId = '_thumbnails') {
6
+ if (!canvas || !(canvas instanceof HTMLCanvasElement)) {
7
+ throw new Error('canvas element is required');
8
+ }
9
+ const imageIdToPrint = image.imageId;
10
+ const viewportId = `renderGPUViewport-${imageIdToPrint}`;
11
+ const imageId = image.imageId;
12
+ const element = document.createElement('div');
13
+ element.style.width = `${canvas.width}px`;
14
+ element.style.height = `${canvas.height}px`;
15
+ element.style.visibility = 'hidden';
16
+ element.style.position = 'absolute';
17
+ document.body.appendChild(element);
18
+ const uniqueId = viewportId.split(':').join('-');
19
+ element.setAttribute('viewport-id-for-remove', uniqueId);
20
+ const renderingEngine = getRenderingEngine(renderingEngineId) ||
21
+ new RenderingEngine(renderingEngineId);
22
+ let viewport = renderingEngine.getViewport(viewportId);
23
+ if (!viewport) {
24
+ const stackViewportInput = {
25
+ viewportId,
26
+ type: ViewportType.STACK,
27
+ element,
28
+ defaultOptions: {
29
+ suppressEvents: true,
30
+ },
31
+ };
32
+ renderingEngine.enableElement(stackViewportInput);
33
+ viewport = renderingEngine.getViewport(viewportId);
34
+ }
35
+ return new Promise((resolve) => {
36
+ let elementRendered = false;
37
+ const onImageRendered = (eventDetail) => {
38
+ if (elementRendered) {
39
+ return;
40
+ }
41
+ const temporaryCanvas = getOrCreateCanvas(element);
42
+ const context = canvas.getContext('2d');
43
+ context.drawImage(temporaryCanvas, 0, 0);
44
+ elementRendered = true;
45
+ element.removeEventListener(Events.IMAGE_RENDERED, onImageRendered);
46
+ setTimeout(() => {
47
+ renderingEngine.disableElement(viewportId);
48
+ const elements = document.querySelectorAll(`[viewport-id-for-remove="${uniqueId}"]`);
49
+ elements.forEach((element) => {
50
+ element.remove();
51
+ });
52
+ }, 0);
53
+ resolve(imageId);
54
+ };
55
+ element.addEventListener(Events.IMAGE_RENDERED, onImageRendered);
56
+ viewport.renderImageObject(image);
57
+ if (modality === 'PT' && !_isPTImagePreScaledWithSUV(image)) {
58
+ viewport.setProperties({
59
+ voiRange: {
60
+ lower: image.minPixelValue,
61
+ upper: image.maxPixelValue,
62
+ },
63
+ });
64
+ }
65
+ viewport.render();
66
+ });
67
+ }
68
+ const _isPTImagePreScaledWithSUV = (image) => {
69
+ return image.preScale.scaled && image.preScale.scalingParameters.suvbw;
70
+ };
71
+ //# sourceMappingURL=renderToCanvasGPU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderToCanvasGPU.js","sourceRoot":"","sources":["../../../src/utilities/renderToCanvasGPU.ts"],"names":[],"mappings":"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"}