Mercurial > hg > digilib-old
view common/src/main/java/digilib/image/DocuImageImpl.java @ 1053:86ba65b86d52
forgot to increase the version number
author | hertzhaft |
---|---|
date | Mon, 26 Mar 2012 23:22:33 +0200 |
parents | 4e368c85cce4 |
children |
line wrap: on
line source
/* DocuImage -- General image interface class implementation Digital Image Library servlet components Copyright (C) 2001, 2002, 2003 Robert Casties (robcast@mail.berlios.de) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Please read license.txt for the full details. A copy of the GPL may be found at http://www.gnu.org/copyleft/lgpl.html You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package digilib.image; import java.awt.Image; import java.awt.Rectangle; import java.io.IOException; import java.io.OutputStream; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.apache.log4j.Logger; import digilib.io.FileOpException; import digilib.io.ImageInput; import digilib.util.ImageSize; /** * Simple abstract implementation of the <code>DocuImage</code> interface. * * This implementation provides basic functionality for the utility methods like * <code>getKnownFileTypes</code>. Image methods like <code>loadImage</code>, * <code>writeImage</code>, <code>getWidth</code>, <code>getHeight</code>, * <code>crop</code> and <code>scale</code> must be implemented by derived * classes. */ public abstract class DocuImageImpl implements DocuImage { /** DocuImage version */ public static final String version = "DocuImageImpl 2.1"; /** logger */ protected static final Logger logger = Logger.getLogger(DocuImage.class); /** Interpolation quality. */ protected int quality = 0; /** epsilon for float comparisons. */ public static final double epsilon = 1e-5; /** image size */ protected ImageSize imgSize = null; /** ImageInput that was read */ protected ImageInput input; /** * Returns the version. * @return the version */ public String getVersion() { return version; } /** * Returns the quality. * * @return int */ public int getQuality() { return quality; } /** * Sets the quality. * * @param quality * The quality to set */ public void setQuality(int quality) { this.quality = quality; } /** * Crop and scale the current image. * * The current image is cropped to a rectangle of width, height at position * x_off, y_off. The resulting image is scaled by the factor scale using the * interpolation quality qual (0=worst). * * @param x_off * X offset of the crop rectangle in pixel. * @param y_off * Y offset of the crop rectangle in pixel. * @param width * Width of the crop rectangle in pixel. * @param height * Height of the crop rectangle in pixel. * @param scale * Scaling factor. * @param qual * Interpolation quality (0=worst). * @throws ImageOpException * Exception thrown on any error. */ public void cropAndScale(int x_off, int y_off, int width, int height, double scale, int qual) throws ImageOpException { // default implementation: first crop, then scale setQuality(qual); crop(x_off, y_off, width, height); scale(scale, scale); } /* * (non-Javadoc) * * @see digilib.image.DocuImage#getMimetype() */ public String getMimetype() { if (input != null) { return input.getMimetype(); } return null; } /* * (non-Javadoc) * * @see digilib.image.DocuImage#identify(digilib.io.ImageFile) */ public ImageInput identify(ImageInput ii) throws IOException { // just a do-nothing implementation return null; } public void rotate(double angle) throws ImageOpException { // just a do-nothing implementation } public void mirror(double angle) throws ImageOpException { // just a do-nothing implementation } public void enhance(float mult, float add) throws ImageOpException { // just a do-nothing implementation } public boolean isSubimageSupported() { // partial loading not supported per default return false; } public void loadSubimage(ImageInput ii, Rectangle region, int subsample) throws FileOpException { // empty implementation } public void enhanceRGB(float[] rgbm, float[] rgba) throws ImageOpException { // emtpy implementation } public void colorOp(ColorOp op) throws ImageOpException { // emtpy implementation } public void dispose() { // emtpy implementation } public Iterator<String> getSupportedFormats() { List<String> empty = new LinkedList<String>(); return empty.iterator(); } public void crop(int xoff, int yoff, int width, int height) throws ImageOpException { // emtpy implementation } public Image getAwtImage() { // emtpy implementation return null; } public int getHeight() { ImageSize is = getSize(); if (is != null) { return is.getHeight(); } return 0; } public int getWidth() { ImageSize is = getSize(); if (is != null) { return is.getWidth(); } return 0; } public ImageSize getSize() { return imgSize; } public abstract void loadImage(ImageInput ii) throws FileOpException; public abstract void scale(double scaleX, double scaleY) throws ImageOpException; public abstract void writeImage(String mt, OutputStream ostream) throws ImageOpException, FileOpException; }