@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/core",
3
- "version": "0.44.2",
3
+ "version": "0.45.0",
4
4
  "description": "",
5
5
  "main": "dist/umd/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -43,5 +43,5 @@
43
43
  "type": "individual",
44
44
  "url": "https://ohif.org/donate"
45
45
  },
46
- "gitHead": "45b5360196e59bfc62c1a73122dfa31a4b61b9ff"
46
+ "gitHead": "94f27769ff36b2d414e730c9eb8ce462a8957816"
47
47
  }
@@ -327,13 +327,17 @@ class RenderingEngine implements IRenderingEngine {
327
327
  }
328
328
  });
329
329
 
330
- this._resizeVTKViewports(vtkDrivenViewports, keepCamera, immediate);
330
+ if (vtkDrivenViewports.length) {
331
+ this._resizeVTKViewports(vtkDrivenViewports, keepCamera, immediate);
332
+ }
331
333
 
332
- this._resizeUsingCustomResizeHandler(
333
- customRenderingViewports,
334
- keepCamera,
335
- immediate
336
- );
334
+ if (customRenderingViewports.length) {
335
+ this._resizeUsingCustomResizeHandler(
336
+ customRenderingViewports,
337
+ keepCamera,
338
+ immediate
339
+ );
340
+ }
337
341
  }
338
342
 
339
343
  /**
@@ -1665,7 +1665,14 @@ class StackViewport extends Viewport implements IStackViewport {
1665
1665
  // handle the case where the pixelData is a Float32Array
1666
1666
  // CPU path cannot handle it, it should be converted to Uint16Array
1667
1667
  // and via the Modality LUT we can display it properly
1668
- if (pixelData instanceof Float32Array) {
1668
+ const preScale = image.preScale;
1669
+ const scalingParams = preScale?.scalingParameters;
1670
+
1671
+ const scaledWithNonIntegers =
1672
+ (preScale?.scaled && scalingParams?.rescaleIntercept % 1 !== 0) ||
1673
+ scalingParams?.rescaleSlope % 1 !== 0;
1674
+
1675
+ if (pixelData instanceof Float32Array && scaledWithNonIntegers) {
1669
1676
  const floatMinMax = {
1670
1677
  min: image.maxPixelValue,
1671
1678
  max: image.minPixelValue,
@@ -1704,8 +1711,7 @@ class StackViewport extends Viewport implements IStackViewport {
1704
1711
  };
1705
1712
  }
1706
1713
 
1707
- image.isPreScaled = image.preScale?.scaled;
1708
- this.csImage = image;
1714
+ this._setCSImage(image);
1709
1715
 
1710
1716
  const eventDetail: EventTypes.StackNewImageEventDetail = {
1711
1717
  image,
@@ -1842,9 +1848,7 @@ class StackViewport extends Viewport implements IStackViewport {
1842
1848
  return;
1843
1849
  }
1844
1850
 
1845
- // cornerstone image
1846
- image.isPreScaled = image.preScale?.scaled;
1847
- this.csImage = image;
1851
+ this._setCSImage(image);
1848
1852
 
1849
1853
  const eventDetail: EventTypes.StackNewImageEventDetail = {
1850
1854
  image,
@@ -1926,6 +1930,32 @@ class StackViewport extends Viewport implements IStackViewport {
1926
1930
  });
1927
1931
  }
1928
1932
 
1933
+ /**
1934
+ * Renders the given Cornerstone image object in the viewport.
1935
+ * This method is intended to be used by utilities to render
1936
+ * an individual image, rather than by applications that want to display
1937
+ * a complete image stack. If you want to load and display a complete
1938
+ * image stack, use the setStack method instead of this one.
1939
+ *
1940
+ * The rendered image will appear in the viewport's element.
1941
+ * Use this method if you have other means of loading and the
1942
+ * cornerstone image object is already available.
1943
+ *
1944
+ * If you don't understand the difference between this method and
1945
+ * setStack, you probably want to use setStack.
1946
+ *
1947
+ * @param image - The Cornerstone image object to render.
1948
+ */
1949
+ public renderImageObject = (image) => {
1950
+ this._setCSImage(image);
1951
+ this._updateActorToDisplayImageId(image);
1952
+ };
1953
+
1954
+ private _setCSImage = (image) => {
1955
+ image.isPreScaled = image.preScale?.scaled;
1956
+ this.csImage = image;
1957
+ };
1958
+
1929
1959
  /**
1930
1960
  * It updates the volume actor with the retrieved cornerstone image.
1931
1961
  * It first checks if the new image has the same dimensions, spacings, and
@@ -2096,6 +2126,10 @@ class StackViewport extends Viewport implements IStackViewport {
2096
2126
  return false;
2097
2127
  }
2098
2128
 
2129
+ if (!this.csImage.preScale?.scalingParameters?.suvbw) {
2130
+ return false;
2131
+ }
2132
+
2099
2133
  return true;
2100
2134
  }
2101
2135
 
@@ -36,6 +36,21 @@ const renderingEngineCache = {
36
36
  const renderingEngineIds = Object.keys(cache);
37
37
  const renderingEngines = renderingEngineIds.map((id) => cache[id]);
38
38
 
39
+ // sort the rendering engines so that the ones that start with _
40
+ // are at the end of the array. The reason is for not breaking
41
+ // the code that used getRenderingEngines(), but since we moved
42
+ // the renderToCanvas utility to use GPU hence it needs a
43
+ // rendering engine and we don't want to use the default one.
44
+ renderingEngines.sort((a, b) => {
45
+ if (a.id[0] === '_' && b.id[0] !== '_') {
46
+ return 1;
47
+ } else if (a.id[0] !== '_' && b.id[0] === '_') {
48
+ return -1;
49
+ } else {
50
+ return 0;
51
+ }
52
+ });
53
+
39
54
  return renderingEngines;
40
55
  },
41
56
  };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * RGB color type.
3
+ */
4
+ type RGB = [number, number, number];
5
+
6
+ export default RGB;
@@ -1,12 +1,14 @@
1
1
  import { OrientationAxis } from '../enums';
