# HG changeset patch
# User robcast
# Date 1292842675 -3600
# Node ID 51b9b153e99a45040ac65ace632e3895037c1b8d
# Parent c6dcf0a5a32bd17559f783e79391a7d914e99bba
starting stream support
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/image/DocuImage.java
--- a/servlet/src/digilib/image/DocuImage.java Mon Dec 20 09:39:14 2010 +0100
+++ b/servlet/src/digilib/image/DocuImage.java Mon Dec 20 11:57:55 2010 +0100
@@ -27,6 +27,7 @@
import digilib.io.ImageFile;
import digilib.io.FileOpException;
+import digilib.io.ImageInput;
/** The basic class for the representation of a digilib image.
*
@@ -44,7 +45,7 @@
*/
public void loadImage(ImageFile f) throws FileOpException;
- /** This DocuImage support the loadSubImage operation.
+ /** This DocuImage supports the loadSubImage operation.
*
* @return boolean
*/
@@ -214,7 +215,7 @@
/**
* Check image size and type and store in ImageFile f
*/
- public ImageFile identify(ImageFile imgf) throws IOException;
+ public ImageInput identify(ImageFile imgf) throws IOException;
/**
* Returns a list of supported image formats
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/image/DocuImageImpl.java
--- a/servlet/src/digilib/image/DocuImageImpl.java Mon Dec 20 09:39:14 2010 +0100
+++ b/servlet/src/digilib/image/DocuImageImpl.java Mon Dec 20 11:57:55 2010 +0100
@@ -32,6 +32,7 @@
import digilib.io.FileOpException;
import digilib.io.ImageFile;
+import digilib.io.ImageInput;
/** Simple abstract implementation of the DocuImage
interface.
*
@@ -101,7 +102,7 @@
/* (non-Javadoc)
* @see digilib.image.DocuImage#identify(digilib.io.ImageFile)
*/
- public ImageFile identify(ImageFile imgf) throws IOException {
+ public ImageInput identify(ImageFile imgf) throws IOException {
// just a do-nothing implementation
return null;
}
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/image/ImageInfoDocuImage.java
--- a/servlet/src/digilib/image/ImageInfoDocuImage.java Mon Dec 20 09:39:14 2010 +0100
+++ b/servlet/src/digilib/image/ImageInfoDocuImage.java Mon Dec 20 11:57:55 2010 +0100
@@ -10,6 +10,7 @@
import org.marcoschmidt.image.ImageInfo;
import digilib.io.ImageFile;
+import digilib.io.ImageInput;
/** Simple abstract implementation of the DocuImage
interface.
* Implements only the identify method using the ImageInfo class.
@@ -19,7 +20,7 @@
public abstract class ImageInfoDocuImage extends DocuImageImpl {
/** Check image size and type and store in ImageFile f */
- public ImageFile identify(ImageFile imgf) throws IOException {
+ public ImageInput identify(ImageFile imgf) throws IOException {
// fileset to store the information
File f = imgf.getFile();
if (f == null) {
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/image/ImageLoaderDocuImage.java
--- a/servlet/src/digilib/image/ImageLoaderDocuImage.java Mon Dec 20 09:39:14 2010 +0100
+++ b/servlet/src/digilib/image/ImageLoaderDocuImage.java Mon Dec 20 11:57:55 2010 +0100
@@ -50,6 +50,7 @@
import digilib.io.FileOps;
import digilib.io.ImageFile;
import digilib.io.ImageFileset;
+import digilib.io.ImageInput;
/** Implementation of DocuImage using the ImageLoader API of Java 1.4 and Java2D. */
public class ImageLoaderDocuImage extends ImageInfoDocuImage {
@@ -123,9 +124,9 @@
}
/** Check image size and type and store in ImageFile f */
- public ImageFile identify(ImageFile imageFile) throws IOException {
+ public ImageInput identify(ImageFile imageFile) throws IOException {
// try parent method first
- ImageFile imf = super.identify(imageFile);
+ ImageInput imf = super.identify(imageFile);
if (imf != null) {
return imf;
}
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/image/JAIDocuImage.java
--- a/servlet/src/digilib/image/JAIDocuImage.java Mon Dec 20 09:39:14 2010 +0100
+++ b/servlet/src/digilib/image/JAIDocuImage.java Mon Dec 20 11:57:55 2010 +0100
@@ -47,6 +47,7 @@
import digilib.io.FileOps;
import digilib.io.ImageFile;
import digilib.io.ImageFileset;
+import digilib.io.ImageInput;
/** A DocuImage implementation using Java Advanced Imaging Library. */
public class JAIDocuImage extends ImageInfoDocuImage {
@@ -99,9 +100,9 @@
}
/* Check image size and type and store in ImageFile f */
- public ImageFile identify(ImageFile imageFile) throws IOException {
+ public ImageInput identify(ImageFile imageFile) throws IOException {
// try parent method first
- ImageFile imf = super.identify(imageFile);
+ ImageInput imf = super.identify(imageFile);
if (imf != null) {
return imf;
}
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/io/ImageFile.java
--- a/servlet/src/digilib/io/ImageFile.java Mon Dec 20 09:39:14 2010 +0100
+++ b/servlet/src/digilib/io/ImageFile.java Mon Dec 20 11:57:55 2010 +0100
@@ -22,13 +22,14 @@
package digilib.io;
import java.io.File;
+import java.io.InputStream;
import digilib.image.ImageSize;
/**
* @author casties
*/
-public class ImageFile {
+public class ImageFile implements ImageInput {
// file name
private String filename = null;
@@ -53,6 +54,18 @@
this.filename = f.getName();
}
+
+ @Override
+ public boolean hasFile() {
+ // this is File-based
+ return true;
+ }
+
+ @Override
+ public boolean hasStream() {
+ return false;
+ }
+
/** Returns the file name (without path).
*
* @return
@@ -65,6 +78,7 @@
/**
* @return File
*/
+ @Override
public File getFile() {
if (dir == null) {
return null;
@@ -73,24 +87,26 @@
return f;
}
- /**
- * @return ImageSize
+ /* (non-Javadoc)
+ * @see digilib.io.ImageInput#getSize()
*/
+ @Override
public ImageSize getSize() {
return pixelSize;
}
- /**
- * @return String
+ /* (non-Javadoc)
+ * @see digilib.io.ImageInput#getMimetype()
*/
+ @Override
public String getMimetype() {
return mimetype;
}
- /**
- * Sets the imageSize.
- * @param imageSize The imageSize to set
+ /* (non-Javadoc)
+ * @see digilib.io.ImageInput#setSize(digilib.image.ImageSize)
*/
+ @Override
public void setSize(ImageSize imageSize) {
this.pixelSize = imageSize;
// pass on to parent
@@ -99,10 +115,10 @@
}
}
- /**
- * Sets the mimetype.
- * @param mimetype The mimetype to set
+ /* (non-Javadoc)
+ * @see digilib.io.ImageInput#setMimetype(java.lang.String)
*/
+ @Override
public void setMimetype(String filetype) {
this.mimetype = filetype;
}
@@ -122,19 +138,25 @@
this.parent = parent;
}
- /**
- * @return boolean
+ /* (non-Javadoc)
+ * @see digilib.io.ImageInput#isChecked()
*/
+ @Override
public boolean isChecked() {
return (pixelSize != null);
}
- /** Returns the aspect ratio of the image (width/height).
- *
- * @return
+ /* (non-Javadoc)
+ * @see digilib.io.ImageInput#getAspect()
*/
+ @Override
public float getAspect() {
return (pixelSize != null) ? pixelSize.getAspect() : 0;
}
+ @Override
+ public InputStream getStream() {
+ return null;
+ }
+
}
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/io/ImageInput.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/servlet/src/digilib/io/ImageInput.java Mon Dec 20 11:57:55 2010 +0100
@@ -0,0 +1,87 @@
+/* ImageInput-- digilib image input interface.
+
+ Digital Image Library servlet components
+
+ Copyright (C) 2010 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
+
+ * Created on 20.12.2010
+ */
+
+package digilib.io;
+
+import java.io.File;
+import java.io.InputStream;
+
+import digilib.image.ImageSize;
+
+public interface ImageInput {
+
+ /**
+ * @return ImageSize
+ */
+ public abstract ImageSize getSize();
+
+ /**
+ * @return String
+ */
+ public abstract String getMimetype();
+
+ /**
+ * Sets the imageSize.
+ * @param imageSize The imageSize to set
+ */
+ public abstract void setSize(ImageSize imageSize);
+
+ /**
+ * Sets the mimetype.
+ * @param mimetype The mimetype to set
+ */
+ public abstract void setMimetype(String filetype);
+
+ /** returns if this image has been checked
+ * (i.e. has size and mimetype)
+ * @return boolean
+ */
+ public abstract boolean isChecked();
+
+ /** Returns the aspect ratio of the image (width/height).
+ *
+ * @return
+ */
+ public abstract float getAspect();
+
+ /** Returns if this ImageInput is File-based.
+ * @return
+ */
+ public abstract boolean hasFile();
+
+ /** Returns the underlying File (if applicable)
+ *
+ * @return
+ */
+ public abstract File getFile();
+
+ /** Returns the underlying Stream (if applicable)
+ *
+ * @return
+ */
+ public abstract InputStream getStream();
+
+ /** Returns if this ImageInput is Stream-based.
+ * @return
+ */
+ public abstract boolean hasStream();
+
+}
\ No newline at end of file
diff -r c6dcf0a5a32b -r 51b9b153e99a servlet/src/digilib/servlet/DigilibConfiguration.java
--- a/servlet/src/digilib/servlet/DigilibConfiguration.java Mon Dec 20 09:39:14 2010 +0100
+++ b/servlet/src/digilib/servlet/DigilibConfiguration.java Mon Dec 20 11:57:55 2010 +0100
@@ -36,6 +36,7 @@
import digilib.image.DocuImageImpl;
import digilib.io.FileOps;
import digilib.io.ImageFile;
+import digilib.io.ImageInput;
import digilib.io.XMLListLoader;
import digilib.util.Parameter;
import digilib.util.ParameterMap;
@@ -277,7 +278,7 @@
* @return
* @throws IOException
*/
- public static ImageFile docuImageIdentify(ImageFile imgf) throws IOException {
+ public static ImageInput docuImageIdentify(ImageFile imgf) throws IOException {
// use fresh DocuImage instance
DocuImage di = getDocuImageInstance();
return di.identify(imgf);