import getMinMax from './getMinMax.js';
/**
* Check the minimum and maximum values in the imageFrame pixel data
* match with the provided smallestPixelValue and largestPixelValue metaData.
*
* If 'strict' is true, log to the console a warning if these values do not match.
* Otherwise, correct them automatically.
*
* @param {Object} imageFrame
* @param {Boolean} strict If 'strict' is true, log to the console a warning if these values do not match.
* Otherwise, correct them automatically.Default is true.
*/
export default function calculateMinMax(imageFrame, strict = true) {
const minMax = getMinMax(imageFrame.pixelData);
const mustAssign = !(
isNumber(imageFrame.smallestPixelValue) &&
isNumber(imageFrame.largestPixelValue)
);
if (strict === true && !mustAssign) {
if (imageFrame.smallestPixelValue !== minMax.min) {
console.warn(
'Image smallestPixelValue tag is incorrect. Rendering performance will suffer considerably.'
);
}
if (imageFrame.largestPixelValue !== minMax.max) {
console.warn(
'Image largestPixelValue tag is incorrect. Rendering performance will suffer considerably.'
);
}
} else {
imageFrame.smallestPixelValue = minMax.min;
imageFrame.largestPixelValue = minMax.max;
}
}
function isNumber(numValue) {
return typeof numValue === 'number';
}