package com.jme3.scene.plugins.blender.textures.io;
import com.jme3.texture.Image.Format;
import java.util.HashMap;
import java.util.Map;
/**
* This class creates a pixel IO object for the specified image format.
*
* @author Marcin Roguski (Kaelthas)
*/
public class PixelIOFactory {
private static final Map<Format, PixelInputOutput> PIXEL_INPUT_OUTPUT = new HashMap<Format, PixelInputOutput>();
/**
* This method returns pixel IO object for the specified format.
*
* @param format
* the format of the image
* @return pixel IO object
*/
public static PixelInputOutput getPixelIO(Format format) {
PixelInputOutput result = PIXEL_INPUT_OUTPUT.get(format);
if (result == null) {
switch (format) {
case ABGR8:
case RGBA8:
case BGR8:
case BGRA8:
case RGB8:
case ARGB8:
case RGB111110F:
case RGB16F:
case RGB16F_to_RGB111110F:
case RGB16F_to_RGB9E5:
case RGB32F:
case RGB565:
case RGB5A1:
case RGB9E5:
case RGBA16F:
case RGBA32F:
result = new AWTPixelInputOutput();
break;
case Luminance8:
case Luminance16F:
case Luminance16FAlpha16F:
case Luminance32F:
case Luminance8Alpha8:
result = new LuminancePixelInputOutput();
break;
case DXT1:
case DXT1A:
case DXT3:
case DXT5:
result = new DDSPixelInputOutput();
break;
default:
throw new IllegalStateException("Unsupported image format for IO operations: " + format);
}
synchronized (PIXEL_INPUT_OUTPUT) {
PIXEL_INPUT_OUTPUT.put(format, result);
}
}
return result;
}
}