Revision 11853 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLyrVect.java

View differences:

FLyrVect.java
290 290
			return rAux;
291 291
	}
292 292

  
293
	public void _draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
293
	public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
294 294
			Cancellable cancel, double scale) throws ReadDriverException {
295 295
// FEATURE ITERATORS (TEST METHOD)
296 296
		if (isWithinScale(scale)) {
297 297
			// Las que solo tienen etiquetado sin pintar el shape,
298 298
			// no pasamos por ellas
299

  
300

  
301

  
299 302
			boolean bDrawShapes = true;
300 303
			if (legend instanceof SingleSymbolLegend) {
301 304
				if (legend.getDefaultSymbol().isShapeVisible() == false)
......
304 307
			if (bDrawShapes) {
305 308
				try {
306 309
					prepareDrawing(image, g, viewPort);
307

  
308

  
309

  
310 310
					ArrayList fieldList = new ArrayList();
311 311

  
312 312
					// fields from legend
......
330 330

  
331 331
					ZSort zSort = ((IVectorialLegend) getLegend()).getZSort();
332 332
					if (zSort != null && zSort.isUsingZSort()) {
333

  
334

  
335

  
336

  
333 337
						BufferedImage[] imageLevels = new BufferedImage[zSort.getLevelCount()+1];
334
//						System.out.println(zSort);
335 338
						Graphics2D[] graphics = new Graphics2D[imageLevels.length];
336 339
						for (int i = 0; !cancel.isCanceled() && i < imageLevels.length; i++) {
337 340
							imageLevels[i] = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
338 341
							graphics[i] = imageLevels[i].createGraphics();
339 342
						}
343

  
344
						// -- visual FX stuff
345
						int screenRefreshRate = 1000; // render temporary map each screenRefreshRate milliseconds;
346
						long time = System.currentTimeMillis();
347

  
348
						BufferedImage virtualBim;
349
						Graphics2D virtualGraphics;
350
						// -- end visual FX stuff
351

  
340 352
						while ( !cancel.isCanceled() && it.hasNext()) {
353

  
341 354
							IFeature feat = it.next();
342 355
							IGeometry geom = feat.getGeometry();
343 356

  
......
346 359
								IMultiLayerSymbol mlSym = (IMultiLayerSymbol) sym;
347 360
								for (int i = 0; i < mlSym.getLayerCount(); i++) {
348 361
									ISymbol mySym = mlSym.getLayer(i);
349
//									System.out.println("drawing on level "+zSort.getSymbolLevel(mySym));
350 362
									geom.drawInts(graphics[zSort.getSymbolLevel(mySym)], viewPort, mySym);
351 363
								}
352 364
							} else {
353 365
								geom.drawInts(graphics[zSort.getSymbolLevel(sym)], viewPort, sym);
354 366
							}
367

  
368
							// -- visual FX stuff
369
							if ((System.currentTimeMillis() - time) > screenRefreshRate) {
370
								time = System.currentTimeMillis();
371
								virtualBim = new BufferedImage(image.getWidth(),image.getHeight(),BufferedImage.TYPE_INT_ARGB);
372
								virtualGraphics = virtualBim.createGraphics();
373
								virtualGraphics.drawImage(image,0,0,null);
374
								for (int i = 0; i < imageLevels.length; i++) {
375
									virtualGraphics.drawImage(imageLevels[i],0,0, null);
376
								}
377
								g.clearRect(0, 0, image.getWidth(), image.getHeight());
378
								g.drawImage(virtualBim, 0, 0, null);
379
							}
380
							// -- end visual FX stuff
381

  
355 382
						}
356

  
383
						g.drawImage(image, 0, 0, null);
357 384
						for (int i = 0; i < imageLevels.length; i++) {
358 385
							g.drawImage(imageLevels[i],0,0, null);
386
							imageLevels[i] = null;
387
							graphics[i] = null;
359 388
						}
389
						imageLevels = null;
390
						graphics = null;
360 391
					} else {
361 392

  
362 393
						while ( !cancel.isCanceled() && it.hasNext() ) {
......
383 414
			}
384 415
		}
385 416
	}
386
	public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
417

  
418
	public void _draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
387 419
			Cancellable cancel, double scale) throws ReadDriverException {
388 420

  
389 421
		if (isWithinScale(scale)) {

Also available in: Unified diff