org.apache.xmlgraphics.image.loader.ImageFlavor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xmlgraphics-commons Show documentation
Show all versions of xmlgraphics-commons Show documentation
Apache XML Graphics Commons is a library that consists of several reusable
components used by Apache Batik and Apache FOP. Many of these components
can easily be used separately outside the domains of SVG and XSL-FO.
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id: ImageFlavor.java 829060 2009-10-23 13:42:53Z jeremias $ */
package org.apache.xmlgraphics.image.loader;
import org.apache.xmlgraphics.util.MimeConstants;
/**
* The flavor of an image indicates in which form it is available. A bitmap image loaded into
* memory might be represented as a BufferedImage (indicated by ImageFlavor.BUFFERED_IMAGE).
* It is mostly used by consuming code to indicate what kind of flavors can be processed so a
* processing pipeline can do the necessary loading operations and conversions.
*/
public class ImageFlavor {
/** An image in form of a RenderedImage instance */
public static final ImageFlavor RENDERED_IMAGE = new ImageFlavor("RenderedImage");
/** An image in form of a BufferedImage instance */
public static final ImageFlavor BUFFERED_IMAGE = new SimpleRefinedImageFlavor(
RENDERED_IMAGE, "BufferedImage");
/** An image in form of a W3C DOM instance */
private static final ImageFlavor DOM = new ImageFlavor("DOM");
/** An XML-based image in form of a W3C DOM instance */
public static final ImageFlavor XML_DOM = new MimeEnabledImageFlavor(DOM, "text/xml");
/** An image in form of a raw PNG file/stream */
public static final ImageFlavor RAW = new ImageFlavor("Raw");
/** An image in form of a raw PNG file/stream */
public static final ImageFlavor RAW_PNG = new MimeEnabledImageFlavor(RAW,
MimeConstants.MIME_PNG);
/** An image in form of a raw JPEG/JFIF file/stream */
public static final ImageFlavor RAW_JPEG = new MimeEnabledImageFlavor(RAW,
MimeConstants.MIME_JPEG);
/** An image in form of a raw TIFF file/stream */
public static final ImageFlavor RAW_TIFF = new MimeEnabledImageFlavor(RAW,
MimeConstants.MIME_TIFF);
/** An image in form of a raw EMF (Windows Enhanced Metafile) file/stream */
public static final ImageFlavor RAW_EMF = new MimeEnabledImageFlavor(RAW,
MimeConstants.MIME_EMF);
/** An image in form of a raw EPS (Encapsulated PostScript) file/stream */
public static final ImageFlavor RAW_EPS = new MimeEnabledImageFlavor(RAW,
MimeConstants.MIME_EPS);
/** An image in form of a raw LZW file/stream */
public static final ImageFlavor RAW_LZW = new ImageFlavor("RawLZW");
/** An image in form of a raw CCITTFax stream */
public static final ImageFlavor RAW_CCITTFAX = new ImageFlavor("RawCCITTFax");
/** An image in form of a Graphics2DImage (can be painted on a Graphics2D interface) */
public static final ImageFlavor GRAPHICS2D = new ImageFlavor("Graphics2DImage");
private String name;
/**
* Constructs a new ImageFlavor. Please reuse existing constants wherever possible!
* @param name the name of the flavor (must be unique)
*/
public ImageFlavor(String name) {
this.name = name;
}
/**
* Returns the name of the ImageFlavor.
* @return the flavor name
*/
public String getName() {
return this.name;
}
/**
* Returns the MIME type that the image flavor represents if a MIME type is available. This
* is only applicable to images which can also exist as files. For images flavors like
* decoded in-memory images (Rendered/BufferedImage), this method will return null.
* @return the MIME type or null if no MIME type can be provided (like for in-memory images)
*/
public String getMimeType() {
return null;
}
/**
* Returns the XML namespace URI that the image flavor represents if such a namespace URI
* is available. This is only applicable to images in XML form. Other image types will return
* null.
* @return the XML or null if no MIME type can be provided (like for in-memory images)
*/
public String getNamespace() {
return null;
}
/**
* Indicates whether a particular image flavor is compatible with this one.
* @param flavor the other image flavor
* @return true if the two are compatible
*/
public boolean isCompatible(ImageFlavor flavor) {
return this.equals(flavor);
}
/** {@inheritDoc} */
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
/** {@inheritDoc} */
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ImageFlavor other = (ImageFlavor)obj;
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
return true;
}
/** {@inheritDoc} */
public String toString() {
return getName();
}
}