1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43:
44: import ;
45: import ;
46: import ;
47:
48:
51: public abstract class ImageWriterSpi extends ImageReaderWriterSpi
52: {
53: public static final Class[] STANDARD_OUTPUT_TYPE =
54: { ImageOutputStream.class };
55:
56: protected Class[] outputTypes;
57: protected String[] readerSpiNames;
58:
59: protected ImageWriterSpi()
60: {
61:
62: }
63:
64: public ImageWriterSpi(String vendorName, String version, String[] names,
65: String[] suffixes, String[] MIMETypes,
66: String writerClassName, Class[] outputTypes,
67: String[] readerSpiNames,
68: boolean supportsStandardStreamMetadataFormat,
69: String nativeStreamMetadataFormatName,
70: String nativeStreamMetadataFormatClassName,
71: String[] extraStreamMetadataFormatNames,
72: String[] extraStreamMetadataFormatClassNames,
73: boolean supportsStandardImageMetadataFormat,
74: String nativeImageMetadataFormatName,
75: String nativeImageMetadataFormatClassName,
76: String[] extraImageMetadataFormatNames,
77: String[] extraImageMetadataFormatClassNames)
78: {
79: super(vendorName, version, names, suffixes, MIMETypes, writerClassName,
80: supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName,
81: nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames,
82: extraStreamMetadataFormatClassNames, supportsStandardImageMetadataFormat,
83: nativeImageMetadataFormatName, nativeImageMetadataFormatClassName,
84: extraImageMetadataFormatNames, extraImageMetadataFormatClassNames);
85:
86: if (writerClassName == null)
87: throw new IllegalArgumentException("writerClassName is null");
88:
89: if (outputTypes == null
90: || outputTypes.length == 0)
91: throw new IllegalArgumentException("outputTypes may not be null or empty");
92:
93: this.outputTypes = outputTypes;
94: this.readerSpiNames = readerSpiNames;
95: }
96:
97: public abstract boolean canEncodeImage(ImageTypeSpecifier type);
98:
99: public boolean canEncodeImage(RenderedImage image)
100: {
101: return canEncodeImage (new ImageTypeSpecifier(image));
102: }
103:
104: public ImageWriter createWriterInstance()
105: throws IOException
106: {
107: return createWriterInstance(null);
108: }
109:
110: public abstract ImageWriter createWriterInstance(Object extension)
111: throws IOException;
112:
113: public String[] getImageReaderSpiNames()
114: {
115: return readerSpiNames;
116: }
117:
118: public Class[] getOutputTypes()
119: {
120: return outputTypes;
121: }
122:
123: public boolean isFormatLossless()
124: {
125: return true;
126: }
127:
128: public boolean isOwnWriter(ImageWriter writer)
129: {
130: if (writer == null)
131: throw new IllegalArgumentException("writer may not be null");
132:
133: return pluginClassName.equals(writer.getClass().getName());
134: }
135: }