/*
* 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.
/**
* 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 /** 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 /** 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 /** 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 /** 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 /** 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 /** 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 /** 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 /** 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 /** 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 /** 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 /** 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 /** 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) /** 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!
Params: - name – the name of the flavor (must be unique)
/**
* 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.
Returns: the flavor 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.
Returns: the MIME type or null if no MIME type can be provided (like for in-memory images)
/**
* 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.
Returns: the XML or null if no MIME type can be provided (like for in-memory images)
/**
* 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.
Params: - flavor – the other image flavor
Returns: true if the two are compatible
/**
* 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} /** {@inheritDoc} */
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
{@inheritDoc} /** {@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} /** {@inheritDoc} */
public String toString() {
return getName();
}
}