home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.image;
-
- import java.awt.image.ColorModel;
- import java.awt.image.IndexColorModel;
-
- class GifFrame {
- private static final boolean verbose = false;
- private static IndexColorModel trans_model;
- static final int DISPOSAL_NONE = 0;
- static final int DISPOSAL_SAVE = 1;
- static final int DISPOSAL_BGCOLOR = 2;
- static final int DISPOSAL_PREVIOUS = 3;
- GifImageDecoder decoder;
- int disposal_method;
- int delay;
- IndexColorModel model;
- // $FF: renamed from: x int
- int field_0;
- // $FF: renamed from: y int
- int field_1;
- int width;
- int height;
- boolean initialframe;
-
- public GifFrame(GifImageDecoder var1, int var2, int var3, boolean var4, IndexColorModel var5, int var6, int var7, int var8, int var9) {
- this.decoder = var1;
- this.disposal_method = var2;
- this.delay = var3;
- this.model = var5;
- this.initialframe = var4;
- this.field_0 = var6;
- this.field_1 = var7;
- this.width = var8;
- this.height = var9;
- }
-
- private void setPixels(int var1, int var2, int var3, int var4, ColorModel var5, byte[] var6, int var7, int var8) {
- this.decoder.setPixels(var1, var2, var3, var4, var5, var6, var7, var8);
- }
-
- public boolean dispose() {
- if (this.decoder.imageComplete(2, false) == 0) {
- return false;
- } else {
- if (this.delay > 0) {
- try {
- Thread.sleep((long)this.delay);
- } catch (InterruptedException var9) {
- return false;
- }
- } else {
- Thread.yield();
- }
-
- int var1 = this.decoder.global_width;
- int var2 = this.decoder.global_height;
- PixelStore8 var3 = this.decoder.store;
- if (this.field_0 < 0) {
- this.width += this.field_0;
- this.field_0 = 0;
- }
-
- if (this.field_0 + this.width > var1) {
- this.width = var1 - this.field_0;
- }
-
- if (this.width <= 0) {
- this.disposal_method = 0;
- } else {
- if (this.field_1 < 0) {
- this.height += this.field_1;
- this.field_1 = 0;
- }
-
- if (this.field_1 + this.height > var2) {
- this.height = var2 - this.field_1;
- }
-
- if (this.height <= 0) {
- this.disposal_method = 0;
- }
- }
-
- switch (this.disposal_method) {
- case 1:
- this.decoder.saved_model = this.model;
- break;
- case 2:
- byte var6;
- if (this.model.getTransparentPixel() < 0) {
- this.decoder.cancatchup = false;
- var3 = null;
- this.decoder.store = null;
- this.model = trans_model;
- if (this.model == null) {
- this.model = new IndexColorModel(8, 1, new byte[4], 0, true);
- trans_model = this.model;
- }
-
- var6 = 0;
- } else {
- var6 = (byte)this.model.getTransparentPixel();
- }
-
- byte[] var7 = new byte[this.width];
- if (var6 != 0) {
- for(int var8 = 0; var8 < this.width; ++var8) {
- var7[var8] = var6;
- }
- }
-
- this.setPixels(this.field_0, this.field_1, this.width, this.height, this.model, var7, 0, 0);
- if (var3 != null) {
- ((PixelStore)var3).setPixels(this.field_0, this.field_1, this.width, this.height, var7, 0, 0);
- }
- break;
- case 3:
- byte[] var4 = this.decoder.saved_image;
- IndexColorModel var5 = this.decoder.saved_model;
- if (var4 != null) {
- this.setPixels(this.field_0, this.field_1, this.width, this.height, var5, var4, this.field_1 * var1 + this.field_0, var1);
- if (var3 != null) {
- ((PixelStore)var3).setPixels(this.field_0, this.field_1, this.width, this.height, var4, this.field_1 * var1 + this.field_0, var1);
- }
- }
- }
-
- return true;
- }
- }
- }
-