ohif-viewer/Packages/viewerbase/lib/viewportFunctions.js

139 lines
4.5 KiB
JavaScript
Raw Normal View History

2016-08-24 13:49:41 +02:00
import { Session } from 'meteor/session';
import { $ } from 'meteor/jquery';
getActiveViewportElement = () => {
const viewportIndex = Session.get('activeViewport') || 0;
2015-12-09 15:48:24 +01:00
return $('.imageViewerViewport').get(viewportIndex);
};
2016-08-24 13:49:41 +02:00
zoomIn = () => {
const element = getActiveViewportElement();
let viewport = cornerstone.getViewport(element);
const scaleIncrement = 0.15;
const maximumScale = 10;
viewport.scale = Math.min(viewport.scale + increment, maximumScale);
2015-12-09 15:48:24 +01:00
cornerstone.setViewport(element, viewport);
};
2016-08-24 13:49:41 +02:00
zoomOut = () => {
const element = getActiveViewportElement();
let viewport = cornerstone.getViewport(element);
const scaleIncrement = 0.15;
const minimumScale = 0.05;
viewport.scale = Math.max(viewport.scale - increment, minimumScale);
2015-12-09 15:48:24 +01:00
cornerstone.setViewport(element, viewport);
};
2016-08-24 13:49:41 +02:00
zoomToFit = () => {
const element = getActiveViewportElement();
2015-12-09 15:48:24 +01:00
cornerstone.fitToWindow(element);
};
2016-08-24 13:49:41 +02:00
rotateL = () => {
const element = getActiveViewportElement();
let viewport = cornerstone.getViewport(element);
2015-12-09 15:48:24 +01:00
viewport.rotation -= 90;
cornerstone.setViewport(element, viewport);
updateOrientationMarkers(element, viewport);
};
2016-08-24 13:49:41 +02:00
rotateR = () => {
const element = getActiveViewportElement();
let viewport = cornerstone.getViewport(element);
2015-12-09 15:48:24 +01:00
viewport.rotation += 90;
cornerstone.setViewport(element, viewport);
updateOrientationMarkers(element, viewport);
};
2016-08-24 13:49:41 +02:00
invert = () => {
const element = getActiveViewportElement();
let viewport = cornerstone.getViewport(element);
2015-12-09 15:48:24 +01:00
viewport.invert = (viewport.invert === false);
cornerstone.setViewport(element, viewport);
};
2016-08-24 13:49:41 +02:00
flipV = () => {
const element = getActiveViewportElement();
let viewport = cornerstone.getViewport(element);
2015-12-09 15:48:24 +01:00
viewport.vflip = (viewport.vflip === false);
cornerstone.setViewport(element, viewport);
updateOrientationMarkers(element, viewport);
};
2016-08-24 13:49:41 +02:00
flipH = () => {
const element = getActiveViewportElement();
let viewport = cornerstone.getViewport(element);
2015-12-09 15:48:24 +01:00
viewport.hflip = (viewport.hflip === false);
cornerstone.setViewport(element, viewport);
updateOrientationMarkers(element, viewport);
};
2016-08-24 13:49:41 +02:00
resetViewport = () => {
const element = getActiveViewportElement();
const enabledElement = cornerstone.getEnabledElement(element);
if (enabledElement.fitToWindow === false) {
const imageId = enabledElement.image.imageId;
const instance = cornerstoneTools.metaData.get('instance', imageId);
enabledElement.viewport = cornerstone.getDefaultViewport(enabledElement.canvas, enabledElement.image);
2016-08-24 13:49:41 +02:00
const instanceClassDefaultViewport = getInstanceClassDefaultViewport(instance, enabledElement, imageId);
cornerstone.setViewport(element, instanceClassDefaultViewport);
} else {
cornerstone.reset(element);
}
};
2016-08-24 13:49:41 +02:00
clearTools = () => {
const element = getActiveViewportElement();
const toolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager;
toolStateManager.clear(element);
cornerstone.updateImage(element);
};
2016-08-24 13:49:41 +02:00
// Toggle the play/stop state for the cornerstone clip tool
toggleCinePlay = () => {
// Get the active viewport element
const element = getActiveViewportElement();
2016-08-24 13:49:41 +02:00
// Check if it's playing the clip to toggle it
if (isPlaying()) {
cornerstoneTools.stopClip(element);
} else {
cornerstoneTools.playClip(element);
}
2016-08-24 13:49:41 +02:00
// Update the UpdateCINE session property
Session.set('UpdateCINE', Random.id());
};
2016-08-24 13:49:41 +02:00
// Show/hide the CINE dialog
toggleCineDialog = () => {
const cineDialog = document.getElementById('cineDialog');
toggleDialog(cineDialog);
2016-08-24 13:49:41 +02:00
};
2016-08-24 13:49:41 +02:00
// Check if the clip is playing on the active viewport
isPlaying = () => {
// Create a dependency on LayoutManagerUpdated and UpdateCINE session
Session.get('UpdateCINE');
2016-08-24 13:49:41 +02:00
Session.get('LayoutManagerUpdated');
2016-08-24 13:49:41 +02:00
// Get the viewport element and its current playClip tool state
const element = getActiveViewportElement();
const toolState = cornerstoneTools.getToolState(element, 'playClip');
// Stop here if the tool state is not defined yet
if (!toolState) {
return false;
}
2016-08-24 13:49:41 +02:00
// Get the clip state
const clipState = toolState.data[0];
// Return true if the clip is playing
return !_.isUndefined(clipState.intervalId);
};
// Create an event listener to update playing state when a clip stops playing
$(window).on('CornerstoneToolsClipStopped', () => Session.set('UpdateCINE', Random.id()));