home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.image;
-
- import java.awt.image.ColorModel;
- import java.awt.image.DirectColorModel;
- import java.awt.image.ImageConsumer;
- import java.awt.image.IndexColorModel;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Hashtable;
-
- public class JPEGImageDecoder extends ImageDecoder {
- private static ColorModel RGBcolormodel;
- private static ColorModel Graycolormodel;
- PixelStore store;
- Hashtable props = new Hashtable();
- private static final int hintflags = 22;
-
- private native void readImage(InputStream var1, byte[] var2) throws ImageFormatException, IOException;
-
- public JPEGImageDecoder(InputStreamImageSource var1, InputStream var2) {
- super(var1, var2);
- }
-
- public synchronized boolean catchupConsumer(InputStreamImageSource var1, ImageConsumer var2) {
- return this.store == null || this.store.replay(var1, var2);
- }
-
- public synchronized void makeStore(int var1, int var2, boolean var3) {
- if (var3) {
- this.store = new PixelStore8(var1, var2);
- } else {
- this.store = new PixelStore32(var1, var2);
- }
- }
-
- private static void error(String var0) throws ImageFormatException {
- throw new ImageFormatException(var0);
- }
-
- public boolean sendHeaderInfo(int var1, int var2, boolean var3, boolean var4) {
- ((ImageDecoder)this).setDimensions(var1, var2);
- this.makeStore(var1, var2, var3);
- ((ImageDecoder)this).setProperties(this.props);
- this.store.setProperties(this.props);
- ColorModel var5 = var3 ? Graycolormodel : RGBcolormodel;
- ((ImageDecoder)this).setColorModel(var5);
- this.store.setColorModel(var5);
- int var6 = 22;
- if (!var4) {
- var6 |= 8;
- }
-
- ((ImageDecoder)this).setHints(22);
- this.store.setHints(22);
- ((ImageDecoder)this).headerComplete();
- return true;
- }
-
- public boolean sendPixels(int[] var1, int var2) {
- int var3 = ((ImageDecoder)this).setPixels(0, var2, var1.length, 1, RGBcolormodel, var1, 0, var1.length);
- if (var3 > 0) {
- this.store.setPixels(0, var2, var1.length, 1, var1, 0, var1.length);
- } else {
- super.aborted = true;
- }
-
- return !super.aborted;
- }
-
- public boolean sendPixels(byte[] var1, int var2) {
- int var3 = ((ImageDecoder)this).setPixels(0, var2, var1.length, 1, Graycolormodel, var1, 0, var1.length);
- if (var3 > 0) {
- this.store.setPixels(0, var2, var1.length, 1, var1, 0, var1.length);
- } else {
- super.aborted = true;
- }
-
- return !super.aborted;
- }
-
- public void produceImage() throws IOException, ImageFormatException {
- try {
- this.readImage(super.input, new byte[1024]);
- if (!super.aborted) {
- this.store.imageComplete();
- if (this.store.getBitState() != 2) {
- super.source.setPixelStore(this, this.store);
- }
-
- ((ImageDecoder)this).imageComplete(3, true);
- }
- } catch (IOException var6) {
- if (!super.aborted) {
- throw var6;
- }
- } finally {
- ((ImageDecoder)this).close();
- }
-
- }
-
- static {
- System.loadLibrary("jpeg");
- RGBcolormodel = new DirectColorModel(24, 16711680, 65280, 255);
- byte[] var0 = new byte[256];
-
- for(int var1 = 0; var1 < 256; ++var1) {
- var0[var1] = (byte)var1;
- }
-
- Graycolormodel = new IndexColorModel(8, 256, var0, var0, var0);
- }
- }
-