Revision 11829

View differences:

trunk/libraries/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigator.java
91 91
		g.drawString("X2:" + (int) x2, 1, 60);
92 92
		g.drawString("Y2:" + (int) y2, 1, 80);
93 93
		g.drawString(width + ":" + height, 1, 120);
94

  
95 94
	}
96 95
}
trunk/libraries/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageNavigator.java
48 48
 * posici?n del mismo.
49 49
 * - Se puede resetear los valores con las teclas 'Espacio' o 0;
50 50
 * - Las teclas 1, 2, 3, 4 y 5 equivalen a zoom 1, 2, 4, 8 y 16 respectivamente.
51
 * - La tecla C sirve para centrar la imagen.
51 52
 *
52 53
 * @version 04/05/2007
53 54
 * @author Borja S?nchez Zamorano (borja.sanchez@iver.es)
......
98 99
	 * con setViewDimensions.
99 100
	 */
100 101
	private void updateDimensions() {
101
		x1 = initX1;
102
		y1 = initY1;
103 102
		double factor = this.getWidth() / (initX2 - initX1);
104 103
		if (factor > (this.getHeight() / (initY2 - initY1)))
105 104
			factor = this.getHeight() / (initY2 - initY1);
106 105
		zoom = factor;
106
		imageCenter();
107
	}
108
	
109
	/**
110
	 * Centra la imagen
111
	 */
112
	private void imageCenter() {
113
		x1 = initX1;
114
		y1 = initY1;
107 115

  
108 116
		if (isXInverted())
109
			x1 -= ((initX2 - initX1) - this.getWidth() / zoom) / 2;
117
			x1 -= ((initX2 - initX1) - this.getWidth() / zoom) / 2.0;
110 118
		else
111
			x1 += ((initX2 - initX1) - this.getWidth() / zoom) / 2;
119
			x1 += ((initX2 - initX1) - this.getWidth() / zoom) / 2.0;
112 120
		if (isYInverted())
113
			y1 -= ((initY2 - initY1) - this.getHeight() / zoom) / 2;
121
			y1 -= ((initY2 - initY1) - this.getHeight() / zoom) / 2.0;
114 122
		else
115
			y1 += ((initY2 - initY1) - this.getHeight()/zoom)/2;
123
			y1 += ((initY2 - initY1) - this.getHeight() / zoom) / 2.0;
116 124
	}
117 125

  
118 126
	/**
......
153 161
		updateImageCache(true);
154 162
		refreshImage(0, 0);
155 163
	}
156
	
164

  
157 165
	/**
158 166
	 * Especifica el zoom que usar? por defecto el componente.
159 167
	 * @param zoom
......
162 170
		initZoom = zoom;
163 171
		this.zoom = initZoom;
164 172
		autoAdjusted = false;
165
		x1 = initX1;
166
		y1 = initY1;
173
		imageCenter();
167 174
	}
168
	
175

  
169 176
	/*
170 177
	 * (non-Javadoc)
171 178
	 * @see javax.swing.JComponent#addNotify()
......
183 190
	 * @param y
184 191
	 */
185 192
	private void ZoomIn(double x, double y) {
186
		if ((int) (zoom * 100) >= (25600 / initZoom))
193
		if ((int) (zoom * 100.0) >= (25600.0 / initZoom))
187 194
			return;
188 195
		double xcent = (x / zoom);
189 196
		double ycent = (y / zoom);
......
195 202
			y1 -= ycent;
196 203
		else
197 204
			y1 += ycent;
198
		zoom = zoom * 2;
205
		zoom = zoom * 2.0;
199 206
		xcent = (x / zoom);
200 207
		ycent = (y / zoom);
201 208
		if (isXInverted())
......
216 223
	 * @param y
217 224
	 */
218 225
	private void ZoomOut(double x, double y) {
219
		if ((int) ((1 / zoom) * 100) >= (25600 / initZoom))
226
		if ((int) ((1.0 / zoom) * 100.0) >= (25600.0 / initZoom))
220 227
			return;
221 228

  
222 229
		double xcent = (x / zoom);
......
229 236
			y1 -= ycent;
230 237
		else
231 238
			y1 += ycent;
232
		zoom = zoom / 2;
239
		zoom = zoom / 2.0;
233 240
		xcent = (x / zoom);
234 241
		ycent = (y / zoom);
235 242
		if (isXInverted())
......
251 258
	public void keyPressed(KeyEvent e) {
252 259
		switch (e.getKeyChar()) {
253 260
			case '+':
254
				ZoomIn(width / 2, height / 2);
261
				ZoomIn(width / 2.0, height / 2.0);
255 262
				autoAdjusted = false;
256 263
				break;
257 264
			case '-':
258
				ZoomOut(width / 2, height / 2);
265
				ZoomOut(width / 2.0, height / 2.0);
259 266
				autoAdjusted = false;
260 267
				break;
261 268
			case '1':
262 269
				autoAdjusted = false;
263
				updateDimensions();
264 270
				this.zoom = initZoom;
265
				x1 = initX1;
266
				y1 = initY1;
271
				imageCenter();
267 272
				updateImageCache(true);
268 273
				refreshImage(0, 0);
269 274
				break;
270 275
			case '2':
271 276
				autoAdjusted = false;
272
				updateDimensions();
273
				x1 = initX1;
274
				y1 = initY1;
275 277
				this.zoom = initZoom * 2.0;
278
				imageCenter();
276 279
				updateImageCache(true);
277 280
				refreshImage(0, 0);
278 281
				break;
279 282
			case '3':
280 283
				autoAdjusted = false;
281
				updateDimensions();
282
				x1 = initX1;
283
				y1 = initY1;
284 284
				this.zoom = initZoom * 4.0;
285
				imageCenter();
285 286
				updateImageCache(true);
286 287
				refreshImage(0, 0);
287 288
				break;
288 289
			case '4':
289 290
				autoAdjusted = false;
290
				updateDimensions();
291
				x1 = initX1;
292
				y1 = initY1;
293 291
				this.zoom = initZoom * 8.0;
292
				imageCenter();
294 293
				updateImageCache(true);
295 294
				refreshImage(0, 0);
296 295
				break;
297 296
			case '5':
298 297
				autoAdjusted = false;
299
				updateDimensions();
300
				x1 = initX1;
301
				y1 = initY1;
302 298
				this.zoom = initZoom * 16.0;
299
				imageCenter();
303 300
				updateImageCache(true);
304 301
				refreshImage(0, 0);
305 302
				break;
303
			case 'c':
304
			case 'C':
305
				imageCenter();
306
				updateImageCache(true);
307
				refreshImage(0, 0);
308
				break;
306 309
			case '0':
307 310
			case ' ':
308 311
				autoAdjusted = true;
......
337 340
		double newX1 = 0.0;
338 341
		double newX2 = 0.0;
339 342
		if (isYInverted()) {
340
			newY1 = y1 + this.getHeight() / zoom - ((y1 - initY1) * 2);
343
			newY1 = y1 + this.getHeight() / zoom - ((y1 - initY1) * 2.0);
341 344
			newY2 = newY1 - this.getHeight() / zoom;
342 345
		} else {
343 346
			newY1 = y1;
344 347
			newY2 = y1 + this.getHeight() / zoom;
345 348
		}
346 349
		if (isXInverted()) {
347
			newX1 = x1 + this.getWidth() / zoom - ((x1 - initX1) * 2);
350
			newX1 = x1 + this.getWidth() / zoom - ((x1 - initX1) * 2.0);
348 351
			newX2 = newX1 - this.getWidth() / zoom;
349 352
		} else {
350 353
			newX1 = x1;

Also available in: Unified diff