home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / awt / image / GifFrame.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  2.5 KB  |  132 lines

  1. package sun.awt.image;
  2.  
  3. import java.awt.image.ColorModel;
  4. import java.awt.image.IndexColorModel;
  5.  
  6. class GifFrame {
  7.    private static final boolean verbose = false;
  8.    private static IndexColorModel trans_model;
  9.    static final int DISPOSAL_NONE = 0;
  10.    static final int DISPOSAL_SAVE = 1;
  11.    static final int DISPOSAL_BGCOLOR = 2;
  12.    static final int DISPOSAL_PREVIOUS = 3;
  13.    GifImageDecoder decoder;
  14.    int disposal_method;
  15.    int delay;
  16.    IndexColorModel model;
  17.    // $FF: renamed from: x int
  18.    int field_0;
  19.    // $FF: renamed from: y int
  20.    int field_1;
  21.    int width;
  22.    int height;
  23.    boolean initialframe;
  24.  
  25.    public GifFrame(GifImageDecoder var1, int var2, int var3, boolean var4, IndexColorModel var5, int var6, int var7, int var8, int var9) {
  26.       this.decoder = var1;
  27.       this.disposal_method = var2;
  28.       this.delay = var3;
  29.       this.model = var5;
  30.       this.initialframe = var4;
  31.       this.field_0 = var6;
  32.       this.field_1 = var7;
  33.       this.width = var8;
  34.       this.height = var9;
  35.    }
  36.  
  37.    private void setPixels(int var1, int var2, int var3, int var4, ColorModel var5, byte[] var6, int var7, int var8) {
  38.       this.decoder.setPixels(var1, var2, var3, var4, var5, var6, var7, var8);
  39.    }
  40.  
  41.    public boolean dispose() {
  42.       if (this.decoder.imageComplete(2, false) == 0) {
  43.          return false;
  44.       } else {
  45.          if (this.delay > 0) {
  46.             try {
  47.                Thread.sleep((long)this.delay);
  48.             } catch (InterruptedException var9) {
  49.                return false;
  50.             }
  51.          } else {
  52.             Thread.yield();
  53.          }
  54.  
  55.          int var1 = this.decoder.global_width;
  56.          int var2 = this.decoder.global_height;
  57.          PixelStore8 var3 = this.decoder.store;
  58.          if (this.field_0 < 0) {
  59.             this.width += this.field_0;
  60.             this.field_0 = 0;
  61.          }
  62.  
  63.          if (this.field_0 + this.width > var1) {
  64.             this.width = var1 - this.field_0;
  65.          }
  66.  
  67.          if (this.width <= 0) {
  68.             this.disposal_method = 0;
  69.          } else {
  70.             if (this.field_1 < 0) {
  71.                this.height += this.field_1;
  72.                this.field_1 = 0;
  73.             }
  74.  
  75.             if (this.field_1 + this.height > var2) {
  76.                this.height = var2 - this.field_1;
  77.             }
  78.  
  79.             if (this.height <= 0) {
  80.                this.disposal_method = 0;
  81.             }
  82.          }
  83.  
  84.          switch (this.disposal_method) {
  85.             case 1:
  86.                this.decoder.saved_model = this.model;
  87.                break;
  88.             case 2:
  89.                byte var6;
  90.                if (this.model.getTransparentPixel() < 0) {
  91.                   this.decoder.cancatchup = false;
  92.                   var3 = null;
  93.                   this.decoder.store = null;
  94.                   this.model = trans_model;
  95.                   if (this.model == null) {
  96.                      this.model = new IndexColorModel(8, 1, new byte[4], 0, true);
  97.                      trans_model = this.model;
  98.                   }
  99.  
  100.                   var6 = 0;
  101.                } else {
  102.                   var6 = (byte)this.model.getTransparentPixel();
  103.                }
  104.  
  105.                byte[] var7 = new byte[this.width];
  106.                if (var6 != 0) {
  107.                   for(int var8 = 0; var8 < this.width; ++var8) {
  108.                      var7[var8] = var6;
  109.                   }
  110.                }
  111.  
  112.                this.setPixels(this.field_0, this.field_1, this.width, this.height, this.model, var7, 0, 0);
  113.                if (var3 != null) {
  114.                   ((PixelStore)var3).setPixels(this.field_0, this.field_1, this.width, this.height, var7, 0, 0);
  115.                }
  116.                break;
  117.             case 3:
  118.                byte[] var4 = this.decoder.saved_image;
  119.                IndexColorModel var5 = this.decoder.saved_model;
  120.                if (var4 != null) {
  121.                   this.setPixels(this.field_0, this.field_1, this.width, this.height, var5, var4, this.field_1 * var1 + this.field_0, var1);
  122.                   if (var3 != null) {
  123.                      ((PixelStore)var3).setPixels(this.field_0, this.field_1, this.width, this.height, var4, this.field_1 * var1 + this.field_0, var1);
  124.                   }
  125.                }
  126.          }
  127.  
  128.          return true;
  129.       }
  130.    }
  131. }
  132.