in source/image-handler/image-handler.ts [308:330]
public getCropArea(boundingBox: BoundingBox, padding: number, boxSize: BoxSize): BoundingBox {
// calculate needed options dimensions
let left = Math.floor(boundingBox.left * boxSize.width - padding);
let top = Math.floor(boundingBox.top * boxSize.height - padding);
let extractWidth = Math.floor(boundingBox.width * boxSize.width + padding * 2);
let extractHeight = Math.floor(boundingBox.height * boxSize.height + padding * 2);
// check if dimensions fit within image dimensions and re-adjust if necessary
left = left < 0 ? 0 : left;
top = top < 0 ? 0 : top;
const maxWidth = boxSize.width - left;
const maxHeight = boxSize.height - top;
extractWidth = extractWidth > maxWidth ? maxWidth : extractWidth;
extractHeight = extractHeight > maxHeight ? maxHeight : extractHeight;
// Calculate the smart crop area
return {
left: left,
top: top,
width: extractWidth,
height: extractHeight
};
}