@cornerstonejs/core
Version:
Cornerstone3D Core
36 lines (35 loc) • 1.43 kB
JavaScript
import clip from './clip.js';
import scroll from './scroll.js';
import getEnabledElement from '../getEnabledElement.js';
import StackViewport from '../RenderingEngine/StackViewport.js';
async function jumpToSlice(element, options = {}) {
const { imageIndex, debounceLoading, volumeId } = options;
const enabledElement = getEnabledElement(element);
if (!enabledElement) {
throw new Error('Element has been disabled');
}
const { viewport } = enabledElement;
const { imageIndex: currentImageIndex, numberOfSlices } = _getImageSliceData(viewport, debounceLoading);
const imageIndexToJump = _getImageIndexToJump(numberOfSlices, imageIndex);
const delta = imageIndexToJump - currentImageIndex;
scroll(viewport, { delta, debounceLoading, volumeId });
}
function _getImageSliceData(viewport, debounceLoading) {
if (viewport instanceof StackViewport) {
return {
numberOfSlices: viewport.getImageIds().length,
imageIndex: debounceLoading
? viewport.getTargetImageIdIndex()
: viewport.getCurrentImageIdIndex(),
};
}
return {
numberOfSlices: viewport.getNumberOfSlices(),
imageIndex: viewport.getSliceIndex(),
};
}
function _getImageIndexToJump(numberOfSlices, imageIndex) {
const lastSliceIndex = numberOfSlices - 1;
return clip(imageIndex, 0, lastSliceIndex);
}
export { jumpToSlice };