Mercurial > hg > digilib-old
diff common/src/main/java/digilib/util/ImageSize.java @ 903:7779b37d1d05
refactored into maven modules per servlet type.
can build servlet-api 2.3 and 3.0 via profile now!
author | robcast |
---|---|
date | Tue, 26 Apr 2011 20:24:31 +0200 |
parents | servlet/src/main/java/digilib/util/ImageSize.java@ba1eb2d821a2 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/src/main/java/digilib/util/ImageSize.java Tue Apr 26 20:24:31 2011 +0200 @@ -0,0 +1,230 @@ +/* + * ImageSize.java -- digilib image size class. + * Digital Image Library servlet components + * Copyright (C) 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 Created on 26.08.2003 + */ + +package digilib.util; + +/** Class for image size (width, height). + * + * A width or height of 0 is treated as a 'wildcard' that matches any size. + * + * @author casties + * + */ +public class ImageSize { + public int width; + public int height; + + public ImageSize() { + super(); + } + + public ImageSize(int width, int height) { + this.width = width; + this.height = height; + } + + public ImageSize(ImageSize i) { + this.width = i.width; + this.height = i.height; + } + + public void setSize(int width, int height) { + this.width = width; + this.height = height; + } + + /** + * Returns if the size of this image is smaller in every dimension than the + * other image. + * + * + * + * @param is + * @return + */ + public boolean isTotallySmallerThan(ImageSize is) { + if ((this.width == 0)||(is.width == 0)) { + // width wildcard + return (this.height <= is.height); + } + if ((this.height == 0)||(is.height == 0)) { + // height wildcard + return (this.width <= is.width); + } + return ((this.width <= is.width)&&(this.height <= is.height)); + } + + /** + * Returns if the size of this image is smaller in at least one dimension + * than the other image. + * + * @param is + * @return + */ + public boolean isSmallerThan(ImageSize is) { + if ((this.width == 0)||(is.width == 0)) { + // width wildcard + return (this.height <= is.height); + } + if ((this.height == 0)||(is.height == 0)) { + // height wildcard + return (this.width <= is.width); + } + return ((this.width <= is.width) || (this.height <= is.height)); + } + + /** + * Returns if the size of this image is bigger in every dimension than the + * other image. + * + * + * + * @param is + * @return + */ + public boolean isTotallyBiggerThan(ImageSize is) { + if ((this.width == 0)||(is.width == 0)) { + // width wildcard + return (this.height >= is.height); + } + if ((this.height == 0)||(is.height == 0)) { + // height wildcard + return (this.width >= is.width); + } + return ((this.width >= is.width) && (this.height >= is.height)); + } + + /** + * Returns if the size of this image is bigger in at least one dimension + * than the other image. + * + * + * + * @param is + * @return + */ + public boolean isBiggerThan(ImageSize is) { + if ((this.width == 0)||(is.width == 0)) { + // width wildcard + return (this.height >= is.height); + } + if ((this.height == 0)||(is.height == 0)) { + // height wildcard + return (this.width >= is.width); + } + return ((this.width >= is.width) || (this.height >= is.height)); + } + + /** + * Returns if this image has the same size or height as the other image. + * + * + * + * @param is + * @return + */ + public boolean fitsIn(ImageSize is) { + if ((this.width == 0)||(is.width == 0)) { + // width wildcard + return (this.height == is.height); + } + if ((this.height == 0)||(is.height == 0)) { + // height wildcard + return (this.width == is.width); + } + return ( + (this.width == is.width) + && (this.height <= is.height) + || (this.width <= is.width) + && (this.height == is.height)); + } + + /** + * Returns if the size of this image is the same as the other image. + * + * + * + * @param is + * @return + */ + public boolean equals(ImageSize is) { + if ((this.width == 0)||(is.width == 0)) { + // width wildcard + return (this.height == is.height); + } + if ((this.height == 0)||(is.height == 0)) { + // height wildcard + return (this.width == is.width); + } + return ((this.width == is.width) && (this.height == is.height)); + } + + /** + * @return + */ + public int getHeight() { + return height; + } + + /** + * @param height + */ + public void setHeight(int height) { + this.height = height; + } + + /** + * @return + */ + public int getWidth() { + return width; + } + + /** + * @param width + */ + public void setWidth(int width) { + this.width = width; + } + + /** + * Returns the aspect ratio. + * + * Aspect ratio is (width/height). So it's <1 for portrait and >1 for + * landscape. + * + * @return + */ + public float getAspect() { + return (height > 0) ? ((float) width / (float) height) : 0; + } + + /** + * Returns a scaled copy of this image size. + * + * @param scale + * @return + */ + public ImageSize getScaled(float scale) { + return new ImageSize((int) (width * scale), (int) (height * scale)); + } + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + public String toString() { + String s = "[" + width + "x" + height + "]"; + return s; + } +}