Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

SWT and Image

/* SWT/JFace in Action GUI Design with Eclipse 3.0 Matthew Scarpino, Stephen Holder, Stanford Ng, and Laurent Mihalkovic ISBN: 1932394273 Publisher: Manning */ import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.ImageLoader; import org.eclipse.swt.graphics.PaletteData; import org.eclipse.swt.graphics.RGB; public class Ch7_Images {   public static void main(String[] args) {     int numRows = 6, numCols = 11, pix = 20;     PaletteData pd = new PaletteData(new RGB[] { new RGB(0x00, 0x00, 0x00),         new RGB(0x80, 0x80, 0x80), new RGB(0xFF, 0xFF, 0xFF) });     ImageData[] flagArray = new ImageData[3];     for (int frame = 0; frame < flagArray.length; frame++) {       flagArray[frame] = new ImageData(pix * numCols, pix * numRows, 4,           pd);       flagArray[frame].delayTime = 10;       for (int x = 0; x < pix * numCols; x++) {         for (int y = 0; y < pix * numRows; y++) {           int value = (((x / pix) % 3) + (3 - ((y / pix) % 3)) + frame) % 3;           flagArray[frame].setPixel(x, y, value);         }       }     }     ImageLoader gifloader = new ImageLoader();     ByteArrayOutputStream flagByte[] = new ByteArrayOutputStream[3];     byte[][] gifarray = new byte[3][];     gifloader.data = flagArray;     for (int i = 0; i < 3; i++) {       flagByte[i] = new ByteArrayOutputStream();       flagArray[0] = flagArray[i];       gifloader.save(flagByte[i], SWT.IMAGE_GIF);       gifarray[i] = flagByte[i].toByteArray();     }     byte[] gif = new byte[4628];     System.arraycopy(gifarray[0], 0, gif, 0, 61);     System.arraycopy(new byte[] { 33, (byte) 255, 11 }, 0, gif, 61, 3);     System.arraycopy("NETSCAPE2.0".getBytes(), 0, gif, 64, 11);     System.arraycopy(new byte[] { 3, 1, -24, 3, 0, 33, -7, 4, -24 }, 0,         gif, 75, 9);     System.arraycopy(gifarray[0], 65, gif, 84, 1512);     for (int i = 1; i < 3; i++) {       System.arraycopy(gifarray[i], 61, gif, 1516 * i + 80, 3);       gif[1516 * i + 83] = (byte) -24;       System.arraycopy(gifarray[i], 65, gif, 1516 * i + 84, 1512);     }     try {       DataOutputStream in = new DataOutputStream(           new BufferedOutputStream(new FileOutputStream(new File(               "FlagGIF.gif"))));       in.write(gif, 0, gif.length);     } catch (FileNotFoundException e) {       e.printStackTrace();     } catch (IOException e) {       e.printStackTrace();     }   } }