import React from 'react'; import PropTypes from 'prop-types'; import cornerstone from 'cornerstone-core'; import classnames from 'classnames'; const ViewportOverlay = ({ imageId, scale, windowWidth, windowCenter, imageIndex, stackSize, activeTools, }) => { const topLeft = 'top-viewport left-viewport'; const topRight = 'top-viewport right-viewport-scrollbar'; const bottomRight = 'bottom-viewport right-viewport-scrollbar'; const bottomLeft = 'bottom-viewport left-viewport'; const overlay = 'absolute pointer-events-none'; const isZoomActive = activeTools.includes('Zoom'); const isWwwcActive = activeTools.includes('Wwwc'); if (!imageId) { return null; } // TODO: this component should be presentational only. Right now it has a weird dependency on Cornerstone const generalImageModule = cornerstone.metaData.get('generalImageModule', imageId) || {}; const { instanceNumber } = generalImageModule; return (
{isZoomActive && (
Zoom: {scale.toFixed(2)}x
)} {isWwwcActive && (
W: {windowWidth.toFixed(0)} L: {windowCenter.toFixed(0)}
)}
{stackSize > 1 && (
I: {`${instanceNumber} (${imageIndex}/${stackSize})`}
)}
); }; ViewportOverlay.propTypes = { scale: PropTypes.number.isRequired, windowWidth: PropTypes.number.isRequired, windowCenter: PropTypes.number.isRequired, imageId: PropTypes.string.isRequired, imageIndex: PropTypes.number.isRequired, stackSize: PropTypes.number.isRequired, activeTools: PropTypes.arrayOf(PropTypes.string), }; ViewportOverlay.defaultProps = { activeTools: [], }; export default ViewportOverlay;