forked from cornerstonejs/cornerstone
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdisplayImage.js
More file actions
72 lines (59 loc) · 2.04 KB
/
Copy pathdisplayImage.js
File metadata and controls
72 lines (59 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { getEnabledElement } from './enabledElements.js';
import getDefaultViewport from './internal/getDefaultViewport.js';
import updateImage from './updateImage.js';
import now from './internal/now.js';
import { setLayerImage } from './layers.js';
import triggerEvent from './triggerEvent.js';
import EVENTS from './events.js';
/**
* Sets a new image object for a given element.
*
* Will also apply an optional viewport setting.
*
* @param {HTMLElement} element An HTML Element enabled for Cornerstone
* @param {Object} image An Image loaded by a Cornerstone Image Loader
* @param {Object} [viewport] A set of Cornerstone viewport parameters
* @returns {void}
* @memberof Drawing
*/
export default function (element, image, viewport) {
if (element === undefined) {
throw new Error('displayImage: parameter element must not be undefined');
}
if (image === undefined) {
throw new Error('displayImage: parameter image must not be undefined');
}
const enabledElement = getEnabledElement(element);
const oldImage = enabledElement.image;
enabledElement.image = image;
if (enabledElement.layers && enabledElement.layers.length) {
setLayerImage(element, image);
}
if (enabledElement.viewport === undefined) {
enabledElement.viewport = getDefaultViewport(enabledElement.canvas, image);
}
// Merge viewport
if (viewport) {
for (const attrname in viewport) {
if (viewport[attrname] !== null) {
enabledElement.viewport[attrname] = viewport[attrname];
}
}
}
let frameRate;
if (enabledElement.lastImageTimeStamp !== undefined) {
const timeSinceLastImage = now() - enabledElement.lastImageTimeStamp;
frameRate = (1000 / timeSinceLastImage).toFixed();
}
enabledElement.lastImageTimeStamp = now();
const newImageEventData = {
viewport: enabledElement.viewport,
element: enabledElement.element,
image: enabledElement.image,
oldImage,
enabledElement,
frameRate
};
triggerEvent(enabledElement.element, EVENTS.NEW_IMAGE, newImageEventData);
updateImage(element);
}