1:
37:
38:
39: package ;
40:
41: import ;
42:
43: import ;
44: import ;
45: import ;
46:
47: public class BMPImageWriterSpi
48: extends ImageWriterSpi
49: {
50:
51: static final String vendorName = "GNU";
52: static final String version = "0.1";
53: static final String writerClassName = "gnu.javax.imageio.bmp.BMPImageWriter";
54: static final String[] names = { "bmp", "BMP", "Microsoft Windows BMP" };
55: static final String[] suffixes = { ".bmp", ".bm" };
56: static final String[] MIMETypes = { "image/bmp", "image/x-windows-bmp" };
57: static final String[] readerSpiNames = { "gnu.javax.imageio.bmp.BMPImageReaderSpi" };
58:
59: static final boolean supportsStandardStreamMetadataFormat = false;
60: static final String nativeStreamMetadataFormatName = null;
61: static final String nativeStreamMetadataFormatClassName = null;
62: static final String[] extraStreamMetadataFormatNames = null;
63: static final String[] extraStreamMetadataFormatClassNames = null;
64: static final boolean supportsStandardImageMetadataFormat = false;
65: static final String nativeImageMetadataFormatName = null;
66: static final String nativeImageMetadataFormatClassName = null;
67: static final String[] extraImageMetadataFormatNames = null;
68: static final String[] extraImageMetadataFormatClassNames = null;
69:
70: private BMPImageWriter writerInstance;
71:
72: public BMPImageWriterSpi()
73: {
74: super(vendorName, version, names, suffixes, MIMETypes, writerClassName,
75: STANDARD_OUTPUT_TYPE, readerSpiNames, supportsStandardStreamMetadataFormat,
76: nativeStreamMetadataFormatName, nativeStreamMetadataFormatClassName,
77: extraStreamMetadataFormatNames, extraStreamMetadataFormatClassNames,
78: supportsStandardImageMetadataFormat, nativeImageMetadataFormatName,
79: nativeImageMetadataFormatClassName, extraImageMetadataFormatNames,
80: extraImageMetadataFormatClassNames);
81: }
82:
83:
89: public boolean canEncodeImage(ImageTypeSpecifier type)
90: {
91: if (type == null)
92: return false;
93:
94: BMPInfoHeader ih = writerInstance.infoHeader;
95: if (ih != null)
96: {
97: int compressionType = ih.getCompression();
98: int bytes = type.getColorModel().getPixelSize();
99: if ((compressionType == BMPInfoHeader.BI_RLE4 && (bytes != 4 || bytes != 8))
100: || (compressionType == BMPInfoHeader.BI_RGB && ((bytes != 1
101: || bytes != 4
102: || bytes != 8
103: || bytes != 16
104: || bytes != 24
105: || bytes != 32))))
106: return false;
107: }
108: return true;
109: }
110:
111:
117: public ImageWriter createWriterInstance(Object extension)
118: {
119: if (extension != null && extension instanceof ImageWriterSpi)
120: writerInstance = new BMPImageWriter((ImageWriterSpi) extension);
121: else
122: writerInstance = new BMPImageWriter(this);
123: return writerInstance;
124: }
125:
126:
129: public BMPImageWriter getWriterInstance()
130: {
131: if (writerInstance != null)
132: return writerInstance;
133: return (BMPImageWriter) createWriterInstance(null);
134: }
135:
136:
143: public String getDescription(Locale locale)
144: {
145: return "Microsoft BMP v3";
146: }
147:
148: }