package edu.mbl.jif.gui.imaging;
import java.awt.*;
import java.awt.color.*;
import java.awt.image.*;
import javax.swing.*;
public class GSImageViewerByte extends JComponent {
private BufferedImage image1;
private BufferedImage image2;
private int sizeX;
private int sizeY;
public GSImageViewerByte() {
sizeX = 256;
sizeY = 256;
// Create first image
byte[] data1 = new byte[sizeX*sizeY];
setData(data1, sizeX, sizeY);
DataBuffer dataBuffer = new DataBufferByte(data1, data1.length);
int dataType = dataBuffer.getDataType();
int imageDepth = DataBuffer.getDataTypeSize(dataType);
WritableRaster wr = Raster.createInterleavedRaster(dataBuffer,
sizeX, sizeY, sizeX, 1, new int[]{0}, null);
ComponentColorModel ccm = new ComponentColorModel(
ColorSpace.getInstance(ColorSpace.CS_GRAY),
new int[] {imageDepth},
false, // hasAlpha
false, // Alpha premultiplied
Transparency.OPAQUE, dataType);
image1 = new BufferedImage(ccm, wr, true, null);
// Create second image
image2 = new BufferedImage(sizeX, sizeY,
BufferedImage.TYPE_BYTE_GRAY);
byte[] data2 = ((DataBufferByte)image2.getRaster().getDataBuffer()).getData();
setData(data2, sizeX, sizeY);
}
private void setData(byte[] data, int sizeX, int sizeY) {
for (int y = 0; y < sizeY ; y++) {
for (int x = 0; x < sizeX; x++) {
data[y*sizeX+x] = (byte)y;
}
}
}
protected void paintComponent(Graphics g) {
g.drawImage(image1, 0, 0, null);
//g.drawImage(image2, 256, 0, null);
}
public Dimension getMinimumSize() {
return new Dimension(sizeX*2, sizeY);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
public Dimension getMaximumSize() {
return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("GrayScale Image Viewer Byte");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GSImageViewerByte viewer = new GSImageViewerByte();
frame.getContentPane().add(viewer);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}