@cornerstonejs/core 4.18.1 → 4.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/RenderingEngine/ContextPoolRenderingEngine.js +4 -13
- package/dist/esm/RenderingEngine/helpers/getOrCreateCanvas.d.ts +5 -0
- package/dist/esm/RenderingEngine/helpers/getOrCreateCanvas.js +26 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +2 -2
|
@@ -9,7 +9,7 @@ import VolumeViewport from './VolumeViewport';
|
|
|
9
9
|
import StackViewport from './StackViewport';
|
|
10
10
|
import VolumeViewport3D from './VolumeViewport3D';
|
|
11
11
|
import viewportTypeUsesCustomRenderingPipeline from './helpers/viewportTypeUsesCustomRenderingPipeline';
|
|
12
|
-
import getOrCreateCanvas from './helpers/getOrCreateCanvas';
|
|
12
|
+
import getOrCreateCanvas, { updateCanvasSizeAndAspectRatio, } from './helpers/getOrCreateCanvas';
|
|
13
13
|
class ContextPoolRenderingEngine extends BaseRenderingEngine {
|
|
14
14
|
constructor(id) {
|
|
15
15
|
super(id);
|
|
@@ -47,6 +47,7 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
|
|
|
47
47
|
const viewportsDrivenByVtkJs = viewports.filter((vp) => viewportTypeUsesCustomRenderingPipeline(vp.type) === false);
|
|
48
48
|
const canvasesDrivenByVtkJs = viewportsDrivenByVtkJs.map((vp) => vp.canvas);
|
|
49
49
|
const canvas = getOrCreateCanvas(viewportInputEntry.element);
|
|
50
|
+
updateCanvasSizeAndAspectRatio(canvas);
|
|
50
51
|
canvasesDrivenByVtkJs.push(canvas);
|
|
51
52
|
const internalViewportEntry = { ...viewportInputEntry, canvas };
|
|
52
53
|
this.addVtkjsDrivenViewport(internalViewportEntry);
|
|
@@ -113,12 +114,7 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
|
|
|
113
114
|
setVtkjsDrivenViewports(viewportInputEntries) {
|
|
114
115
|
if (viewportInputEntries.length) {
|
|
115
116
|
const vtkDrivenCanvases = viewportInputEntries.map((vp) => getOrCreateCanvas(vp.element));
|
|
116
|
-
vtkDrivenCanvases.forEach((canvas) =>
|
|
117
|
-
const devicePixelRatio = window.devicePixelRatio || 1;
|
|
118
|
-
const rect = canvas.getBoundingClientRect();
|
|
119
|
-
canvas.width = rect.width * devicePixelRatio;
|
|
120
|
-
canvas.height = rect.height * devicePixelRatio;
|
|
121
|
-
});
|
|
117
|
+
vtkDrivenCanvases.forEach((canvas) => updateCanvasSizeAndAspectRatio(canvas));
|
|
122
118
|
for (let i = 0; i < viewportInputEntries.length; i++) {
|
|
123
119
|
const vtkDrivenViewportInputEntry = viewportInputEntries[i];
|
|
124
120
|
const canvas = vtkDrivenCanvases[i];
|
|
@@ -290,12 +286,7 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
|
|
|
290
286
|
const { element, canvas, id: viewportId, renderingEngineId, suppressEvents, } = viewport;
|
|
291
287
|
const dWidth = viewport.sWidth;
|
|
292
288
|
const dHeight = viewport.sHeight;
|
|
293
|
-
|
|
294
|
-
(canvas.height !== dHeight && dWidth >= 1 && dHeight >= 1)) {
|
|
295
|
-
canvas.width = dWidth;
|
|
296
|
-
canvas.height = dHeight;
|
|
297
|
-
canvas.style.aspectRatio = `${dWidth} / ${dHeight}`;
|
|
298
|
-
}
|
|
289
|
+
updateCanvasSizeAndAspectRatio(canvas, { width: dWidth, height: dHeight });
|
|
299
290
|
const onScreenContext = canvas.getContext('2d');
|
|
300
291
|
const contextIndex = this.contextPool.getContextIndexForViewport(viewportId);
|
|
301
292
|
const maxSize = this.contextPool.getMaxSizeForContext(contextIndex);
|
|
@@ -2,5 +2,10 @@ export declare const EPSILON = 0.0001;
|
|
|
2
2
|
export declare function createCanvas(element: Element | HTMLDivElement, width?: number, height?: number): HTMLCanvasElement;
|
|
3
3
|
export declare function createViewportElement(element: HTMLDivElement): HTMLDivElement;
|
|
4
4
|
export declare function setCanvasCreator(canvasCreatorArg: any): void;
|
|
5
|
+
export type ViewportCanvasExtent = HTMLCanvasElement | {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function updateCanvasSizeAndAspectRatio(canvas: HTMLCanvasElement, extentOrOffscreen?: ViewportCanvasExtent): boolean | undefined;
|
|
5
10
|
export declare function getOrCreateCanvas(element: HTMLDivElement): HTMLCanvasElement;
|
|
6
11
|
export default getOrCreateCanvas;
|
|
@@ -30,6 +30,32 @@ export function createViewportElement(element) {
|
|
|
30
30
|
export function setCanvasCreator(canvasCreatorArg) {
|
|
31
31
|
canvasCreator = canvasCreatorArg;
|
|
32
32
|
}
|
|
33
|
+
export function updateCanvasSizeAndAspectRatio(canvas, extentOrOffscreen) {
|
|
34
|
+
if (extentOrOffscreen === undefined) {
|
|
35
|
+
const devicePixelRatio = window.devicePixelRatio || 1;
|
|
36
|
+
const rect = canvas.getBoundingClientRect();
|
|
37
|
+
const w = Math.round(rect.width * devicePixelRatio);
|
|
38
|
+
const h = Math.round(rect.height * devicePixelRatio);
|
|
39
|
+
if (w > 0 && h > 0) {
|
|
40
|
+
canvas.width = w;
|
|
41
|
+
canvas.height = h;
|
|
42
|
+
canvas.style.aspectRatio = `${w} / ${h}`;
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const { width: targetW, height: targetH } = extentOrOffscreen;
|
|
47
|
+
if (targetW < 1 || targetH < 1) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const needsUpdate = canvas.width !== targetW || canvas.height !== targetH;
|
|
51
|
+
if (needsUpdate) {
|
|
52
|
+
canvas.width = targetW;
|
|
53
|
+
canvas.height = targetH;
|
|
54
|
+
canvas.style.aspectRatio = `${targetW} / ${targetH}`;
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
33
59
|
export function getOrCreateCanvas(element) {
|
|
34
60
|
const canvasSelector = `canvas.${CANVAS_CSS_CLASS}`;
|
|
35
61
|
const viewportElement = `div.${VIEWPORT_ELEMENT}`;
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "4.18.
|
|
1
|
+
export declare const version = "4.18.2";
|
package/dist/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '4.18.
|
|
1
|
+
export const version = '4.18.2';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/core",
|
|
3
|
-
"version": "4.18.
|
|
3
|
+
"version": "4.18.2",
|
|
4
4
|
"description": "Cornerstone3D Core",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"type": "individual",
|
|
98
98
|
"url": "https://ohif.org/donate"
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "a978600e12def8b794ce0c1045e61bd4fc646851"
|
|
101
101
|
}
|