/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package com.sun.imageio.plugins.gif;
import java.awt.image.
ColorModel;
import java.awt.image.
SampleModel;
import java.util.
Locale;
import javax.imageio.
ImageTypeSpecifier;
import javax.imageio.
ImageWriter;
import javax.imageio.spi.
ImageWriterSpi;
import javax.imageio.stream.
ImageOutputStream;
import com.sun.imageio.plugins.common.
PaletteBuilder;
public class
GIFImageWriterSpi extends
ImageWriterSpi {
private static final
String vendorName = "Oracle Corporation";
private static final
String version = "1.0";
private static final
String[]
names = { "gif", "GIF" };
private static final
String[]
suffixes = { "gif" };
private static final
String[]
MIMETypes = { "image/gif" };
private static final
String writerClassName =
"com.sun.imageio.plugins.gif.GIFImageWriter";
private static final
String[]
readerSpiNames = {
"com.sun.imageio.plugins.gif.GIFImageReaderSpi"
};
public
GIFImageWriterSpi() {
super(
vendorName,
version,
names,
suffixes,
MIMETypes,
writerClassName,
new
Class[] {
ImageOutputStream.class },
readerSpiNames,
true,
GIFWritableStreamMetadata.
NATIVE_FORMAT_NAME,
"com.sun.imageio.plugins.gif.GIFStreamMetadataFormat",
null, null,
true,
GIFWritableImageMetadata.
NATIVE_FORMAT_NAME,
"com.sun.imageio.plugins.gif.GIFImageMetadataFormat",
null, null
);
}
public boolean
canEncodeImage(
ImageTypeSpecifier type) {
if (
type == null) {
throw new
IllegalArgumentException("type == null!");
}
SampleModel sm =
type.
getSampleModel();
ColorModel cm =
type.
getColorModel();
boolean
canEncode =
sm.
getNumBands() == 1 &&
sm.
getSampleSize(0) <= 8 &&
sm.
getWidth() <= 65535 &&
sm.
getHeight() <= 65535 &&
(
cm == null ||
cm.
getComponentSize()[0] <= 8);
if (
canEncode) {
return true;
} else {
return
PaletteBuilder.
canCreatePalette(
type);
}
}
public
String getDescription(
Locale locale) {
return "Standard GIF image writer";
}
public
ImageWriter createWriterInstance(
Object extension) {
return new
GIFImageWriter(this);
}
}