package org.jboss.seam.ui.graphicImage;
import java.io.IOException;
import javax.faces.component.UIComponentBase;
public abstract class UITransformImageSize extends UIComponentBase implements ImageTransform
{
public void applyTransform(Image image) throws IOException
{
if (!isRendered())
{
return;
}
// TODO reduce number of decimal places
if (isMaintainRatio())
{
if (getWidth() != null && getHeight() != null)
{
throw new UnsupportedOperationException(
"Cannot maintain ratio and specify height and width");
}
else if (getWidth() != null)
{
image.scaleToWidth(new Integer(getWidth()));
}
else if (getHeight() != null)
{
image.scaleToHeight(new Integer(getHeight()));
}
}
else if (getFactor() != null)
{
if (getWidth() != null || getHeight() != null)
{
throw new UnsupportedOperationException(
"Cannot scale by a factor and specify height and width");
}
image.scale(getFactor());
}
else
{
if (getWidth() == null || getHeight() == null)
{
throw new UnsupportedOperationException(
"If not specifying a factor or maintain ratio you must specify width and heigh");
}
image.resize(new Integer(getWidth()), new Integer(getHeight()));
}
}
public abstract boolean isMaintainRatio();
public abstract void setMaintainRatio(boolean maintainRatio);
public abstract Integer getWidth();
public abstract void setWidth(Integer width);
public abstract Integer getHeight();
public abstract void setHeight(Integer height);
public abstract Double getFactor();
public abstract void setFactor(Double factor);
}