1: 
  37: 
  38: package ;
  39: 
  40: import ;
  41: import ;
  42: import ;
  43: import ;
  44: import ;
  45: import ;
  46: import ;
  47: 
  48: public class JPEGImageReader extends ImageReader
  49: {
  50:   JPEGDecoder decoder;
  51: 
  52:   protected JPEGImageReader(ImageReaderSpi originatingProvider)
  53:   {
  54:     super(originatingProvider);
  55:     System.out.println("JPEGIMAGEREADER!!!");
  56:   }
  57: 
  58:   
  59:   public int getHeight(int imageIndex)
  60:     throws IOException
  61:   {
  62:     checkIndex(imageIndex);
  63:     decodeStream();
  64:     return decoder.getHeight();
  65:   }
  66: 
  67:   public IIOMetadata getImageMetadata(int imageIndex)
  68:     throws IOException
  69:   {
  70:     
  71:     checkIndex(imageIndex);
  72:     return null;
  73:   }
  74: 
  75:   public Iterator getImageTypes(int imageIndex)
  76:     throws IOException
  77:   {
  78:     return null;
  79:   }
  80: 
  81:   public int getNumImages(boolean allowSearch)
  82:     throws IOException
  83:   {
  84:     return 1;
  85:   }
  86: 
  87:   public IIOMetadata getStreamMetadata()
  88:     throws IOException
  89:   {
  90:     
  91:     return null;
  92:   }
  93: 
  94:   public int getWidth(int imageIndex)
  95:     throws IOException
  96:   {
  97:     checkIndex(imageIndex);
  98:     decodeStream();
  99:     return decoder.getWidth();
 100:   }
 101: 
 102:   public BufferedImage read(int imageIndex, ImageReadParam param)
 103:     throws IOException
 104:   {
 105:     checkIndex(imageIndex);
 106:     decodeStream();
 107:     return decoder.getImage();
 108:   }
 109: 
 110:   
 111:   private void checkIndex(int imageIndex)
 112:     throws IndexOutOfBoundsException
 113:   {
 114:     if (imageIndex != 0)
 115:       throw new IndexOutOfBoundsException();
 116:   }
 117: 
 118:   private void checkStream() throws IOException
 119:   {
 120:     if (!(input instanceof ImageInputStream))
 121:       throw new IllegalStateException("Input not an ImageInputStream.");
 122:     if(input == null)
 123:       throw new IllegalStateException("No input stream.");
 124:   }
 125: 
 126:   private void decodeStream()
 127:     throws IOException, IIOException
 128:   {
 129:     System.out.println("DECONDING 1");
 130:     if (decoder != null)
 131:       return;
 132: 
 133:     System.out.println("DECONDING 2");
 134:     checkStream();
 135: 
 136:     System.out.println("DECONDING 3");
 137:     decoder = new JPEGDecoder((ImageInputStream)input);
 138:     System.out.println("DECONDING 4");
 139:     decoder.decode();
 140:   }
 141: }