home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / handson / archive / Issue159 / files / java / ex1 / GIFBuilder.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-10-03  |  1.9 KB  |  86 lines

  1. import java.awt.Component;
  2. import java.awt.Image;
  3. import java.awt.MediaTracker;
  4. import java.awt.Rectangle;
  5.  
  6. public class GIFBuilder extends Animator {
  7.    private GIFImage myGIF;
  8.    private int[] currentGG = new int[0];
  9.  
  10.    GIFBuilder(int var1, int var2) {
  11.       this.myGIF = new GIFImage(var1, var2);
  12.    }
  13.  
  14.    public Animation getAnimation() {
  15.       return this.myGIF;
  16.    }
  17.  
  18.    public void setFPS(int var1) {
  19.       this.myGIF.setFPS(var1);
  20.    }
  21.  
  22.    public int getFPS() {
  23.       return this.myGIF.getFPS();
  24.    }
  25.  
  26.    public int addImage(Image var1, Component var2) {
  27.       int var3 = -1;
  28.       MediaTracker var4 = new MediaTracker(var2);
  29.       var4.addImage(var1, 1);
  30.  
  31.       try {
  32.          var4.waitForID(1);
  33.          GIFGraphics var5 = new GIFGraphics(var1, var2);
  34.          if (this.currentGG.length == 0) {
  35.             this.currentGG = new int[var5.pixels.length];
  36.  
  37.             for(int var14 = 0; var14 < this.currentGG.length; ++var14) {
  38.                this.currentGG[var14] = var5.pixels[var14];
  39.             }
  40.          } else {
  41.             int var6 = var5.height;
  42.             int var7 = var5.width;
  43.             int var8 = 0;
  44.             int var9 = 0;
  45.             int var10 = 0;
  46.  
  47.             for(int var11 = 0; var11 < var5.height; ++var11) {
  48.                for(int var12 = 0; var12 < var5.width; ++var12) {
  49.                   if (var5.pixels[var10] == this.currentGG[var10]) {
  50.                      var5.pixels[var10++] = 0;
  51.                   } else {
  52.                      if (var12 < var7) {
  53.                         var7 = var12;
  54.                      }
  55.  
  56.                      if (var11 < var6) {
  57.                         var6 = var11;
  58.                      }
  59.  
  60.                      if (var7 + var9 < var12) {
  61.                         var9 = var12 - var7;
  62.                      }
  63.  
  64.                      if (var6 + var8 < var11) {
  65.                         var8 = var11 - var6;
  66.                      }
  67.  
  68.                      this.currentGG[var10] = var5.pixels[var10];
  69.                      ++var10;
  70.                   }
  71.                }
  72.             }
  73.  
  74.             var5.cropTo(new Rectangle(var7, var6, var9 + 1, var8 + 1));
  75.          }
  76.  
  77.          var3 = this.myGIF.addImage(var5);
  78.       } catch (Exception var13) {
  79.          System.out.println("Unable to create GIFImage: " + var13);
  80.          ((Throwable)var13).printStackTrace();
  81.       }
  82.  
  83.       return var3;
  84.    }
  85. }
  86.