package org.hipi.image.io;
import org.hipi.image.HipiImage;
import org.hipi.image.HipiImageHeader.HipiImageFormat;
import org.hipi.image.io.JpegCodec;
import org.hipi.image.io.PngCodec;
import org.hipi.image.io.PpmCodec;
/**
* Finds a suitable {@link ImageEncoder} or {@link ImageDecoder} for a specific
* {@link HipiImageFormat}.
*/
public final class CodecManager {
/**
* Find a {@link ImageDecoder} capable of deserializing a {@link HipiImage} object stored in a
* specific {@link HipiImageFormat}.
*
* @param format storage format to assume during deserialization
*
* @return image decoder object
*
* @throws IllegalArgumentException if format is invalid or currently unsupported
*/
static public ImageDecoder getDecoder(HipiImageFormat format) throws IllegalArgumentException {
switch (format) {
case JPEG:
return JpegCodec.getInstance();
case PNG:
return PngCodec.getInstance();
case PPM:
return PpmCodec.getInstance();
default:
throw new IllegalArgumentException("Image format currently unsupported.");
}
}
/**
* Find a {@link ImageEncoder} capable of serializing a {@link HipiImage} to a target
* {@link HipiImageFormat}.
*
* @param format storage format to target during serialization
*
* @return image encoder object
*
* @throws IllegalArgumentException if format is invalid or currently unsupported
*/
static public ImageEncoder getEncoder(HipiImageFormat format) throws IllegalArgumentException {
switch (format) {
case JPEG:
return JpegCodec.getInstance();
case PNG:
return PngCodec.getInstance();
case PPM:
return PpmCodec.getInstance();
default:
throw new IllegalArgumentException("Image format currently unsupported.");
}
}
}