comparison servlet/src/digilib/servlet/Scaler.java @ 394:31643c12d939

digilib can now take its error-icons from the web app
author robcast
date Wed, 07 Dec 2005 19:06:32 +0100
parents b37d2737b342
children ffb2036da205
comparison
equal deleted inserted replaced
393:8a9fd4d64ea7 394:31643c12d939
57 public class Scaler extends HttpServlet { 57 public class Scaler extends HttpServlet {
58 58
59 private static final long serialVersionUID = -325080527268912852L; 59 private static final long serialVersionUID = -325080527268912852L;
60 60
61 /** digilib servlet version (for all components) */ 61 /** digilib servlet version (for all components) */
62 public static final String dlVersion = "1.5.9f"; 62 public static final String dlVersion = "1.5.9g";
63 63
64 /** logger for accounting requests */ 64 /** logger for accounting requests */
65 private static Logger accountlog = Logger.getLogger("account.request"); 65 private static Logger accountlog = Logger.getLogger("account.request");
66 66
67 /** gengeral logger for this class */ 67 /** gengeral logger for this class */
145 useAuthorization = dlConfig.getAsBoolean("use-authorization"); 145 useAuthorization = dlConfig.getAsBoolean("use-authorization");
146 authOp = (AuthOps) dlConfig.getValue("servlet.auth.op"); 146 authOp = (AuthOps) dlConfig.getValue("servlet.auth.op");
147 147
148 // DocuDirCache instance 148 // DocuDirCache instance
149 dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache"); 149 dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache");
150 denyImgFile = (File) dlConfig.getValue("denied-image"); 150 denyImgFile = ServletOps.getFile((File) dlConfig.getValue("denied-image"), config);
151 errorImgFile = (File) dlConfig.getValue("error-image"); 151 errorImgFile = ServletOps.getFile((File) dlConfig.getValue("error-image"), config);
152 notfoundImgFile = (File) dlConfig.getValue("notfound-image"); 152 notfoundImgFile = ServletOps.getFile((File) dlConfig.getValue("notfound-image"), config);
153 sendFileAllowed = dlConfig.getAsBoolean("sendfile-allowed"); 153 sendFileAllowed = dlConfig.getAsBoolean("sendfile-allowed");
154 minSubsample = dlConfig.getAsFloat("subsample-minimum"); 154 minSubsample = dlConfig.getAsFloat("subsample-minimum");
155 defaultQuality = dlConfig.getAsInt("default-quality"); 155 defaultQuality = dlConfig.getAsInt("default-quality");
156 } 156 }
157 157
225 225
226 // scale the image file to fit window size i.e. respect dw,dh 226 // scale the image file to fit window size i.e. respect dw,dh
227 boolean scaleToFit = true; 227 boolean scaleToFit = true;
228 // scale the image by a fixed factor only 228 // scale the image by a fixed factor only
229 boolean absoluteScale = false; 229 boolean absoluteScale = false;
230 // only crop the image to fit
231 boolean cropToFit = false;
232 // send the file as is
233 boolean sendFile = false;
234 // use low resolution images only 230 // use low resolution images only
235 boolean loresOnly = false; 231 boolean loresOnly = false;
236 // use hires images only 232 // use hires images only
237 boolean hiresOnly = false; 233 boolean hiresOnly = false;
238 // send the image always as a specific type (e.g. JPEG or PNG) 234 // send the image always as a specific type (e.g. JPEG or PNG)
239 int forceType = ImageOps.TYPE_AUTO; 235 int forceType = ImageOps.TYPE_AUTO;
240 // interpolation to use for scaling 236 // interpolation to use for scaling
241 int scaleQual = defaultQuality; 237 int scaleQual = defaultQuality;
242 // send html error message (or image file) 238 // send html error message (or image file)
243 boolean errorMsgHtml = false; 239 boolean errorMsgHtml = false;
244 // mirror the image
245 boolean doMirror = false;
246 // angle of mirror axis
247 float mirrorAngle = 0;
248 // original (hires) image resolution 240 // original (hires) image resolution
249 float origResX = 0; 241 float origResX = 0;
250 float origResY = 0; 242 float origResY = 0;
251 243
252 /* request parameters */ 244 /* request parameters */
299 * resolution cropped, "file": send whole file (if allowed) 291 * resolution cropped, "file": send whole file (if allowed)
300 */ 292 */
301 if (dlRequest.hasOption("mo", "clip")) { 293 if (dlRequest.hasOption("mo", "clip")) {
302 scaleToFit = false; 294 scaleToFit = false;
303 absoluteScale = false; 295 absoluteScale = false;
304 cropToFit = true;
305 sendFile = false;
306 hiresOnly = true; 296 hiresOnly = true;
307 } else if (dlRequest.hasOption("mo", "fit")) { 297 } else if (dlRequest.hasOption("mo", "fit")) {
308 scaleToFit = true; 298 scaleToFit = true;
309 absoluteScale = false; 299 absoluteScale = false;
310 cropToFit = false;
311 sendFile = false;
312 hiresOnly = false; 300 hiresOnly = false;
313 } else if (dlRequest.hasOption("mo", "osize")) { 301 } else if (dlRequest.hasOption("mo", "osize")) {
314 scaleToFit = false; 302 scaleToFit = false;
315 absoluteScale = true; 303 absoluteScale = true;
316 cropToFit = false;
317 sendFile = false;
318 hiresOnly = true; 304 hiresOnly = true;
319 } 305 }
320 // operation mode: "lores": try to use scaled image, "hires": use 306 // operation mode: "lores": try to use scaled image, "hires": use
321 // unscaled image 307 // unscaled image
322 // "autores": try best fitting resolution 308 // "autores": try best fitting resolution
541 + imgSize.getHeight()); 527 + imgSize.getHeight());
542 logger.debug("time " + (System.currentTimeMillis() - startTime) 528 logger.debug("time " + (System.currentTimeMillis() - startTime)
543 + "ms"); 529 + "ms");
544 530
545 // coordinates and scaling 531 // coordinates and scaling
546 float areaXoff;
547 float areaYoff;
548 float areaWidth; 532 float areaWidth;
549 float areaHeight; 533 float areaHeight;
550 float scaleX; 534 float scaleX;
551 float scaleY; 535 float scaleY;
552 float scaleXY; 536 float scaleXY;