Revision 11853 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLyrVect.java
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