Revision 11030
branches/v10/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLyrDefault.java | ||
---|---|---|
61 | 61 |
import com.iver.cit.gvsig.fmap.crs.CRSFactory; |
62 | 62 |
import com.iver.cit.gvsig.fmap.drivers.DriverIOException; |
63 | 63 |
import com.iver.cit.gvsig.fmap.edition.EditionException; |
64 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.ComposedLayer; |
|
64 | 65 |
import com.iver.cit.gvsig.fmap.operations.strategies.Strategy; |
65 | 66 |
import com.iver.utiles.IPersistance; |
66 | 67 |
import com.iver.utiles.XMLEntity; |
... | ... | |
778 | 779 |
} |
779 | 780 |
|
780 | 781 |
|
782 |
/* By default this operation is not suported |
|
783 |
* |
|
784 |
* @see com.iver.cit.gvsig.fmap.layers.FLayer#newComposedLayer() |
|
785 |
*/ |
|
786 |
public ComposedLayer newComposedLayer() { |
|
787 |
return null; |
|
788 |
} |
|
789 |
|
|
790 |
|
|
781 | 791 |
} |
branches/v10/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLayer.java | ||
---|---|---|
58 | 58 |
import com.iver.cit.gvsig.fmap.ViewPort; |
59 | 59 |
import com.iver.cit.gvsig.fmap.drivers.DriverIOException; |
60 | 60 |
import com.iver.cit.gvsig.fmap.edition.EditionException; |
61 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.ComposedLayer; |
|
61 | 62 |
import com.iver.utiles.XMLEntity; |
62 | 63 |
import com.iver.utiles.swing.threads.Cancellable; |
63 | 64 |
|
... | ... | |
426 | 427 |
public Map getExtendedProperties(); |
427 | 428 |
|
428 | 429 |
/** |
430 |
* Return a new instance of ComposedLayer. |
|
431 |
* This allow make a single draw for a group |
|
432 |
* of layers with the same source. |
|
433 |
* |
|
434 |
* If this operation is not aplicable for this |
|
435 |
* kind of layer this method returns null. |
|
436 |
* |
|
437 |
* @see com.iver.cit.gvsig.fmap.layers.layerOperations.ComposedLayer |
|
438 |
* @return ComposedLayer instance or null |
|
439 |
*/ |
|
440 |
public ComposedLayer newComposedLayer(); |
|
441 |
|
|
442 |
/** |
|
429 | 443 |
* @return |
430 | 444 |
*/ |
431 | 445 |
Image getTocStatusImage(); |
branches/v10/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/layerOperations/ComposedLayer.java | ||
---|---|---|
3 | 3 |
import java.awt.Graphics2D; |
4 | 4 |
import java.awt.image.BufferedImage; |
5 | 5 |
|
6 |
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
|
|
6 |
import com.iver.cit.gvsig.fmap.DriverException;
|
|
7 | 7 |
import com.iver.cit.gvsig.fmap.ViewPort; |
8 | 8 |
import com.iver.cit.gvsig.fmap.layers.FLayer; |
9 | 9 |
import com.iver.utiles.swing.threads.Cancellable; |
... | ... | |
40 | 40 |
* @see com.iver.cit.gvsig.fmap.layers.FLayer#draw(BufferedImage, Graphics2D, ViewPort, Cancellable, double) |
41 | 41 |
*/ |
42 | 42 |
public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, |
43 |
Cancellable cancel,double scale) throws ReadDriverException;
|
|
43 |
Cancellable cancel,double scale) throws DriverException; |
|
44 | 44 |
|
45 | 45 |
|
46 | 46 |
} |
branches/v10/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLayers.java | ||
---|---|---|
47 | 47 |
import java.awt.image.WritableRaster; |
48 | 48 |
import java.io.File; |
49 | 49 |
import java.util.ArrayList; |
50 |
import java.util.Collection; |
|
50 | 51 |
import java.util.Collections; |
51 | 52 |
import java.util.Iterator; |
52 | 53 |
import java.util.List; |
... | ... | |
71 | 72 |
import com.iver.cit.gvsig.fmap.drivers.VectorialDatabaseDriver; |
72 | 73 |
import com.iver.cit.gvsig.fmap.drivers.VectorialDriver; |
73 | 74 |
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver; |
75 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.ComposedLayer; |
|
74 | 76 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.InfoByPoint; |
75 | 77 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.LayerCollection; |
76 | 78 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.VectorialData; |
... | ... | |
425 | 427 |
// try |
426 | 428 |
// { |
427 | 429 |
boolean bNeedRecalculateCache = false; |
430 |
|
|
431 |
///// CHEMA ComposedLayer |
|
432 |
long tg1 = System.currentTimeMillis(); |
|
433 |
ComposedLayer group = null; |
|
434 |
ArrayList pendingEvents= new ArrayList(); |
|
435 |
boolean fireAfterDrawEvent = true; |
|
436 |
///// CHEMA ComposedLayer |
|
437 |
|
|
438 |
|
|
439 |
|
|
428 | 440 |
// while (iter.hasNext()) |
429 | 441 |
// { |
430 | 442 |
for (int i=0; i < layers.size(); i++) { |
... | ... | |
432 | 444 |
break; // M?s que nada porque las capas raster no son interrumpibles por ahora. |
433 | 445 |
// FLayer lyr = (FLayer) iter.next(); |
434 | 446 |
FLayer lyr = (FLayer) layers.get(i); |
447 |
|
|
448 |
|
|
449 |
///// CHEMA ComposedLayer |
|
450 |
fireAfterDrawEvent = true; |
|
451 |
///// CHEMA ComposedLayer |
|
452 |
|
|
453 |
|
|
435 | 454 |
/* if (lyr instanceof FLyrVect && ((FLyrVect)lyr).isBroken()){ |
436 | 455 |
continue; |
437 | 456 |
} |
... | ... | |
467 | 486 |
{ |
468 | 487 |
//if (bNeedRecalculateCache) |
469 | 488 |
// { |
489 |
|
|
490 |
///// CHEMA ComposedLayer |
|
491 |
if (group != null) { |
|
492 |
//si tenemos un grupo pendiente de pintar, pintamos |
|
493 |
// para que la cache sea fiable |
|
494 |
group.draw(image, g, viewPort, cancel,scale); |
|
495 |
fireLayerDrawingEvents(pendingEvents); |
|
496 |
pendingEvents.clear(); |
|
497 |
group = null; |
|
498 |
} |
|
499 |
///// CHEMA ComposedLayer |
|
500 |
|
|
501 |
|
|
470 | 502 |
// Copiamos la imagen actual |
471 | 503 |
BufferedImage buff = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); |
472 | 504 |
WritableRaster w = buff.getRaster(); |
... | ... | |
484 | 516 |
// prepareDrawing de FMap. |
485 | 517 |
if (lyr.isDirty()) |
486 | 518 |
{ |
519 |
|
|
520 |
|
|
521 |
///// CHEMA ComposedLayer |
|
522 |
// Checks for draw group (ComposedLayer) |
|
523 |
if (group != null) { |
|
524 |
// it's going to load a cache image, |
|
525 |
// the current draw isn't needed |
|
526 |
fireLayerDrawingEvents(pendingEvents); |
|
527 |
pendingEvents.clear(); |
|
528 |
group = null; |
|
529 |
} |
|
530 |
///// CHEMA ComposedLayer |
|
531 |
|
|
532 |
|
|
487 | 533 |
g.drawImage(lyr.getCacheImageDrawnLayers(), 0, 0, null); |
488 | 534 |
System.err.println("Pinto con acelerado lo que hab?a antes de " + lyr.getName()); |
489 | 535 |
} |
... | ... | |
493 | 539 |
// Si la capa est? "sucia" o alguna de las de abajo est? sucia |
494 | 540 |
// hay que volver a dibujar. |
495 | 541 |
if (lyr.isDirty() || bNeedRecalculateCache) |
496 |
{ |
|
497 |
if (lyr.getFLayerStatus().isDriverLoaded()) |
|
542 |
{
|
|
543 |
if (!lyr.getFLayerStatus().isDriverLoaded())
|
|
498 | 544 |
{ |
499 |
lyr.draw(image, g, viewPort, cancel,scale); |
|
500 |
bNeedRecalculateCache = true; |
|
501 |
System.err.println("Pinto sin acelerado " + lyr.getName()); |
|
545 |
continue; |
|
546 |
} |
|
547 |
|
|
548 |
///// CHEMA ComposedLayer |
|
549 |
//lyr.draw(image, g, viewPort, cancel,scale); |
|
550 |
//bNeedRecalculateCache = true; |
|
551 |
//System.err.println("Pinto sin acelerado " + lyr.getName()); |
|
552 |
///// CHEMA ComposedLayer |
|
553 |
|
|
554 |
///// CHEMA ComposedLayer |
|
555 |
// Checks for draw group (ComposedLayer) |
|
556 |
if (group != null) { |
|
557 |
//If layer can be added to the group, does it |
|
558 |
if (group.canAdd(lyr)) { |
|
559 |
group.add(lyr); |
|
560 |
pendingEvents.add(new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW)); |
|
561 |
fireAfterDrawEvent=false; |
|
562 |
} else { |
|
563 |
// draw the 'pending to draw' layer group |
|
564 |
group.draw(image, g, viewPort, cancel,scale); |
|
565 |
fireLayerDrawingEvents(pendingEvents); |
|
566 |
pendingEvents.clear(); |
|
502 | 567 |
|
568 |
// gets a new group instance |
|
569 |
group = lyr.newComposedLayer(); |
|
570 |
// if layer hasn't group, draws it inmediately |
|
571 |
if (group == null) { |
|
572 |
lyr.draw(image, g, viewPort, cancel,scale); |
|
573 |
} else { |
|
574 |
// add the layer to the group |
|
575 |
group.add(lyr); |
|
576 |
pendingEvents.add(new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW)); |
|
577 |
fireAfterDrawEvent=false; |
|
578 |
} |
|
579 |
} |
|
580 |
} else { |
|
581 |
// gets a new group instance |
|
582 |
group = lyr.newComposedLayer(); |
|
583 |
// if layer hasn't group, draws it inmediately |
|
584 |
if (group == null) { |
|
585 |
lyr.draw(image, g, viewPort, cancel,scale); |
|
586 |
} else { |
|
587 |
// adds the layer to the group |
|
588 |
group.add(lyr); |
|
589 |
pendingEvents.add(new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW)); |
|
590 |
fireAfterDrawEvent=false; |
|
591 |
} |
|
503 | 592 |
} |
593 |
///// CHEMA ComposedLayer |
|
594 |
bNeedRecalculateCache = true; |
|
504 | 595 |
} |
505 | 596 |
} catch (DriverException e){ |
506 | 597 |
// fmap.callNewErrorEvent(new ErrorEvent(lyr.getName(), e)); |
... | ... | |
523 | 614 |
fmap.fireLayerDrawingEvent(afterEvent); |
524 | 615 |
|
525 | 616 |
} |
617 |
///// CHEMA ComposedLayer |
|
618 |
if (group != null) { |
|
619 |
//si tenemos un grupo pendiente de pintar, pintamos |
|
620 |
group.draw(image, g, viewPort, cancel,scale); |
|
621 |
fireLayerDrawingEvents(pendingEvents); |
|
622 |
|
|
623 |
} |
|
624 |
///// CHEMA ComposedLayer |
|
526 | 625 |
if (getVirtualLayers() != null) { |
527 | 626 |
getVirtualLayers().draw(image, g, viewPort, cancel,scale); |
528 | 627 |
} |
... | ... | |
532 | 631 |
// System.err.println(e.getMessage()); |
533 | 632 |
// } |
534 | 633 |
} |
535 |
|
|
634 |
|
|
635 |
private void fireLayerDrawingEvents(Collection events) { |
|
636 |
Iterator iter = events.iterator(); |
|
637 |
LayerDrawEvent afterEvent; |
|
638 |
while (iter.hasNext()) { |
|
639 |
afterEvent =(LayerDrawEvent)iter.next(); |
|
640 |
System.out.println("+++ evento " + afterEvent.getLayer().getName()); |
|
641 |
fmap.fireLayerDrawingEvent(afterEvent); |
|
642 |
} |
|
643 |
} |
|
644 |
|
|
536 | 645 |
/** |
537 | 646 |
* @see com.iver.cit.gvsig.fmap.layers.FLayer#print(java.awt.Graphics2D, |
538 | 647 |
* com.iver.cit.gvsig.fmap.ViewPort, |
branches/v10/extensions/extWMS/src/com/iver/cit/gvsig/fmap/layers/ComposedLayerWMS.java | ||
---|---|---|
7 | 7 |
import java.awt.image.BufferedImage; |
8 | 8 |
import java.util.Vector; |
9 | 9 |
|
10 |
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
|
|
10 |
import com.iver.cit.gvsig.fmap.DriverException;
|
|
11 | 11 |
import com.iver.cit.gvsig.fmap.ViewPort; |
12 | 12 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.ComposedLayer; |
13 | 13 |
import com.iver.utiles.swing.threads.Cancellable; |
... | ... | |
69 | 69 |
* @see com.iver.cit.gvsig.fmap.layers.layerOperations.ComposedLayer#draw(java.awt.image.BufferedImage, java.awt.Graphics2D, com.iver.cit.gvsig.fmap.ViewPort, com.iver.utiles.swing.threads.Cancellable, double) |
70 | 70 |
*/ |
71 | 71 |
public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, |
72 |
Cancellable cancel, double scale) throws ReadDriverException {
|
|
72 |
Cancellable cancel, double scale) throws DriverException { |
|
73 | 73 |
this.layer.draw(image,g,viewPort,cancel,scale); |
74 | 74 |
} |
75 | 75 |
|
Also available in: Unified diff