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