blob: 0528d250b11d41d435b871262fd86dce2c74a925 [file] [log] [blame]
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -08001/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17/**
18 * @author Rustem V. Rafikov
19 * @version $Revision: 1.3 $
20 */
21
22package javax.imageio.spi;
23
24import javax.imageio.stream.ImageInputStream;
25import javax.imageio.ImageReader;
26import java.io.IOException;
27
28/**
29 * The ImageReaderSpi abstract class is a service provider interface (SPI) for
30 * ImageReaders.
31 *
32 * @since Android 1.0
33 */
34public abstract class ImageReaderSpi extends ImageReaderWriterSpi {
35
36 /**
37 * The STANDARD_INPUT_TYPE contains ImageInputStream.class.
38 */
39 public static final Class[] STANDARD_INPUT_TYPE = new Class[] {
40 ImageInputStream.class
41 };
42
43 /**
44 * The input types.
45 */
46 protected Class[] inputTypes;
47
48 /**
49 * The writer SPI names.
50 */
51 protected String[] writerSpiNames;
52
53 /**
54 * Instantiates a new ImageReaderSpi.
55 */
56 protected ImageReaderSpi() {
57 throw new UnsupportedOperationException("Not supported yet");
58 }
59
60 /**
61 * Instantiates a new ImageReaderSpi.
62 *
63 * @param vendorName
64 * the vendor name.
65 * @param version
66 * the version.
67 * @param names
68 * the format names.
69 * @param suffixes
70 * the array of strings representing the file suffixes.
71 * @param MIMETypes
72 * the an array of strings representing MIME types.
73 * @param pluginClassName
74 * the plug-in class name.
75 * @param inputTypes
76 * the input types.
77 * @param writerSpiNames
78 * the array of strings with class names of all associated
79 * ImageWriters.
80 * @param supportsStandardStreamMetadataFormat
81 * the value indicating if stream metadata can be described by
82 * standard metadata format.
83 * @param nativeStreamMetadataFormatName
84 * the native stream metadata format name, returned by
85 * getNativeStreamMetadataFormatName.
86 * @param nativeStreamMetadataFormatClassName
87 * the native stream metadata format class name, returned by
88 * getNativeStreamMetadataFormat.
89 * @param extraStreamMetadataFormatNames
90 * the extra stream metadata format names, returned by
91 * getExtraStreamMetadataFormatNames.
92 * @param extraStreamMetadataFormatClassNames
93 * the extra stream metadata format class names, returned by
94 * getStreamMetadataFormat.
95 * @param supportsStandardImageMetadataFormat
96 * the value indicating if image metadata can be described by
97 * standard metadata format.
98 * @param nativeImageMetadataFormatName
99 * the native image metadata format name, returned by
100 * getNativeImageMetadataFormatName.
101 * @param nativeImageMetadataFormatClassName
102 * the native image metadata format class name, returned by
103 * getNativeImageMetadataFormat.
104 * @param extraImageMetadataFormatNames
105 * the extra image metadata format names, returned by
106 * getExtraImageMetadataFormatNames.
107 * @param extraImageMetadataFormatClassNames
108 * the extra image metadata format class names, returned by
109 * getImageMetadataFormat.
110 */
111 public ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes,
112 String[] MIMETypes, String pluginClassName, Class[] inputTypes,
113 String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat,
114 String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName,
115 String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames,
116 boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName,
117 String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames,
118 String[] extraImageMetadataFormatClassNames) {
119 super(vendorName, version, names, suffixes, MIMETypes, pluginClassName,
120 supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName,
121 nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames,
122 extraStreamMetadataFormatClassNames, supportsStandardImageMetadataFormat,
123 nativeImageMetadataFormatName, nativeImageMetadataFormatClassName,
124 extraImageMetadataFormatNames, extraImageMetadataFormatClassNames);
125
126 if (inputTypes == null || inputTypes.length == 0) {
127 throw new NullPointerException("input types array cannot be NULL or empty");
128 }
129 this.inputTypes = inputTypes;
130 this.writerSpiNames = writerSpiNames;
131 }
132
133 /**
134 * Gets an array of Class objects whose types can be used as input for this
135 * reader.
136 *
137 * @return the input types.
138 */
139 public Class[] getInputTypes() {
140 return inputTypes;
141 }
142
143 /**
144 * Returns true if the format of source object is supported by this reader.
145 *
146 * @param source
147 * the source object to be decoded (for example an
148 * ImageInputStream).
149 * @return true, if the format of source object is supported by this reader,
150 * false otherwise.
151 * @throws IOException
152 * if an I/O exception has occurred.
153 */
154 public abstract boolean canDecodeInput(Object source) throws IOException;
155
156 /**
157 * Returns an instance of the ImageReader implementation for this service
158 * provider.
159 *
160 * @return the ImageReader.
161 * @throws IOException
162 * if an I/O exception has occurred.
163 */
164 public ImageReader createReaderInstance() throws IOException {
165 return createReaderInstance(null);
166 }
167
168 /**
169 * Returns an instance of the ImageReader implementation for this service
170 * provider.
171 *
172 * @param extension
173 * the a plug-in specific extension object, or null.
174 * @return the ImageReader.
175 * @throws IOException
176 * if an I/O exception has occurred.
177 */
178 public abstract ImageReader createReaderInstance(Object extension) throws IOException;
179
180 /**
181 * Checks whether or not the specified ImageReader object is an instance of
182 * the ImageReader associated with this service provider or not.
183 *
184 * @param reader
185 * the ImageReader.
186 * @return true, if the specified ImageReader object is an instance of the
187 * ImageReader associated with this service provider, false
188 * otherwise.
189 */
190 public boolean isOwnReader(ImageReader reader) {
191 throw new UnsupportedOperationException("Not supported yet");
192 }
193
194 /**
195 * Gets an array of strings with names of the ImageWriterSpi classes that
196 * support the internal metadata representation used by the ImageReader of
197 * this service provider, or null if there are no such ImageWriters.
198 *
199 * @return the array of strings with names of the ImageWriterSpi classes.
200 */
201 public String[] getImageWriterSpiNames() {
202 throw new UnsupportedOperationException("Not supported yet");
203 }
204}