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: }