annotate servlet/src/digilib/servlet/Scaler.java @ 85:4e6757e8ccd4

New enhanced ImageLoader stuff. Now uses Subsampling and image regions on read. Now implements enhance, rotate and mirror for ImageLoader/Java2D
author robcast
date Thu, 27 Feb 2003 15:07:29 +0100
parents 63c8186455c1
children 997ba69afb81
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
1 /* Scaler -- Scaler servlet main class
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
2
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
3 Digital Image Library servlet components
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
4
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
5 Copyright (C) 2001, 2002, 2003 Robert Casties (robcast@mail.berlios.de)
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
6
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
7 This program is free software; you can redistribute it and/or modify it
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
9 Free Software Foundation; either version 2 of the License, or (at your
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
10 option) any later version.
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
11
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
12 Please read license.txt for the full details. A copy of the GPL
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
13 may be found at http://www.gnu.org/copyleft/lgpl.html
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
14
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
16 along with this program; if not, write to the Free Software
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
18
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
19 */
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
20
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
21 package digilib.servlet;
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
22
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
23 import java.awt.geom.AffineTransform;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
24 import java.awt.geom.Point2D;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
25 import java.awt.geom.Rectangle2D;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
26 import java.io.File;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
27 import java.io.IOException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
28 import java.util.List;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
29
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
30 import javax.servlet.ServletConfig;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
31 import javax.servlet.ServletContext;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
32 import javax.servlet.ServletException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
33 import javax.servlet.http.HttpServlet;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
34 import javax.servlet.http.HttpServletRequest;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
35 import javax.servlet.http.HttpServletResponse;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
36
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
37 import digilib.Utils;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
38 import digilib.auth.AuthOpException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
39 import digilib.auth.AuthOps;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
40 import digilib.image.DocuImage;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
41 import digilib.image.ImageOpException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
42 import digilib.io.FileOpException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
43 import digilib.io.FileOps;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
44
64
5ea1999befd4 New JAI ImageLoader plugin. Currently uses first beta version of the plugin.
robcast
parents: 62
diff changeset
45 //import tilecachetool.*;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
46
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
47 /**
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
48 * @author casties
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
49 *
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
50 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
51 //public class Scaler extends HttpServlet implements SingleThreadModel {
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
52 public class Scaler extends HttpServlet {
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
53
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
54 // digilib servlet version (for all components)
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
55 public static final String dlVersion = "1.6b3";
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
56
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
57 // Utils instance with debuglevel
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
58 Utils util;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
59 // FileOps instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
60 FileOps fileOp;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
61 // AuthOps instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
62 AuthOps authOp;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
63 // ServletOps instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
64 ServletOps servletOp;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
65
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
66 // DigilibParameters instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
67 DigilibConfiguration dlConfig;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
68
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
69 // use authorization database
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
70 boolean useAuthentication = true;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
71
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
72 /** Initialisation on first run.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
73 *
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
74 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
75 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
76 public void init(ServletConfig config) throws ServletException {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
77 super.init(config);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
78
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
79 // Debuggin!
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
80 //TCTool tctool = new TCTool();
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
81
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
82 // get our ServletContext
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
83 ServletContext context = config.getServletContext();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
84 // see if there is a Configuration instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
85 dlConfig =
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
86 (DigilibConfiguration) context.getAttribute(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
87 "digilib.servlet.parameters");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
88 if (dlConfig == null) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
89 // create new Configuration
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
90 try {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
91 dlConfig = new DigilibConfiguration(config);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
92 } catch (Exception e) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
93 throw new ServletException(e);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
94 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
95 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
96 // set the servlet version
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
97 dlConfig.setServletVersion(dlVersion);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
98 // first we need an Utils
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
99 util = dlConfig.getUtil();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
100 // set our AuthOps
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
101 useAuthentication = dlConfig.isUseAuthentication();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
102 authOp = dlConfig.getAuthOp();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
103 // FileOps instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
104 fileOp = new FileOps(util);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
105 // AuthOps instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
106 servletOp = new ServletOps(util);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
107 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
108
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
109 /** Process the HTTP Get request*/
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
110 public void doGet(HttpServletRequest request, HttpServletResponse response)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
111 throws ServletException, IOException {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
112 util.dprintln(1, "The servlet has received a GET!");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
113 // create new request with defaults
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
114 DigilibRequest dlReq = new DigilibRequest();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
115 // set with request parameters
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
116 dlReq.setWithRequest(request);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
117 // add DigilibRequest to ServletRequest
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
118 request.setAttribute("digilib.servlet.request", dlReq);
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
119 // do the processing
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
120 processRequest(request, response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
121 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
122
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
123 /**Process the HTTP Post request*/
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
124 public void doPost(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
125 HttpServletRequest request,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
126 HttpServletResponse response)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
127 throws ServletException, IOException {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
128 util.dprintln(1, "The servlet has received a POST!");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
129 // create new request with defaults
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
130 DigilibRequest dlReq = new DigilibRequest();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
131 // set with request parameters
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
132 dlReq.setWithRequest(request);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
133 // add DigilibRequest to ServletRequest
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
134 request.setAttribute("digilib.servlet.request", dlReq);
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
135 // do the processing
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
136 processRequest(request, response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
137 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
138
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
139 /** main request handler. */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
140 void processRequest(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
141 HttpServletRequest request,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
142 HttpServletResponse response)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
143 throws ServletException, IOException {
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
144
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
145 // time for benchmarking
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
146 long startTime = System.currentTimeMillis();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
147 // output mime/type
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
148 String mimeType = "image/png";
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
149
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
150 /*
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
151 * parameters for a session
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
152 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
153
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
154 // scale the image file to fit window size i.e. respect dw,dh
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
155 boolean scaleToFit = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
156 // crop the image if needed
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
157 boolean cropToFit = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
158 // use heuristics (GIF?) to scale or send as is
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
159 boolean autoScale = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
160 // try prescaled images first
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
161 boolean preScaledFirst = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
162 // interpolation to use for scaling
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
163 int scaleQual = 0;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
164 // send html error message (or image file)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
165 boolean errorMsgHtml = false;
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
166 // mirror the image
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
167 boolean doMirror = false;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
168 // angle of mirror axis
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
169 double mirrorAngle = 0;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
170
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
171 /*
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
172 * request parameters
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
173 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
174
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
175 DigilibRequest dlRequest =
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
176 (DigilibRequest) request.getAttribute("digilib.servlet.request");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
177
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
178 // destination image width
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
179 int paramDW = dlRequest.getDw();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
180 // destination image height
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
181 int paramDH = dlRequest.getDh();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
182 // relative area x_offset (0..1)
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
183 double paramWX = dlRequest.getWx();
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
184 // relative area y_offset
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
185 double paramWY = dlRequest.getWy();
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
186 // relative area width (0..1)
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
187 double paramWW = dlRequest.getWw();
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
188 // relative area height
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
189 double paramWH = dlRequest.getWh();
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
190 // scale factor (additional to dw/width, dh/height)
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
191 double paramWS = dlRequest.getWs();
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
192 // rotation angle
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
193 double paramROT = dlRequest.getRot();
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
194 // contrast enhancement
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
195 double paramCONT = dlRequest.getCont();
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
196 // brightness enhancement
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
197 double paramBRGT = dlRequest.getBrgt();
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
198
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
199 /* operation mode: "fit": always fit to page,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
200 * "clip": send original resolution cropped, "file": send whole file (if
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
201 * allowed)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
202 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
203 if (dlRequest.isOption("clip")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
204 scaleToFit = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
205 cropToFit = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
206 autoScale = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
207 } else if (dlRequest.isOption("fit")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
208 scaleToFit = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
209 cropToFit = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
210 autoScale = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
211 } else if (dlRequest.isOption("file")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
212 scaleToFit = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
213 if (dlConfig.isSendFileAllowed()) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
214 cropToFit = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
215 } else {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
216 cropToFit = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
217 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
218 autoScale = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
219 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
220 // operation mode: "errtxt": error message in html, "errimg": error image
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
221 if (dlRequest.isOption("errtxt")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
222 errorMsgHtml = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
223 } else if (dlRequest.isOption("errimg")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
224 errorMsgHtml = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
225 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
226 // operation mode: "q0" - "q2": interpolation quality
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
227 if (dlRequest.isOption("q0")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
228 scaleQual = 0;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
229 } else if (dlRequest.isOption("q1")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
230 scaleQual = 1;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
231 } else if (dlRequest.isOption("q2")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
232 scaleQual = 2;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
233 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
234 // operation mode: "lores": try to use scaled image, "hires": use unscaled image
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
235 if (dlRequest.isOption("lores")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
236 preScaledFirst = true;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
237 } else if (dlRequest.isOption("hires")) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
238 preScaledFirst = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
239 }
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
240 // operation mode: "hmir": mirror horizontally, "vmir": mirror vertically
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
241 if (dlRequest.isOption("hmir")) {
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
242 doMirror = true;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
243 mirrorAngle = 0;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
244 } else if (dlRequest.isOption("vmir")) {
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
245 doMirror = true;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
246 mirrorAngle = 90;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
247 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
248
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
249 //"big" try for all file/image actions
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
250 try {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
251
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
252 // DocuImage instance
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
253 DocuImage docuImage = dlConfig.getDocuImageInstance();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
254 if (docuImage == null) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
255 throw new ImageOpException("Unable to load DocuImage class!");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
256 }
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
257
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
258 // set interpolation quality
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
259 docuImage.setQuality(scaleQual);
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
260
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
261 /*
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
262 * find the file to load/send
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
263 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
264
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
265 // get PathInfo
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
266 String loadPathName = dlRequest.getFilePath();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
267 // if it's zoomed, try hires version (to be optimized...)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
268 if ((paramWW < 1f) || (paramWH < 1f)) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
269 preScaledFirst = false;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
270 }
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
271
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
272 /*
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
273 * check permissions
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
274 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
275 if (useAuthentication) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
276 // get a list of required roles (empty if no restrictions)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
277 List rolesRequired = authOp.rolesForPath(loadPathName, request);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
278 if (rolesRequired != null) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
279 util.dprintln(1, "Role required: " + rolesRequired);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
280 util.dprintln(2, "User: " + request.getRemoteUser());
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
281 // is the current request/user authorized?
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
282 if (!authOp.isRoleAuthorized(rolesRequired, request)) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
283 // send deny answer and abort
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
284 util.dprintln(1, "ERROR: access denied!");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
285 if (errorMsgHtml) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
286 ServletOps.htmlMessage(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
287 "ERROR: Unauthorized access!",
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
288 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
289 } else {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
290 servletOp.sendFile(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
291 new File(dlConfig.getDenyImgFileName()),
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
292 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
293 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
294 return;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
295 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
296 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
297 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
298
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
299 // find the file
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
300 File fileToLoad =
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
301 fileOp.getFileVariant(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
302 dlConfig.getBaseDirs(),
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
303 loadPathName,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
304 dlRequest.getPn(),
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
305 preScaledFirst);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
306
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
307 util.dprintln(1, "Loading: " + fileToLoad);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
308
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
309 // get the source image type (if it's known)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
310 mimeType = FileOps.mimeForFile(fileToLoad);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
311
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
312 /* if autoScale and not zoomed and source is GIF/PNG
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
313 * then send as is.
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
314 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
315 if ((autoScale
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
316 && (mimeType == "image/gif" || mimeType == "image/png")
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
317 && (paramWW == 1f)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
318 && (paramWH == 1f))
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
319 || (autoScale && !(scaleToFit || cropToFit))) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
320
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
321 util.dprintln(1, "Sending File as is.");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
322
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
323 servletOp.sendFile(fileToLoad, response);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
324
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
325 util.dprintln(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
326 1,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
327 "Done in "
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
328 + (System.currentTimeMillis() - startTime)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
329 + "ms");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
330 return;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
331 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
332
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
333 // finally load the file
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
334 if (docuImage.isPreloadSupported()) {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
335 // only preload if supported
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
336 docuImage.preloadImage(fileToLoad);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
337 } else {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
338 docuImage.loadImage(fileToLoad);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
339 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
340
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
341 /*
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
342 * crop and scale the image
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
343 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
344
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
345 // get image size
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
346 int imgWidth = docuImage.getWidth();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
347 int imgHeight = docuImage.getHeight();
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
348
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
349 util.dprintln(2, "IMG: " + imgWidth + "x" + imgHeight);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
350 util.dprintln(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
351 2,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
352 "time " + (System.currentTimeMillis() - startTime) + "ms");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
353
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
354 // coordinates using Java2D
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
355 // image size
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
356 Rectangle2D imgBounds =
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
357 new Rectangle2D.Double(0, 0, imgWidth, imgHeight);
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
358 // user window area in 4-point form (ul, ur, ll, lr)
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
359 Point2D[] userAreaC =
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
360 {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
361 new Point2D.Double(paramWX, paramWY),
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
362 new Point2D.Double(paramWX + paramWW, paramWY),
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
363 new Point2D.Double(paramWX, paramWY + paramWH),
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
364 new Point2D.Double(paramWX + paramWW, paramWY + paramWH)};
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
365 // transformation from relative [0,1] to image coordinates.
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
366 AffineTransform imgTrafo = new AffineTransform();
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
367 imgTrafo.scale(imgWidth, imgHeight);
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
368 // rotate coordinates
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
369 //imgTrafo.rotate(Math.toRadians(-paramROT));
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
370
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
371 // coordinates and scaling
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
372 double areaXoff;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
373 double areaYoff;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
374 double areaWidth;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
375 double areaHeight;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
376 double scaleX;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
377 double scaleY;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
378 double scaleXY;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
379
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
380 /* if (scaleToFit) {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
381 // calculate absolute from relative coordinates
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
382 areaXoff = paramWX * imgWidth;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
383 areaYoff = paramWY * imgHeight;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
384 areaWidth = paramWW * imgWidth;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
385 areaHeight = paramWH * imgHeight;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
386 // calculate scaling factors
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
387 scaleX = paramDW / areaWidth * paramWS;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
388 scaleY = paramDH / areaHeight * paramWS;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
389 scaleXY = (scaleX > scaleY) ? scaleY : scaleX;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
390 } else {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
391 // crop to fit
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
392 // calculate absolute from relative coordinates
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
393 areaXoff = paramWX * imgWidth;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
394 areaYoff = paramWY * imgHeight;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
395 areaWidth = paramDW;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
396 areaHeight = paramDH;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
397 // calculate scaling factors
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
398 scaleX = 1f;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
399 scaleY = 1f;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
400 scaleXY = 1f;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
401 }
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
402
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
403 util.dprintln(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
404 1,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
405 "Scale "
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
406 + scaleXY
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
407 + "("
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
408 + scaleX
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
409 + ","
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
410 + scaleY
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
411 + ") on "
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
412 + areaXoff
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
413 + ","
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
414 + areaYoff
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
415 + " "
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
416 + areaWidth
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
417 + "x"
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
418 + areaHeight);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
419 */
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
420 // Java2D
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
421 // area in image pixel coordinates
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
422 Point2D[] imgAreaC = { null, null, null, null };
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
423 // transform user coordinate area to image coordinate area
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
424 imgTrafo.transform(userAreaC, 0, imgAreaC, 0, 4);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
425 areaXoff = imgAreaC[0].getX();
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
426 areaYoff = imgAreaC[0].getY();
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
427 // calculate scaling factors
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
428 if (scaleToFit) {
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
429 areaWidth = imgAreaC[0].distance(imgAreaC[1]);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
430 areaHeight = imgAreaC[0].distance(imgAreaC[2]);
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
431 scaleX = paramDW / areaWidth * paramWS;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
432 scaleY = paramDH / areaHeight * paramWS;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
433 scaleXY = (scaleX > scaleY) ? scaleY : scaleX;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
434 } else {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
435 // crop to fit
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
436 areaWidth = paramDW * paramWS;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
437 areaHeight = paramDH * paramWS;
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
438 scaleX = 1f;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
439 scaleY = 1f;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
440 scaleXY = 1f;
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
441
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
442 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
443
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
444 util.dprintln(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
445 1,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
446 "Scale "
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
447 + scaleXY
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
448 + "("
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
449 + scaleX
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
450 + ","
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
451 + scaleY
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
452 + ") on "
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
453 + areaXoff
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
454 + ","
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
455 + areaYoff
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
456 + " "
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
457 + areaWidth
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
458 + "x"
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
459 + areaHeight);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
460
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
461 // clip area at the image border
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
462 /* areaWidth =
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
463 (areaXoff + areaWidth > imgWidth)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
464 ? imgWidth - areaXoff
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
465 : areaWidth;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
466 areaHeight =
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
467 (areaYoff + areaHeight > imgHeight)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
468 ? imgHeight - areaYoff
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
469 : areaHeight;
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
470 */
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
471
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
472 // create new rectangle from coordinates
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
473 Rectangle2D imgArea =
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
474 new Rectangle2D.Double(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
475 areaXoff,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
476 areaYoff,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
477 areaWidth,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
478 areaHeight);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
479 // clip area at the image border
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
480 imgArea = imgArea.createIntersection(imgBounds);
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
481 areaWidth = imgArea.getWidth();
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
482 areaHeight = imgArea.getHeight();
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
483
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
484 util.dprintln(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
485 2,
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
486 "crop: "
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
487 + areaXoff
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
488 + ","
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
489 + areaYoff
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
490 + " "
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
491 + areaWidth
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
492 + "x"
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
493 + areaHeight);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
494
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
495 // check image parameters sanity
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
496 if ((areaWidth < 1)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
497 || (areaHeight < 1)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
498 || (scaleXY * areaWidth < 2)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
499 || (scaleXY * areaHeight < 2)) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
500 util.dprintln(1, "ERROR: invalid scale parameter set!");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
501 throw new ImageOpException("Invalid scale parameter set!");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
502 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
503
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
504 /*
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
505 * crop and scale image
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
506 */
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
507
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
508 // use subimage loading if possible
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
509 if (docuImage.isSubimageSupported()) {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
510 System.out.println(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
511 "Subimage: scale " + scaleXY + " = " + (1 / scaleXY));
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
512 double subf = 1d;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
513 double subsamp = 1d;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
514 if (scaleXY < 1) {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
515 subf = 1 / scaleXY;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
516 subsamp = Math.floor(subf);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
517 scaleXY = subsamp / subf;
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
518 System.out.println(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
519 "Using subsampling: " + subsamp + " rest " + scaleXY);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
520 }
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
521
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
522 docuImage.loadSubimage(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
523 fileToLoad,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
524 imgArea.getBounds(),
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
525 (int) subsamp);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
526
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
527 System.out.println(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
528 "SUBSAMP: "
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
529 + subsamp
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
530 + " -> "
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
531 + docuImage.getWidth()
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
532 + "x"
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
533 + docuImage.getHeight());
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
534
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
535 docuImage.scale(scaleXY);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
536
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
537 } else {
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
538 docuImage.crop(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
539 (int) areaXoff,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
540 (int) areaYoff,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
541 (int) areaWidth,
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
542 (int) areaHeight);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
543
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
544 docuImage.scale(scaleXY);
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
545 }
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
546
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
547 // mirror image
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
548 if (doMirror) {
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
549 docuImage.mirror(mirrorAngle);
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
550 }
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
551
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
552 // rotate image (first shot :-)
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
553 if (paramROT != 0) {
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
554 docuImage.rotate(
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
555 paramROT);
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
556 }
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
557
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
558 // contrast and brightness enhancement
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
559 if ((paramCONT != 0) || (paramBRGT != 0)) {
85
4e6757e8ccd4 New enhanced ImageLoader stuff.
robcast
parents: 79
diff changeset
560 double mult = Math.pow(2, paramCONT);
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
561 docuImage.enhance(mult, paramBRGT);
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
562 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
563
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
564 util.dprintln(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
565 2,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
566 "time " + (System.currentTimeMillis() - startTime) + "ms");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
567
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
568 /*
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
569 * write the resulting image
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
570 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
571
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
572 // setup output -- if source is JPG then dest will be JPG else it's PNG
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
573 if (mimeType != "image/jpeg") {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
574 mimeType = "image/png";
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
575 }
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
576 response.setContentType(mimeType);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
577
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
578 // write the image
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
579 docuImage.writeImage(mimeType, response.getOutputStream());
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
580
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
581 util.dprintln(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
582 1,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
583 "Done in " + (System.currentTimeMillis() - startTime) + "ms");
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
584
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
585 /*
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
586 * error handling
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
587 */
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
588
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
589 } // end of "big" try
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
590 catch (FileOpException e) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
591 util.dprintln(1, "ERROR: File IO Error: " + e);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
592 try {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
593 if (errorMsgHtml) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
594 ServletOps.htmlMessage(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
595 "ERROR: File IO Error: " + e,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
596 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
597 } else {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
598 servletOp.sendFile(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
599 new File(dlConfig.getErrorImgFileName()),
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
600 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
601 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
602 } catch (FileOpException ex) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
603 } // so we don't get a loop
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
604 return;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
605 } catch (AuthOpException e) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
606 util.dprintln(1, "ERROR: Authorization error: " + e);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
607 try {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
608 if (errorMsgHtml) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
609 ServletOps.htmlMessage(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
610 "ERROR: Authorization error: " + e,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
611 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
612 } else {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
613 servletOp.sendFile(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
614 new File(dlConfig.getErrorImgFileName()),
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
615 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
616 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
617 } catch (FileOpException ex) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
618 } // so we don't get a loop
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
619 return;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
620 } catch (ImageOpException e) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
621 util.dprintln(1, "ERROR: Image Error: " + e);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
622 try {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
623 if (errorMsgHtml) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
624 ServletOps.htmlMessage(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
625 "ERROR: Image Operation Error: " + e,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
626 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
627 } else {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
628 servletOp.sendFile(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
629 new File(dlConfig.getErrorImgFileName()),
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
630 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
631 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
632 } catch (FileOpException ex) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
633 } // so we don't get a loop
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
634 return;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
635 } catch (RuntimeException e) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
636 // JAI likes to throw RuntimeExceptions ;-(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
637 util.dprintln(1, "ERROR: Other Image Error: " + e);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
638 try {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
639 if (errorMsgHtml) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
640 ServletOps.htmlMessage(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
641 "ERROR: Other Image Operation Error: " + e,
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
642 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
643 } else {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
644 servletOp.sendFile(
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
645 new File(dlConfig.getErrorImgFileName()),
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
646 response);
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
647 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
648 } catch (FileOpException ex) {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
649 } // so we don't get a loop
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
650 return;
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
651 }
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
652 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
653
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
654 } //Scaler class