Mercurial > hg > digilib-old
annotate servlet/src/digilib/image/ImageSize.java @ 299:0ddfc57a79af
Servlet version 1.5.0b -- the beginning of the next generation :-)
- code restructuring to improve scaleability
- new Initialiser servlet that must be run first
- image transformation work moved to DigilibImageWorker class
- Maximum number of concurrent threads limited by Semaphore
- old JIMI toolkit implementation removed
| author | robcast |
|---|---|
| date | Sun, 24 Oct 2004 20:23:50 +0200 |
| parents | 126684ac4a37 |
| children | eec0d8c9c3c9 |
| rev | line source |
|---|---|
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
1 /* |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
2 * ImageFile.java -- digilib image file class. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
3 * Digital Image Library servlet components |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
4 * Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de) |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
5 * This program is free software; you can redistribute it and/or modify it under the |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
6 * terms of the GNU General Public License as published by the Free Software |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
7 * Foundation; either version 2 of the License, or (at your option) any later |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
8 * version. Please read license.txt for the full details. A copy of the GPL may |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
9 * be found at http://www.gnu.org/copyleft/lgpl.html You should have received a |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
10 * copy of the GNU General Public License along with this program; if not, |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
11 * write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
12 * Boston, MA 02111-1307 USA Created on 26.08.2003 |
| 149 | 13 */ |
| 14 | |
| 15 package digilib.image; | |
| 16 | |
| 17 /** Class for image size (width, height). | |
| 18 * | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
19 * A width or height of 0 is treated as a 'wildcard' that matches any size. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
20 * |
| 149 | 21 * @author casties |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
22 * |
| 149 | 23 */ |
| 24 public class ImageSize { | |
| 25 public int width; | |
| 26 public int height; | |
| 27 | |
| 28 public ImageSize() { | |
| 29 super(); | |
| 30 } | |
| 31 | |
| 32 public ImageSize(int width, int height) { | |
| 33 this.width = width; | |
| 34 this.height = height; | |
| 35 } | |
| 36 | |
| 37 public ImageSize(ImageSize i) { | |
| 38 this.width = i.width; | |
| 39 this.height = i.height; | |
| 40 } | |
| 41 | |
| 42 public void setSize(int width, int height) { | |
| 43 this.width = width; | |
| 44 this.height = height; | |
| 45 } | |
| 46 | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
47 /** |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
48 * Returns if the size of this image is smaller in every dimension than the |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
49 * other image. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
50 * |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
51 * |
| 149 | 52 * |
| 53 * @param is | |
| 54 * @return | |
| 55 */ | |
| 56 public boolean isTotallySmallerThan(ImageSize is) { | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
57 if ((this.width == 0)||(is.width == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
58 // width wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
59 return (this.height <= is.height); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
60 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
61 if ((this.height == 0)||(is.height == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
62 // height wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
63 return (this.width <= is.width); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
64 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
65 return ((this.width <= is.width)&&(this.height <= is.height)); |
| 149 | 66 } |
| 67 | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
68 /** |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
69 * Returns if the size of this image is smaller in at least one dimension |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
70 * than the other image. |
| 149 | 71 * |
| 72 * @param is | |
| 73 * @return | |
| 74 */ | |
| 75 public boolean isSmallerThan(ImageSize is) { | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
76 if ((this.width == 0)||(is.width == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
77 // width wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
78 return (this.height <= is.height); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
79 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
80 if ((this.height == 0)||(is.height == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
81 // height wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
82 return (this.width <= is.width); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
83 } |
| 149 | 84 return ((this.width <= is.width) || (this.height <= is.height)); |
| 85 } | |
| 86 | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
87 /** |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
88 * Returns if the size of this image is bigger in every dimension than the |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
89 * other image. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
90 * |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
91 * |
| 149 | 92 * |
| 93 * @param is | |
| 94 * @return | |
| 95 */ | |
| 96 public boolean isTotallyBiggerThan(ImageSize is) { | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
97 if ((this.width == 0)||(is.width == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
98 // width wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
99 return (this.height >= is.height); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
100 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
101 if ((this.height == 0)||(is.height == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
102 // height wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
103 return (this.width >= is.width); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
104 } |
| 149 | 105 return ((this.width >= is.width) && (this.height >= is.height)); |
| 106 } | |
| 107 | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
108 /** |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
109 * Returns if the size of this image is bigger in at least one dimension |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
110 * than the other image. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
111 * |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
112 * |
| 149 | 113 * |
| 114 * @param is | |
| 115 * @return | |
| 116 */ | |
| 117 public boolean isBiggerThan(ImageSize is) { | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
118 if ((this.width == 0)||(is.width == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
119 // width wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
120 return (this.height >= is.height); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
121 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
122 if ((this.height == 0)||(is.height == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
123 // height wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
124 return (this.width >= is.width); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
125 } |
| 149 | 126 return ((this.width >= is.width) || (this.height >= is.height)); |
| 127 } | |
| 128 | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
129 /** |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
130 * Returns if this image has the same size or height as the other image. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
131 * |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
132 * |
| 149 | 133 * |
| 134 * @param is | |
| 135 * @return | |
| 136 */ | |
| 137 public boolean fitsIn(ImageSize is) { | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
138 if ((this.width == 0)||(is.width == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
139 // width wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
140 return (this.height == is.height); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
141 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
142 if ((this.height == 0)||(is.height == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
143 // height wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
144 return (this.width == is.width); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
145 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
146 return ( |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
147 (this.width == is.width) |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
148 && (this.height <= is.height) |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
149 || (this.width <= is.width) |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
150 && (this.height == is.height)); |
| 149 | 151 } |
| 152 | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
153 /** |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
154 * Returns if the size of this image is the same as the other image. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
155 * |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
156 * |
| 149 | 157 * |
| 158 * @param is | |
| 159 * @return | |
| 160 */ | |
| 161 public boolean equals(ImageSize is) { | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
162 if ((this.width == 0)||(is.width == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
163 // width wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
164 return (this.height == is.height); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
165 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
166 if ((this.height == 0)||(is.height == 0)) { |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
167 // height wildcard |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
168 return (this.width == is.width); |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
169 } |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
170 return ((this.width == is.width) && (this.height == is.height)); |
| 149 | 171 } |
| 172 | |
| 173 /** | |
| 174 * @return | |
| 175 */ | |
| 176 public int getHeight() { | |
| 177 return height; | |
| 178 } | |
| 179 | |
| 180 /** | |
| 181 * @param height | |
| 182 */ | |
| 183 public void setHeight(int height) { | |
| 184 this.height = height; | |
| 185 } | |
| 186 | |
| 187 /** | |
| 188 * @return | |
| 189 */ | |
| 190 public int getWidth() { | |
| 191 return width; | |
| 192 } | |
| 193 | |
| 194 /** | |
| 195 * @param width | |
| 196 */ | |
| 197 public void setWidth(int width) { | |
| 198 this.width = width; | |
| 199 } | |
| 200 | |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
201 /** |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
202 * Returns the aspect ratio. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
203 * |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
204 * Aspect ratio is (width/height). So it's <1 for portrait and >1 for |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
205 * landscape. |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
206 * |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
207 * @return |
|
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
208 */ |
|
293
126684ac4a37
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
258
diff
changeset
|
209 public float getAspect() { |
|
126684ac4a37
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
258
diff
changeset
|
210 return (height > 0) ? ((float) width / (float) height) : 0; |
|
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
211 } |
| 258 | 212 |
| 213 /* (non-Javadoc) | |
| 214 * @see java.lang.Object#toString() | |
| 215 */ | |
| 216 public String toString() { | |
| 217 String s = "[" + width + "x" + height + "]"; | |
| 218 return s; | |
| 219 } | |
| 149 | 220 } |