2
2
  import OrientationVectors from './OrientationVectors';
3
3
  import DisplayArea from './displayArea';
4
+ import RGB from './RGB';
5
+
4
6
  /**
5
7
  * This type defines the shape of viewport input options, so we can throw when it is incorrect.
6
8
  */
7
9
  type ViewportInputOptions = {
8
10
  /** background color */
9
- background?: [number, number, number];
11
+ background?: RGB;
10
12
  /** orientation of the viewport which can be either an Enum for axis Enums.OrientationAxis.[AXIAL|SAGITTAL|CORONAL|DEFAULT] or an object with viewPlaneNormal and viewUp */
11
13
  orientation?: OrientationAxis | OrientationVectors;
12
14
  /** displayArea of interest */
@@ -74,6 +74,7 @@ import type {
74
74
  import type ICachedGeometry from './ICachedGeometry';
75
75
  import type { IContourSet } from './IContourSet';
76
76
  import type { IContour } from './IContour';
77
+ import type RGB from './RGB';
77
78
 
78
79
  export type {
79
80
  // config
@@ -156,4 +157,6 @@ export type {
156
157
  ContourData,
157
158
  IContourSet,
158
159
  IContour,
160
+ // Color
161
+ RGB,
159
162
  };
@@ -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';
@@ -77,7 +78,8 @@ export {
77
78
  getViewportsWithVolumeId,
78
79
  transformWorldToIndex,
79
80
  loadImageToCanvas,
80
- renderToCanvas,
81
+ renderToCanvasCPU,
82
+ renderToCanvasGPU,
81
83
  worldToImageCoords,
82
84
  imageToWorldCoords,
83
85
  getVolumeSliceRangeInfo,
@@ -20,6 +20,11 @@
20
20
  export default function invertRgbTransferFunction(
21
21
  rgbTransferFunction: any
22
22
  ): void {
23
+ // cut in case there is no function at all
24
+ if (!rgbTransferFunction) {
25
+ return;
26
+ }
27
+
23
28
  const size = rgbTransferFunction.getSize();
24
29
 
25
30
  for (let index = 0; index < size; index++) {
@@ -4,12 +4,23 @@ import { loadAndCacheImage } from '../loaders/imageLoader';
4
4
  import * as metaData from '../metaData';
5
5
  import { RequestType } from '../enums';
6
6
  import imageLoadPoolManager from '../requestPool/imageLoadPoolManager';
7
- import renderToCanvas from './renderToCanvas';
7
+ import renderToCanvasGPU from './renderToCanvasGPU';
8
+ import renderToCanvasCPU from './renderToCanvasCPU';
8
9
  import { getConfiguration } from '../init';
9
10
 
11
+ interface LoadImageOptions {
12
+ canvas: HTMLCanvasElement;
13
+ imageId: string;
14
+ requestType?: RequestType;
15
+ priority?: number;
16
+ renderingEngineId?: string;
17
+ useCPURendering?: boolean;
18
+ }
19
+
10
20
  /**
11
- * Loads and renders an imageId to a Canvas. It will use the CPU rendering pipeline
12
- * for image.
21
+ * Loads and renders an imageId to a Canvas. It will use the GPU rendering pipeline
22
+ * for image by default but you can force the CPU rendering pipeline by setting the
23
+ * useCPURendering parameter to true.
13
24
  *
14
25
  * @example
15
26
  * ```
@@ -18,26 +29,37 @@ import { getConfiguration } from '../init';
18
29
  *
19
30
  * loadImageToCanvas(canvas, imageId)
20
31
  * ```
21
- * @param imageId - The imageId to render
22
32
  * @param canvas - Canvas element to render to
33
+ * @param imageId - The imageId to render
23
34
  * @param requestType - The type of request (default to interaction), can be 'interaction' or 'prefetch' or 'thumbnail'
24
35
  * the order of loading for the pool manager is interaction, thumbnail, prefetch
25
36
  * @param priority - The priority of the request within the request type (lower is higher priority)
37
+ * @param useCPURendering - Force the use of the CPU rendering pipeline (default to false)
26
38
  * @returns - A promise that resolves when the image has been rendered with the imageId
27
39
  */
28
40
  export default function loadImageToCanvas(
29
- canvas: HTMLCanvasElement,
30
- imageId: string,
31
- requestType = RequestType.Thumbnail,
32
- priority = -5
41
+ options: LoadImageOptions
33
42
  ): Promise<string> {
43
+ const {
44
+ canvas,
45
+ imageId,
46
+ requestType = RequestType.Thumbnail,
47
+ priority = -5,
48
+ renderingEngineId = '_thumbnails',
49
+ useCPURendering = false,
50
+ } = options;
51
+
52
+ const renderFn = useCPURendering ? renderToCanvasCPU : renderToCanvasGPU;
53
+
34
54
  return new Promise((resolve, reject) => {
35
55
  function successCallback(image: IImage, imageId: string) {
36
56
  const { modality } = metaData.get('generalSeriesModule', imageId) || {};
37
57
 
38
58
  image.isPreScaled = image.isPreScaled || image.preScale?.scaled;
39
- renderToCanvas(canvas, image, modality);
40
- resolve(imageId);
59
+
60
+ renderFn(canvas, image, modality, renderingEngineId).then(() => {
61
+ resolve(imageId);
62
+ });
41
63
  }
42
64
 
43
65
  function errorCallback(error: Error, imageId: string) {
@@ -64,10 +86,10 @@ export default function loadImageToCanvas(
64
86
  targetBuffer: {
65
87
  type: useNorm16Texture ? undefined : 'Float32Array',
66
88
  },
67
- useRGBA: true,
68
89
  preScale: {
69
90
  enabled: true,
70
91
  },
92
+ useRGBA: !!useCPURendering,
71
93
  requestType,
72
94
  };
73
95
 
@@ -11,11 +11,12 @@ import drawImageSync from '../RenderingEngine/helpers/cpuFallback/drawImageSync'
11
11
  * @param image - Cornerstone image object
12
12
  * @param canvas - Canvas element to render to
13
13
  */
14
- export default function renderToCanvas(
14
+ export default function renderToCanvasCPU(
15
15
  canvas: HTMLCanvasElement,
16
16
  image: IImage,
17
- modality?: string
18
- ): void {
17
+ modality?: string,
18
+ renderingEngineId?: string
19
+ ): Promise<string> {
19
20
  const viewport = getDefaultViewport(canvas, image, modality);
20
21
 
21
22
  const enabledElement: CPUFallbackEnabledElement = {
@@ -28,5 +29,8 @@ export default function renderToCanvas(
28
29
  enabledElement.transform = calculateTransform(enabledElement);
29
30
 
30
31
  const invalidated = true;
31
- drawImageSync(enabledElement, invalidated);
32
+ return new Promise((resolve, reject) => {
33
+ drawImageSync(enabledElement, invalidated);
34
+ resolve(image.imageId);
35
+ });
32
36
  }
@@ -0,0 +1,130 @@
1
+ import getOrCreateCanvas from '../RenderingEngine/helpers/getOrCreateCanvas';
2
+ import { ViewportType, Events } from '../enums';
3
+ import StackViewport from '../RenderingEngine/StackViewport';
4
+ import { IImage } from '../types';
5
+ import { getRenderingEngine } from '../RenderingEngine/getRenderingEngine';
6
+ import RenderingEngine from '../RenderingEngine';
7
+
8
+ /**
9
+ * Renders an cornerstone image to a Canvas. This method will handle creation
10
+ * of a temporary enabledElement, setting the imageId, and rendering the image via
11
+ * a StackViewport, copying the canvas drawing to the given canvas Element, and
12
+ * disabling the created temporary element. SuppressEvents argument is used to
13
+ * prevent events from firing during the render process (e.g. during a series
14
+ * of renders to a thumbnail image).
15
+ *
16
+ * @example
17
+ * ```
18
+ * const canvas = document.getElementById('myCanvas')
19
+ *
20
+ * renderToCanvasGPU(canvas, image)
21
+ * ```
22
+ * @param canvas - Canvas element to render to
23
+ * @param image - The image to render
24
+ * @param modality - [Default = undefined] The modality of the image
25
+ * @returns - A promise that resolves when the image has been rendered with the imageId
26
+ */
27
+ export default function renderToCanvasGPU(
28
+ canvas: HTMLCanvasElement,
29
+ image: IImage,
30
+ modality = undefined,
31
+ renderingEngineId = '_thumbnails'
32
+ ): Promise<string> {
33
+ if (!canvas || !(canvas instanceof HTMLCanvasElement)) {
34
+ throw new Error('canvas element is required');
35
+ }
36
+
37
+ const imageIdToPrint = image.imageId;
38
+ const viewportId = `renderGPUViewport-${imageIdToPrint}`;
39
+ const imageId = image.imageId;
40
+ const element = document.createElement('div');
41
+ element.style.width = `${canvas.width}px`;
42
+ element.style.height = `${canvas.height}px`;
43
+ element.style.visibility = 'hidden';
44
+ element.style.position = 'absolute';
45
+
46
+ document.body.appendChild(element);
47
+
48
+ // add id to the element so we can find it later, and fix the : which is not allowed in css
49
+ const uniqueId = viewportId.split(':').join('-');
50
+ element.setAttribute('viewport-id-for-remove', uniqueId);
51
+
52
+ const renderingEngine =
53
+ (getRenderingEngine(renderingEngineId) as RenderingEngine) ||
54
+ new RenderingEngine(renderingEngineId);
55
+
56
+ let viewport = renderingEngine.getViewport(viewportId) as StackViewport;
57
+
58
+ if (!viewport) {
59
+ const stackViewportInput = {
60
+ viewportId,
61
+ type: ViewportType.STACK,
62
+ element,
63
+ defaultOptions: {
64
+ suppressEvents: true,
65
+ },
66
+ };
67
+ renderingEngine.enableElement(stackViewportInput);
68
+ viewport = renderingEngine.getViewport(viewportId) as StackViewport;
69
+ }
70
+
71
+ return new Promise((resolve) => {
72
+ // Creating a temporary HTML element so that we can
73
+ // enable it and later disable it without losing the canvas context
74
+ let elementRendered = false;
75
+
76
+ // Create a named function to handle the event
77
+ const onImageRendered = (eventDetail) => {
78
+ if (elementRendered) {
79
+ return;
80
+ }
81
+
82
+ // get the canvas element that is the child of the div
83
+ const temporaryCanvas = getOrCreateCanvas(element);
84
+
85
+ // Copy the temporary canvas to the given canvas
86
+ const context = canvas.getContext('2d');
87
+ context.drawImage(temporaryCanvas, 0, 0);
88
+ elementRendered = true;
89
+
90
+ // remove based on id
91
+ element.removeEventListener(Events.IMAGE_RENDERED, onImageRendered);
92
+
93
+ // Ensure pending previous resize calls are done which might have been
94
+ // triggered by the same disableElement call. This is to avoid potential
95
+ // grab of the wrong canvas coordinate from the offscreen renderer since
96
+ // disable might have not finished resizing yet and it will cause weird
97
+ // copy to on screen from an incorrect location in the offscreen renderer.
98
+ setTimeout(() => {
99
+ renderingEngine.disableElement(viewportId);
100
+
101
+ // remove all the elements that has the same id
102
+ const elements = document.querySelectorAll(
103
+ `[viewport-id-for-remove="${uniqueId}"]`
104
+ );
105
+ elements.forEach((element) => {
106
+ element.remove();
107
+ });
108
+ }, 0);
109
+ resolve(imageId);
110
+ };
111
+
112
+ element.addEventListener(Events.IMAGE_RENDERED, onImageRendered);
113
+ viewport.renderImageObject(image);
114
+
115
+ if (modality === 'PT' && !_isPTImagePreScaledWithSUV(image)) {
116
+ viewport.setProperties({
117
+ voiRange: {
118
+ lower: image.minPixelValue,
119
+ upper: image.maxPixelValue,
120
+ },
121
+ });
122
+ }
123
+
124
+ viewport.render();
125
+ });
126
+ }
127
+
128
+ const _isPTImagePreScaledWithSUV = (image: IImage) => {
129
+ return image.preScale.scaled && image.preScale.scalingParameters.suvbw;
130
+ };
@@ -1,2 +0,0 @@
1
- import { IImage } from '../types';
2
- export default function renderToCanvas(canvas: HTMLCanvasElement, image: IImage, modality?: string): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderToCanvas.js","sourceRoot":"","sources":["../../../src/utilities/renderToCanvas.ts"],"names":[],"mappings":";;;;;AAEA,6HAAqG;AACrG,6HAAqG;AACrG,yGAAiF;AASjF,SAAwB,cAAc,CACpC,MAAyB,EACzB,KAAa,EACb,QAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAA,4BAAkB,EAAC,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,IAAA,4BAAkB,EAAC,cAAc,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,IAAI,CAAC;IACzB,IAAA,uBAAa,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAlBD,iCAkBC"}
@@ -1,2 +0,0 @@
1
- import { IImage } from '../types';
2
- export default function renderToCanvas(canvas: HTMLCanvasElement, image: IImage, modality?: string): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderToCanvas.js","sourceRoot":"","sources":["../../../src/utilities/renderToCanvas.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,cAAc,CACpC,MAAyB,EACzB,KAAa,EACb,QAAiB;IAEjB,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,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC"}