package com.twelvemonkeys.servlet.image.aoi;
import java.awt.*;
/**
* @author <a href="mailto:erlend@escenic.com">Erlend Hamnaberg</a>
* @version $Revision: $
*/
public class UniformAreaOfInterest extends DefaultAreaOfInterest {
public UniformAreaOfInterest(Dimension pOriginalDimension) {
super(pOriginalDimension);
}
public UniformAreaOfInterest(int pOriginalWidth, int pOriginalHeight) {
super(pOriginalWidth, pOriginalHeight);
}
public Dimension getCrop(Dimension pOriginalDimension, final Rectangle pCrop) {
float ratio;
if (pCrop.width >= 0 && pCrop.height >= 0) {
// Compute both ratios
ratio = (float) pCrop.width / (float) pCrop.height;
float originalRatio = (float) pOriginalDimension.width / (float) pOriginalDimension.height;
if (ratio > originalRatio) {
pCrop.width = pOriginalDimension.width;
pCrop.height = Math.round((float) pOriginalDimension.width / ratio);
}
else {
pCrop.height = pOriginalDimension.height;
pCrop.width = Math.round((float) pOriginalDimension.height * ratio);
}
}
else if (pCrop.width >= 0) {
// Find ratio from pWidth
ratio = (float) pCrop.width / (float) pOriginalDimension.width;
pCrop.height = Math.round((float) pOriginalDimension.height * ratio);
}
else if (pCrop.height >= 0) {
// Find ratio from pHeight
ratio = (float) pCrop.height / (float) pOriginalDimension.height;
pCrop.width = Math.round((float) pOriginalDimension.width * ratio);
}
// Else: No crop
return new Dimension(pCrop.width, pCrop.height);
}
}