_capsUtil = new CapsUtil();
}
@Override
public Image load(final InputStream is, final boolean flipped) throws IOException {
final TextureData textureData = TextureIO.newTextureData(_capsUtil.getProfile(), is, true, null);
final Buffer textureDataBuffer = textureData.getBuffer();
final Image ardorImage = new Image();
final TYPE bufferDataType = getBufferDataType(textureDataBuffer);
if (bufferDataType == null) {
throw new UnsupportedOperationException("Unknown buffer type " + textureDataBuffer.getClass().getName());
} else {
final int dataSizeInBytes = textureDataBuffer.capacity() * Buffers.sizeOfBufferElem(textureDataBuffer);
final ByteBuffer scratch = createOnHeap ? BufferUtils.createByteBufferOnHeap(dataSizeInBytes) : Buffers
.newDirectByteBuffer(dataSizeInBytes);
if (flipped) {
flipImageData(textureDataBuffer, scratch, dataSizeInBytes, bufferDataType, textureData.getWidth(),
textureData.getHeight());
} else {
copyImageData(textureDataBuffer, scratch, bufferDataType);
}
ardorImage.setWidth(textureData.getWidth());
ardorImage.setHeight(textureData.getHeight());
ardorImage.setData(scratch);
ardorImage.setDataFormat(JoglTextureUtil.getImageDataFormat(textureData.getPixelFormat()));
// ardorImage.setDataType(JoglTextureUtil.getPixelDataType(textureData.getPixelType()));
ardorImage.setDataType(PixelDataType.UnsignedByte);
return ardorImage;
}
}