blob: 3d0d187b776b32e7fbf99542018711408c2682bc [file] [log] [blame]
package org.apache.commons.imaging.common;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DataBufferInt;
import java.awt.image.DirectColorModel;
import java.awt.image.WritableRaster;
import java.util.Properties;
public class ImageBuilder {
private int[] data;
private int width;
private int height;
private boolean hasAlpha;
public ImageBuilder(int width, int height, boolean hasAlpha) {
data = new int[width * height];
this.width = width;
this.height = height;
this.hasAlpha = hasAlpha;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
public int getRGB(int x, int y) {
final int rowOffset = y * width;
return data[rowOffset + x];
}
public void setRGB(int x, int y, int argb) {
final int rowOffset = y * width;
data[rowOffset + x] = argb;
}
public BufferedImage getBufferedImage() {
ColorModel colorModel;
WritableRaster raster;
DataBufferInt buffer = new DataBufferInt(data, width * height);
if (hasAlpha) {
colorModel = new DirectColorModel(32,
0x00ff0000,
0x0000ff00,
0x000000ff,
0xff000000);
raster = WritableRaster.createPackedRaster(buffer, width, height, width,
new int[] { 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 }, null);
} else {
colorModel = new DirectColorModel(24,
0x00ff0000,
0x0000ff00,
0x000000ff);
raster = WritableRaster.createPackedRaster(buffer, width, height, width,
new int[] { 0x00ff0000, 0x0000ff00, 0x000000ff }, null);
}
return new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), new Properties());
}
}