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 / JPEGImageDecoder.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.2 KB  |  114 lines

  1. package sun.awt.image;
  2.  
  3. import java.awt.image.ColorModel;
  4. import java.awt.image.DirectColorModel;
  5. import java.awt.image.ImageConsumer;
  6. import java.awt.image.IndexColorModel;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.util.Hashtable;
  10.  
  11. public class JPEGImageDecoder extends ImageDecoder {
  12.    private static ColorModel RGBcolormodel;
  13.    private static ColorModel Graycolormodel;
  14.    PixelStore store;
  15.    Hashtable props = new Hashtable();
  16.    private static final int hintflags = 22;
  17.  
  18.    private native void readImage(InputStream var1, byte[] var2) throws ImageFormatException, IOException;
  19.  
  20.    public JPEGImageDecoder(InputStreamImageSource var1, InputStream var2) {
  21.       super(var1, var2);
  22.    }
  23.  
  24.    public synchronized boolean catchupConsumer(InputStreamImageSource var1, ImageConsumer var2) {
  25.       return this.store == null || this.store.replay(var1, var2);
  26.    }
  27.  
  28.    public synchronized void makeStore(int var1, int var2, boolean var3) {
  29.       if (var3) {
  30.          this.store = new PixelStore8(var1, var2);
  31.       } else {
  32.          this.store = new PixelStore32(var1, var2);
  33.       }
  34.    }
  35.  
  36.    private static void error(String var0) throws ImageFormatException {
  37.       throw new ImageFormatException(var0);
  38.    }
  39.  
  40.    public boolean sendHeaderInfo(int var1, int var2, boolean var3, boolean var4) {
  41.       ((ImageDecoder)this).setDimensions(var1, var2);
  42.       this.makeStore(var1, var2, var3);
  43.       ((ImageDecoder)this).setProperties(this.props);
  44.       this.store.setProperties(this.props);
  45.       ColorModel var5 = var3 ? Graycolormodel : RGBcolormodel;
  46.       ((ImageDecoder)this).setColorModel(var5);
  47.       this.store.setColorModel(var5);
  48.       int var6 = 22;
  49.       if (!var4) {
  50.          var6 |= 8;
  51.       }
  52.  
  53.       ((ImageDecoder)this).setHints(22);
  54.       this.store.setHints(22);
  55.       ((ImageDecoder)this).headerComplete();
  56.       return true;
  57.    }
  58.  
  59.    public boolean sendPixels(int[] var1, int var2) {
  60.       int var3 = ((ImageDecoder)this).setPixels(0, var2, var1.length, 1, RGBcolormodel, var1, 0, var1.length);
  61.       if (var3 > 0) {
  62.          this.store.setPixels(0, var2, var1.length, 1, var1, 0, var1.length);
  63.       } else {
  64.          super.aborted = true;
  65.       }
  66.  
  67.       return !super.aborted;
  68.    }
  69.  
  70.    public boolean sendPixels(byte[] var1, int var2) {
  71.       int var3 = ((ImageDecoder)this).setPixels(0, var2, var1.length, 1, Graycolormodel, var1, 0, var1.length);
  72.       if (var3 > 0) {
  73.          this.store.setPixels(0, var2, var1.length, 1, var1, 0, var1.length);
  74.       } else {
  75.          super.aborted = true;
  76.       }
  77.  
  78.       return !super.aborted;
  79.    }
  80.  
  81.    public void produceImage() throws IOException, ImageFormatException {
  82.       try {
  83.          this.readImage(super.input, new byte[1024]);
  84.          if (!super.aborted) {
  85.             this.store.imageComplete();
  86.             if (this.store.getBitState() != 2) {
  87.                super.source.setPixelStore(this, this.store);
  88.             }
  89.  
  90.             ((ImageDecoder)this).imageComplete(3, true);
  91.          }
  92.       } catch (IOException var6) {
  93.          if (!super.aborted) {
  94.             throw var6;
  95.          }
  96.       } finally {
  97.          ((ImageDecoder)this).close();
  98.       }
  99.  
  100.    }
  101.  
  102.    static {
  103.       System.loadLibrary("jpeg");
  104.       RGBcolormodel = new DirectColorModel(24, 16711680, 65280, 255);
  105.       byte[] var0 = new byte[256];
  106.  
  107.       for(int var1 = 0; var1 < 256; ++var1) {
  108.          var0[var1] = (byte)var1;
  109.       }
  110.  
  111.       Graycolormodel = new IndexColorModel(8, 256, var0, var0, var0);
  112.    }
  113. }
  114.