home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / image / ImageDecoder.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.1 KB  |  168 lines

  1. package sun.awt.image;
  2.  
  3. import java.awt.image.ColorModel;
  4. import java.awt.image.ImageConsumer;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.security.AccessController;
  8. import java.util.Hashtable;
  9.  
  10. public abstract class ImageDecoder {
  11.    InputStreamImageSource source;
  12.    InputStream input;
  13.    Thread feeder;
  14.    protected boolean aborted;
  15.    protected boolean finished;
  16.    ImageConsumerQueue queue;
  17.    ImageDecoder next;
  18.  
  19.    public ImageDecoder(InputStreamImageSource var1, InputStream var2) {
  20.       this.source = var1;
  21.       this.input = var2;
  22.       this.feeder = Thread.currentThread();
  23.    }
  24.  
  25.    public boolean isConsumer(ImageConsumer var1) {
  26.       return ImageConsumerQueue.isConsumer(this.queue, var1);
  27.    }
  28.  
  29.    public void removeConsumer(ImageConsumer var1) {
  30.       this.queue = ImageConsumerQueue.removeConsumer(this.queue, var1, false);
  31.       if (!this.finished && this.queue == null) {
  32.          this.abort();
  33.       }
  34.  
  35.    }
  36.  
  37.    protected ImageConsumerQueue nextConsumer(ImageConsumerQueue var1) {
  38.       InputStreamImageSource var2 = this.source;
  39.       synchronized(var2) {
  40.          if (this.aborted) {
  41.             Object var3 = null;
  42.             return (ImageConsumerQueue)var3;
  43.          } else {
  44.             for(ImageConsumerQueue var6 = var1 == null ? this.queue : var1.next; var6 != null; var6 = var6.next) {
  45.                if (var6.interested) {
  46.                   return var6;
  47.                }
  48.             }
  49.  
  50.             return null;
  51.          }
  52.       }
  53.    }
  54.  
  55.    protected int setDimensions(int var1, int var2) {
  56.       ImageConsumerQueue var3 = null;
  57.  
  58.       int var4;
  59.       for(var4 = 0; (var3 = this.nextConsumer(var3)) != null; ++var4) {
  60.          var3.consumer.setDimensions(var1, var2);
  61.       }
  62.  
  63.       return var4;
  64.    }
  65.  
  66.    protected int setProperties(Hashtable var1) {
  67.       ImageConsumerQueue var2 = null;
  68.  
  69.       int var3;
  70.       for(var3 = 0; (var2 = this.nextConsumer(var2)) != null; ++var3) {
  71.          var2.consumer.setProperties(var1);
  72.       }
  73.  
  74.       return var3;
  75.    }
  76.  
  77.    protected int setColorModel(ColorModel var1) {
  78.       ImageConsumerQueue var2 = null;
  79.  
  80.       int var3;
  81.       for(var3 = 0; (var2 = this.nextConsumer(var2)) != null; ++var3) {
  82.          var2.consumer.setColorModel(var1);
  83.       }
  84.  
  85.       return var3;
  86.    }
  87.  
  88.    protected int setHints(int var1) {
  89.       ImageConsumerQueue var2 = null;
  90.  
  91.       int var3;
  92.       for(var3 = 0; (var2 = this.nextConsumer(var2)) != null; ++var3) {
  93.          var2.consumer.setHints(var1);
  94.       }
  95.  
  96.       return var3;
  97.    }
  98.  
  99.    protected void headerComplete() {
  100.       this.feeder.setPriority(3);
  101.    }
  102.  
  103.    protected int setPixels(int var1, int var2, int var3, int var4, ColorModel var5, byte[] var6, int var7, int var8) {
  104.       this.source.latchConsumers(this);
  105.       ImageConsumerQueue var9 = null;
  106.  
  107.       int var10;
  108.       for(var10 = 0; (var9 = this.nextConsumer(var9)) != null; ++var10) {
  109.          var9.consumer.setPixels(var1, var2, var3, var4, var5, var6, var7, var8);
  110.       }
  111.  
  112.       return var10;
  113.    }
  114.  
  115.    protected int setPixels(int var1, int var2, int var3, int var4, ColorModel var5, int[] var6, int var7, int var8) {
  116.       this.source.latchConsumers(this);
  117.       ImageConsumerQueue var9 = null;
  118.  
  119.       int var10;
  120.       for(var10 = 0; (var9 = this.nextConsumer(var9)) != null; ++var10) {
  121.          var9.consumer.setPixels(var1, var2, var3, var4, var5, var6, var7, var8);
  122.       }
  123.  
  124.       return var10;
  125.    }
  126.  
  127.    protected int imageComplete(int var1, boolean var2) {
  128.       this.source.latchConsumers(this);
  129.       if (var2) {
  130.          this.finished = true;
  131.          this.source.doneDecoding(this);
  132.       }
  133.  
  134.       ImageConsumerQueue var3 = null;
  135.  
  136.       int var4;
  137.       for(var4 = 0; (var3 = this.nextConsumer(var3)) != null; ++var4) {
  138.          var3.consumer.imageComplete(var1);
  139.       }
  140.  
  141.       return var4;
  142.    }
  143.  
  144.    public void replayConsumer(ImageConsumer var1) {
  145.    }
  146.  
  147.    public abstract boolean catchupConsumer(InputStreamImageSource var1, ImageConsumer var2);
  148.  
  149.    public abstract void produceImage() throws IOException, ImageFormatException;
  150.  
  151.    public void abort() {
  152.       this.aborted = true;
  153.       this.source.doneDecoding(this);
  154.       this.close();
  155.       AccessController.doPrivileged(new 1(this));
  156.    }
  157.  
  158.    public synchronized void close() {
  159.       if (this.input != null) {
  160.          try {
  161.             this.input.close();
  162.          } catch (IOException var2) {
  163.          }
  164.       }
  165.  
  166.    }
  167. }
  168.