Revision 11243 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLayers.java
FLayers.java | ||
---|---|---|
417 | 417 |
Cancellable cancel,double scale) throws ReadDriverException { |
418 | 418 |
draw(image,g,viewPort,cancel, scale, null); |
419 | 419 |
} |
420 |
|
|
421 |
|
|
420 |
|
|
421 |
|
|
422 | 422 |
public ComposedLayer draw(BufferedImage image, Graphics2D g, ViewPort viewPort, |
423 | 423 |
Cancellable cancel,double scale, ComposedLayer group) throws ReadDriverException { |
424 | 424 |
//double scale = getFMap().getScaleView(); |
... | ... | |
431 | 431 |
long tg1 = System.currentTimeMillis(); |
432 | 432 |
///// CHEMA ComposedLayer |
433 | 433 |
|
434 |
|
|
435 |
|
|
434 |
|
|
435 |
|
|
436 | 436 |
// while (iter.hasNext()) |
437 | 437 |
// { |
438 | 438 |
for (int i=0; i < layers.size(); i++) { |
... | ... | |
442 | 442 |
FLayer lyr = (FLayer) layers.get(i); |
443 | 443 |
|
444 | 444 |
|
445 |
|
|
446 |
|
|
445 |
|
|
446 |
|
|
447 | 447 |
/* if (lyr instanceof FLyrVect && ((FLyrVect)lyr).isBroken()){ |
448 | 448 |
continue; |
449 | 449 |
} |
... | ... | |
452 | 452 |
fmap.fireLayerDrawingEvent(beforeEvent); |
453 | 453 |
if ((lyr.isDirty()) || (lyr.isCachingDrawnLayers() == false)) |
454 | 454 |
bNeedRecalculateCache = true; |
455 |
|
|
455 |
|
|
456 | 456 |
if (lyr.isVisible()) { |
457 |
|
|
457 |
|
|
458 | 458 |
long t1 = System.currentTimeMillis(); |
459 | 459 |
System.err.println("Layer " + lyr.getName() + " dirty=" + lyr.isDirty()); |
460 | 460 |
// synchronized (this) { |
... | ... | |
469 | 469 |
lyr.draw(image, g, viewPort, cancel,scale); |
470 | 470 |
// Si hay que acumlar: |
471 | 471 |
lyr.acumulateDrawing(antLayer); |
472 |
|
|
472 |
|
|
473 | 473 |
} |
474 | 474 |
else */ |
475 |
|
|
475 |
|
|
476 | 476 |
if (lyr.isCachingDrawnLayers()) |
477 | 477 |
{ |
478 | 478 |
if ((bNeedRecalculateCache) || (lyr.getCacheImageDrawnLayers()==null)) |
479 | 479 |
{ |
480 | 480 |
//if (bNeedRecalculateCache) |
481 | 481 |
// { |
482 |
|
|
482 |
|
|
483 | 483 |
///// CHEMA ComposedLayer |
484 | 484 |
if (group != null) { |
485 | 485 |
//si tenemos un grupo pendiente de pintar, pintamos |
... | ... | |
488 | 488 |
group = null; |
489 | 489 |
} |
490 | 490 |
///// CHEMA ComposedLayer |
491 |
|
|
492 |
|
|
491 |
|
|
492 |
|
|
493 | 493 |
// Copiamos la imagen actual |
494 | 494 |
BufferedImage buff = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); |
495 | 495 |
WritableRaster w = buff.getRaster(); |
... | ... | |
507 | 507 |
// prepareDrawing de FMap. |
508 | 508 |
if (lyr.isDirty()) |
509 | 509 |
{ |
510 |
|
|
511 |
|
|
510 |
|
|
511 |
|
|
512 | 512 |
///// CHEMA ComposedLayer |
513 | 513 |
// Checks for draw group (ComposedLayer) |
514 | 514 |
if (group != null) { |
... | ... | |
517 | 517 |
group = null; |
518 | 518 |
} |
519 | 519 |
///// CHEMA ComposedLayer |
520 |
|
|
521 |
|
|
520 |
|
|
521 |
|
|
522 | 522 |
g.drawImage(lyr.getCacheImageDrawnLayers(), 0, 0, null); |
523 | 523 |
System.err.println("Pinto con acelerado lo que hab?a antes de " + lyr.getName()); |
524 | 524 |
} |
... | ... | |
532 | 532 |
///// CHEMA ComposedLayer |
533 | 533 |
//lyr.draw(image, g, viewPort, cancel,scale); |
534 | 534 |
///// CHEMA ComposedLayer |
535 |
|
|
535 |
|
|
536 | 536 |
// Checks for draw group (ComposedLayer) |
537 | 537 |
if (group != null) { |
538 | 538 |
if (lyr instanceof FLayers){ |
... | ... | |
546 | 546 |
} else { |
547 | 547 |
// draw the 'pending to draw' layer group |
548 | 548 |
group.draw(image, g, viewPort, cancel,scale); |
549 |
|
|
549 |
|
|
550 | 550 |
// gets a new group instance |
551 | 551 |
group = lyr.newComposedLayer(); |
552 |
// if layer hasn't group, draws it inmediately
|
|
552 |
// if layer hasn't group, draws it inmediately |
|
553 | 553 |
if (group == null) { |
554 | 554 |
if (lyr instanceof FLayers){ |
555 | 555 |
group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group); |
... | ... | |
557 | 557 |
lyr.draw(image, g, viewPort, cancel,scale); |
558 | 558 |
} |
559 | 559 |
LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW); |
560 |
fmap.fireLayerDrawingEvent(afterEvent);
|
|
560 |
fmap.fireLayerDrawingEvent(afterEvent); |
|
561 | 561 |
} else { |
562 | 562 |
// add the layer to the group |
563 | 563 |
group.setMapContext(fmap); |
564 | 564 |
group.add(lyr); |
565 |
|
|
565 |
|
|
566 | 566 |
} |
567 | 567 |
} |
568 | 568 |
} |
569 | 569 |
} else { |
570 | 570 |
// gets a new group instance |
571 | 571 |
group = lyr.newComposedLayer(); |
572 |
// if layer hasn't group, draws it inmediately
|
|
572 |
// if layer hasn't group, draws it inmediately |
|
573 | 573 |
if (group == null) { |
574 | 574 |
if (lyr instanceof FLayers){ |
575 | 575 |
group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group); |
... | ... | |
577 | 577 |
lyr.draw(image, g, viewPort, cancel,scale); |
578 | 578 |
} |
579 | 579 |
LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW); |
580 |
fmap.fireLayerDrawingEvent(afterEvent);
|
|
580 |
fmap.fireLayerDrawingEvent(afterEvent); |
|
581 | 581 |
} else { |
582 | 582 |
// adds the layer to the group |
583 | 583 |
group.setMapContext(fmap); |
... | ... | |
585 | 585 |
} |
586 | 586 |
} |
587 | 587 |
///// CHEMA ComposedLayer |
588 |
|
|
589 |
/*
|
|
588 |
|
|
589 |
/* |
|
590 | 590 |
* (Jaume) |
591 | 591 |
* If the layer is instance of ILabelable then it may have labels. |
592 | 592 |
*/ |
593 | 593 |
if (lyr instanceof ILabelable && ((ILabelable) lyr).isLabeled()) { |
594 |
|
|
595 |
///// CHEMA ComposedLayer
|
|
594 |
|
|
595 |
///// CHEMA ComposedLayer |
|
596 | 596 |
if (group != null) { |
597 | 597 |
//si tenemos un grupo pendiente de pintar, pintamos |
598 | 598 |
// para que se pinten correctamente las etiquetas |
... | ... | |
600 | 600 |
group = null; |
601 | 601 |
} |
602 | 602 |
///// CHEMA ComposedLayer |
603 |
|
|
604 |
|
|
603 |
|
|
604 |
|
|
605 | 605 |
((ILabelable) lyr).drawLabels(image, g, viewPort, cancel, scale); |
606 | 606 |
} |
607 | 607 |
bNeedRecalculateCache = true; |
... | ... | |
627 | 627 |
} |
628 | 628 |
///// CHEMA ComposedLayer |
629 | 629 |
if (group != null && this.getParentLayer() == null) { |
630 |
//si tenemos un grupo pendiente de pintar, pintamos
|
|
630 |
//si tenemos un grupo pendiente de pintar, pintamos |
|
631 | 631 |
group.draw(image, g, viewPort, cancel,scale); |
632 | 632 |
group = null; |
633 | 633 |
|
... | ... | |
636 | 636 |
if (getVirtualLayers() != null) { |
637 | 637 |
getVirtualLayers().draw(image, g, viewPort, cancel,scale); |
638 | 638 |
} |
639 |
|
|
640 |
|
|
639 |
|
|
640 |
|
|
641 | 641 |
// } |
642 | 642 |
// catch (ConcurrentModificationException e) |
643 | 643 |
// { |
644 | 644 |
// System.err.println(e.getMessage()); |
645 | 645 |
// } |
646 | 646 |
long tg2 = System.currentTimeMillis(); |
647 |
|
|
647 |
|
|
648 | 648 |
System.out.println("Draw all layer " +this.getName() + " " + |
649 | 649 |
+ (tg2-tg1) + " milisecs."); |
650 | 650 |
///// CHEMA ComposedLayer |
651 | 651 |
return group; |
652 | 652 |
///// CHEMA ComposedLayer |
653 |
|
|
653 |
|
|
654 | 654 |
} |
655 |
|
|
655 |
|
|
656 | 656 |
/** |
657 | 657 |
* @see com.iver.cit.gvsig.fmap.layers.FLayer#print(java.awt.Graphics2D, |
658 | 658 |
* com.iver.cit.gvsig.fmap.ViewPort, |
... | ... | |
667 | 667 |
for (int i=0; i < layers.size(); i++) { |
668 | 668 |
FLayer lyr = (FLayer) layers.get(i); |
669 | 669 |
lyr.print(g, viewPort, cancel, scale, properties); |
670 |
if (lyr instanceof ILabelable) { |
|
670 |
if (lyr instanceof ILabelable && ((ILabelable) lyr).isLabeled()) {
|
|
671 | 671 |
ILabelable lLayer = (ILabelable) lyr; |
672 | 672 |
|
673 | 673 |
lLayer.drawLabels(null, g, viewPort, cancel, scale); |
Also available in: Unified diff