private VirtualTransformedRenditionMetadata getCropRendition(NavigableSet<RenditionMetadata> candidates) {
RenditionMetadata original = getOriginalRendition();
if (original == null) {
return null;
}
Double scaleFactor = getCropScaleFactor(candidates);
CropDimension scaledCropDimension = new CropDimension(
Math.round(cropDimension.getLeft() * scaleFactor),
Math.round(cropDimension.getTop() * scaleFactor),
Math.round(cropDimension.getWidth() * scaleFactor),
Math.round(cropDimension.getHeight() * scaleFactor));
return new VirtualTransformedRenditionMetadata(original.getRendition(),
rotateMapWidth(scaledCropDimension.getWidth(), scaledCropDimension.getHeight()),
rotateMapHeight(scaledCropDimension.getWidth(), scaledCropDimension.getHeight()),
scaledCropDimension, rotation);
}