Mercurial > hg > digilib-old
annotate servlet/src/digilib/io/ImageFileset.java @ 472:f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
author | hertzhaft |
---|---|
date | Fri, 07 Apr 2006 20:39:07 +0200 |
parents | ee2b943420f5 |
children | 1fc30116efc3 |
rev | line source |
---|---|
176 | 1 /* ImageFileset -- digilib image file info class. |
2 * Digital Image Library servlet components | |
3 * Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de) | |
4 * | |
5 * This program is free software; you can | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
6 * redistribute it and/or modify it under the terms of the GNU General Public |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
7 * License as published by the Free Software Foundation; either version 2 of |
176 | 8 * the License, or (at your option) any later version. |
9 * | |
10 * Please read license.txt for the full details. A copy of the GPL may be | |
11 * found at http://www.gnu.org/copyleft/lgpl.html | |
12 * | |
13 * You should have received a copy of the GNU General Public License along | |
14 * with this program; if not, write to the Free Software Foundation, Inc., | |
15 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
159 | 16 */ |
176 | 17 |
159 | 18 package digilib.io; |
19 | |
20 import java.io.File; | |
21 import java.io.IOException; | |
22 import java.util.ArrayList; | |
259 | 23 import java.util.Arrays; |
159 | 24 import java.util.Iterator; |
25 import java.util.ListIterator; | |
259 | 26 import java.util.Map; |
159 | 27 |
284 | 28 import digilib.image.ImageOps; |
159 | 29 import digilib.image.ImageSize; |
30 | |
31 /** | |
32 * @author casties | |
33 */ | |
34 public class ImageFileset extends DocuDirent { | |
35 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
36 /** this is an image file */ |
159 | 37 protected static int fileClass = FileOps.CLASS_IMAGE; |
284 | 38 |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
39 /** list of files (ImageFile) */ |
159 | 40 private ArrayList list = null; |
233 | 41 |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
42 /** aspect ratio (width/height) */ |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
43 private float aspect = 0; |
233 | 44 |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
45 /** resolution of the biggest image (DPI) */ |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
46 private float resX = 0; |
233 | 47 |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
48 /** resolution of the biggest image (DPI) */ |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
49 private float resY = 0; |
159 | 50 |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
51 /** |
259 | 52 * Creator for empty fileset. |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
53 * |
159 | 54 * |
55 * @param initialCapacity | |
56 */ | |
259 | 57 public ImageFileset() { |
58 list = new ArrayList(); | |
159 | 59 } |
60 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
61 /** |
259 | 62 * Constructor with a file and hints. |
159 | 63 * |
259 | 64 * The hints are expected to contain 'basedirs' and 'scaledfilext' keys. |
233 | 65 * |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
66 * @param file |
259 | 67 * @param hints |
159 | 68 */ |
259 | 69 public ImageFileset(File file, Map hints) { |
70 Directory[] dirs = (Directory[]) hints.get(FileOps.HINT_BASEDIRS); | |
159 | 71 int nb = dirs.length; |
72 list = new ArrayList(nb); | |
73 parent = dirs[0]; | |
284 | 74 fill(dirs, file, hints); |
159 | 75 } |
284 | 76 |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
77 /** |
176 | 78 * Adds an ImageFile to this Fileset. |
159 | 79 * |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
80 * The files should be added in the order of higher to lower resolutions. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
81 * The first file is considered the hires "original". |
159 | 82 * |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
83 * |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
84 * @param f |
233 | 85 * file to add |
159 | 86 * @return true (always) |
87 */ | |
88 public boolean add(ImageFile f) { | |
89 f.setParent(this); | |
90 return list.add(f); | |
91 } | |
92 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
93 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
94 * The number of image files in this Fileset. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
95 * |
159 | 96 * |
97 * @return number of image files | |
98 */ | |
99 public int size() { | |
100 return (list != null) ? list.size() : 0; | |
101 } | |
102 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
103 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
104 * Gets the default File. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
105 * |
159 | 106 */ |
107 public File getFile() { | |
108 return (list != null) ? ((ImageFile) list.get(0)).getFile() : null; | |
109 } | |
110 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
111 /** |
472
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
112 * Compares to a String (for binarySearch) |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
113 * or to another ImageFileset (for sort) |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
114 */ |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
115 public int compareTo(Object arg0) { |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
116 return (arg0 instanceof ImageFileset) |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
117 ? getName().compareTo(((ImageFileset) arg0).getName()) |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
118 : getName().compareTo((String) arg0); |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
119 } |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
120 |
f8ca069517a2
Bugfix for images not found in dir: added sorting for ArrayLists of ImageFilesets
hertzhaft
parents:
402
diff
changeset
|
121 /** |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
122 * Get the ImageFile at the index. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
123 * |
159 | 124 * |
125 * @param index | |
126 * @return | |
127 */ | |
128 public ImageFile get(int index) { | |
129 return (ImageFile) list.get(index); | |
130 } | |
131 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
132 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
133 * Get the next smaller ImageFile than the given size. |
159 | 134 * |
233 | 135 * Returns the ImageFile from the set that has a width and height smaller or |
136 * equal the given size. Returns null if there isn't any smaller image. | |
159 | 137 * Needs DocuInfo instance to checkFile(). |
138 * | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
139 * |
159 | 140 * @param size |
141 * @param info | |
142 * @return | |
143 */ | |
284 | 144 public ImageFile getNextSmaller(ImageSize size) { |
159 | 145 for (Iterator i = getHiresIterator(); i.hasNext();) { |
146 ImageFile f = (ImageFile) i.next(); | |
147 try { | |
148 if (!f.isChecked()) { | |
284 | 149 ImageOps.checkFile(f); |
159 | 150 } |
151 if (f.getSize().isTotallySmallerThan(size)) { | |
152 return f; | |
153 } | |
154 } catch (IOException e) { | |
155 } | |
156 } | |
157 return null; | |
158 } | |
159 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
160 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
161 * Get the next bigger ImageFile than the given size. |
159 | 162 * |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
163 * Returns the ImageFile from the set that has a width or height bigger or |
233 | 164 * equal the given size. Returns null if there isn't any bigger image. Needs |
165 * DocuInfo instance to checkFile(). | |
159 | 166 * |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
167 * |
159 | 168 * @param size |
169 * @param info | |
170 * @return | |
171 */ | |
284 | 172 public ImageFile getNextBigger(ImageSize size) { |
159 | 173 for (ListIterator i = getLoresIterator(); i.hasPrevious();) { |
174 ImageFile f = (ImageFile) i.previous(); | |
175 try { | |
176 if (!f.isChecked()) { | |
284 | 177 ImageOps.checkFile(f); |
159 | 178 } |
179 if (f.getSize().isBiggerThan(size)) { | |
180 return f; | |
181 } | |
182 } catch (IOException e) { | |
183 } | |
184 } | |
185 return null; | |
186 } | |
187 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
188 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
189 * Returns the biggest ImageFile in the set. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
190 * |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
191 * |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
192 * @return |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
193 */ |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
194 public ImageFile getBiggest() { |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
195 return this.get(0); |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
196 } |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
197 |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
198 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
199 * Returns the biggest ImageFile in the set. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
200 * |
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 * @return |
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 public ImageFile getSmallest() { |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
205 return this.get(this.size() - 1); |
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 |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
208 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
209 * Get an Iterator for this Fileset starting at the highest resolution |
159 | 210 * images. |
211 * | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
212 * |
159 | 213 * @return |
214 */ | |
215 public ListIterator getHiresIterator() { | |
216 return list.listIterator(); | |
217 } | |
218 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
219 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
220 * Get an Iterator for this Fileset starting at the lowest resolution |
159 | 221 * images. |
222 * | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
223 * The Iterator starts at the last element, so you have to use it backwards |
159 | 224 * with hasPrevious() and previous(). |
225 * | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
226 * |
159 | 227 * @return |
228 */ | |
229 public ListIterator getLoresIterator() { | |
230 return list.listIterator(list.size()); | |
231 } | |
232 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
233 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
234 * Fill the ImageFileset with files from different base directories. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
235 * |
159 | 236 * |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
237 * @param dirs |
233 | 238 * list of base directories |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
239 * @param fl |
233 | 240 * file (from first base dir) |
259 | 241 * @param hints |
284 | 242 * |
159 | 243 */ |
259 | 244 void fill(Directory[] dirs, File fl, Map hints) { |
159 | 245 int nb = dirs.length; |
246 String fn = fl.getName(); | |
259 | 247 String baseFn = FileOps.basename(fn); |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
248 // add the first ImageFile to the ImageFileset |
159 | 249 add(new ImageFile(fn, this, parent)); |
250 // iterate the remaining base directories | |
284 | 251 for (int dirIdx = 1; dirIdx < nb; dirIdx++) { |
252 if (dirs[dirIdx] == null) { | |
159 | 253 continue; |
254 } | |
284 | 255 // read the directory |
256 if (dirs[dirIdx].getFilenames() == null) { | |
257 dirs[dirIdx].readDir(); | |
259 | 258 } |
284 | 259 String[] dirFiles = dirs[dirIdx].getFilenames(); |
260 // try the same filename as the original | |
261 int fileIdx = Arrays.binarySearch(dirFiles, fn); | |
262 if (fileIdx < 0) { | |
263 // try closest matches without extension | |
264 fileIdx = -fileIdx - 1; | |
265 // try idx | |
266 if ((fileIdx < dirFiles.length) | |
267 && (FileOps.basename(dirFiles[fileIdx]).equals(baseFn))) { | |
268 // idx ok | |
269 } else if ((fileIdx > 0) | |
270 && (FileOps.basename(dirFiles[fileIdx - 1]) | |
271 .equals(baseFn))) { | |
272 // idx-1 ok | |
273 fileIdx = fileIdx - 1; | |
274 } else if ((fileIdx+1 < dirFiles.length) | |
275 && (FileOps.basename(dirFiles[fileIdx + 1]) | |
276 .equals(baseFn))) { | |
277 // idx+1 ok | |
278 fileIdx = fileIdx + 1; | |
279 } else { | |
280 // basename doesn't match | |
281 continue; | |
259 | 282 } |
159 | 283 } |
284 | 284 if (FileOps.classForFilename(dirFiles[fileIdx]) == FileOps.CLASS_IMAGE) { |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
285 /* logger.debug("adding file " + dirFiles[fileIdx] |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
286 + " to Fileset " + this.getName()); */ |
284 | 287 add(new ImageFile(dirFiles[fileIdx], this, dirs[dirIdx])); |
259 | 288 } |
159 | 289 } |
290 } | |
291 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
292 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
293 * Checks metadata and sets resolution in resX and resY. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
294 * |
159 | 295 */ |
296 public void checkMeta() { | |
297 if (metaChecked) { | |
298 return; | |
299 } | |
300 if (fileMeta == null) { | |
301 // try to read metadata file | |
302 readMeta(); | |
303 if (fileMeta == null) { | |
304 // try directory metadata | |
233 | 305 ((DocuDirectory) parent).checkMeta(); |
159 | 306 if (((DocuDirectory) parent).getDirMeta() != null) { |
307 fileMeta = ((DocuDirectory) parent).getDirMeta(); | |
308 } else { | |
233 | 309 // try parent directory metadata |
310 DocuDirectory gp = (DocuDirectory) parent.getParent(); | |
311 if (gp != null) { | |
312 gp.checkMeta(); | |
313 if (gp.getDirMeta() != null) { | |
314 fileMeta = gp.getDirMeta(); | |
315 } | |
316 } | |
159 | 317 } |
318 } | |
319 } | |
354 | 320 if (fileMeta == null) { |
321 // no metadata available | |
322 metaChecked = true; | |
323 return; | |
324 } | |
159 | 325 metaChecked = true; |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
326 float dpi = 0; |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
327 float dpix = 0; |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
328 float dpiy = 0; |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
329 float sizex = 0; |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
330 float sizey = 0; |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
331 float pixx = 0; |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
332 float pixy = 0; |
159 | 333 // DPI is valid for X and Y |
334 if (fileMeta.containsKey("original-dpi")) { | |
335 try { | |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
336 dpi = Float.parseFloat((String) fileMeta.get("original-dpi")); |
159 | 337 } catch (NumberFormatException e) { |
338 } | |
339 if (dpi != 0) { | |
340 resX = dpi; | |
341 resY = dpi; | |
342 return; | |
343 } | |
344 } | |
345 // DPI-X and DPI-Y | |
346 if (fileMeta.containsKey("original-dpi-x") | |
233 | 347 && fileMeta.containsKey("original-dpi-y")) { |
159 | 348 try { |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
349 dpix = Float.parseFloat((String) fileMeta |
233 | 350 .get("original-dpi-x")); |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
351 dpiy = Float.parseFloat((String) fileMeta |
233 | 352 .get("original-dpi-y")); |
159 | 353 } catch (NumberFormatException e) { |
354 } | |
355 if ((dpix != 0) && (dpiy != 0)) { | |
356 resX = dpix; | |
357 resY = dpiy; | |
358 return; | |
359 } | |
360 } | |
361 // SIZE-X and SIZE-Y and PIXEL-X and PIXEL-Y | |
362 if (fileMeta.containsKey("original-size-x") | |
233 | 363 && fileMeta.containsKey("original-size-y") |
364 && fileMeta.containsKey("original-pixel-x") | |
365 && fileMeta.containsKey("original-pixel-y")) { | |
159 | 366 try { |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
367 sizex = Float.parseFloat((String) fileMeta |
233 | 368 .get("original-size-x")); |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
369 sizey = Float.parseFloat((String) fileMeta |
233 | 370 .get("original-size-y")); |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
371 pixx = Float.parseFloat((String) fileMeta |
233 | 372 .get("original-pixel-x")); |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
373 pixy = Float.parseFloat((String) fileMeta |
233 | 374 .get("original-pixel-y")); |
159 | 375 } catch (NumberFormatException e) { |
376 } | |
377 if ((sizex != 0) && (sizey != 0) && (pixx != 0) && (pixy != 0)) { | |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
378 resX = pixx / (sizex * 100 / 2.54f); |
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
379 resY = pixy / (sizey * 100 / 2.54f); |
159 | 380 return; |
381 } | |
382 } | |
383 } | |
384 | |
385 /** | |
386 * @return | |
387 */ | |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
388 public float getResX() { |
159 | 389 return resX; |
390 } | |
391 | |
392 /** | |
393 * @return | |
394 */ | |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
395 public float getResY() { |
159 | 396 return resY; |
397 } | |
398 | |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
399 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
400 * Sets the aspect ratio from an ImageSize. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
401 * |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
402 * |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
403 * @param f |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
404 */ |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
405 public void setAspect(ImageSize s) { |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
406 aspect = s.getAspect(); |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
407 } |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
408 |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
409 /** |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
410 * Returns the aspect ratio. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
411 * |
233 | 412 * Aspect ratio is (width/height). So it's <1 for portrait and >1 for |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
413 * landscape. |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
414 * |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
415 * |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
416 * @return |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
417 */ |
295
90bab835fc25
Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents:
284
diff
changeset
|
418 public float getAspect() { |
170
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
419 return aspect; |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
420 } |
d40922628e4a
Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents:
159
diff
changeset
|
421 |
233 | 422 } |