424 |
424 |
Cancellable cancel,double scale) throws DriverException {
|
425 |
425 |
draw(image,g,viewPort,cancel, scale, null);
|
426 |
426 |
}
|
427 |
|
|
428 |
|
|
|
427 |
|
|
428 |
|
429 |
429 |
public ComposedLayer draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
|
430 |
430 |
Cancellable cancel,double scale, ComposedLayer group) throws DriverException {
|
431 |
431 |
//double scale = getFMap().getScaleView();
|
... | ... | |
438 |
438 |
long tg1 = System.currentTimeMillis();
|
439 |
439 |
///// CHEMA ComposedLayer
|
440 |
440 |
|
441 |
|
|
442 |
|
|
|
441 |
|
|
442 |
|
443 |
443 |
// while (iter.hasNext())
|
444 |
444 |
// {
|
445 |
445 |
for (int i=0; i < layers.size(); i++) {
|
... | ... | |
448 |
448 |
// FLayer lyr = (FLayer) iter.next();
|
449 |
449 |
FLayer lyr = (FLayer) layers.get(i);
|
450 |
450 |
|
451 |
|
|
452 |
|
|
|
451 |
|
|
452 |
|
453 |
453 |
/* if (lyr instanceof FLyrVect && ((FLyrVect)lyr).isBroken()){
|
454 |
454 |
continue;
|
455 |
455 |
}
|
... | ... | |
494 |
494 |
group = null;
|
495 |
495 |
}
|
496 |
496 |
///// CHEMA ComposedLayer
|
497 |
|
|
498 |
497 |
|
|
498 |
|
499 |
499 |
// Copiamos la imagen actual
|
500 |
500 |
BufferedImage buff = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
|
501 |
501 |
WritableRaster w = buff.getRaster();
|
... | ... | |
513 |
513 |
// prepareDrawing de FMap.
|
514 |
514 |
if (lyr.isDirty())
|
515 |
515 |
{
|
516 |
|
|
517 |
|
|
|
516 |
|
|
517 |
|
518 |
518 |
///// CHEMA ComposedLayer
|
519 |
519 |
// Checks for draw group (ComposedLayer)
|
520 |
520 |
if (group != null) {
|
... | ... | |
523 |
523 |
group = null;
|
524 |
524 |
}
|
525 |
525 |
///// CHEMA ComposedLayer
|
526 |
|
|
527 |
526 |
|
|
527 |
|
528 |
528 |
g.drawImage(lyr.getCacheImageDrawnLayers(), 0, 0, null);
|
529 |
529 |
System.err.println("Pinto con acelerado lo que hab?a antes de " + lyr.getName());
|
530 |
530 |
}
|
... | ... | |
534 |
534 |
// Si la capa est? "sucia" o alguna de las de abajo est? sucia
|
535 |
535 |
// hay que volver a dibujar.
|
536 |
536 |
if (lyr.isDirty() || bNeedRecalculateCache)
|
537 |
|
{
|
|
537 |
{
|
538 |
538 |
if (!lyr.getFLayerStatus().isDriverLoaded())
|
539 |
539 |
{
|
540 |
540 |
continue;
|
541 |
541 |
}
|
542 |
|
|
|
542 |
|
543 |
543 |
///// CHEMA ComposedLayer
|
544 |
544 |
//lyr.draw(image, g, viewPort, cancel,scale);
|
545 |
545 |
//bNeedRecalculateCache = true;
|
546 |
546 |
//System.err.println("Pinto sin acelerado " + lyr.getName());
|
547 |
547 |
///// CHEMA ComposedLayer
|
548 |
|
|
|
548 |
|
549 |
549 |
///// CHEMA ComposedLayer
|
550 |
550 |
// Checks for draw group (ComposedLayer)
|
551 |
|
if (group != null) {
|
|
551 |
if (group != null) {
|
552 |
552 |
if (lyr instanceof FLayers){
|
553 |
553 |
group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group);
|
554 |
554 |
LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW);
|
... | ... | |
560 |
560 |
} else {
|
561 |
561 |
// draw the 'pending to draw' layer group
|
562 |
562 |
group.draw(image, g, viewPort, cancel,scale);
|
563 |
|
|
|
563 |
|
564 |
564 |
// gets a new group instance
|
565 |
|
group = lyr.newComposedLayer();
|
566 |
|
// if layer hasn't group, draws it inmediately
|
|
565 |
group = lyr.newComposedLayer();
|
|
566 |
// if layer hasn't group, draws it inmediately
|
567 |
567 |
if (group == null) {
|
568 |
568 |
if (lyr instanceof FLayers){
|
569 |
569 |
group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group);
|
... | ... | |
571 |
571 |
lyr.draw(image, g, viewPort, cancel,scale);
|
572 |
572 |
}
|
573 |
573 |
LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW);
|
574 |
|
fmap.fireLayerDrawingEvent(afterEvent);
|
|
574 |
fmap.fireLayerDrawingEvent(afterEvent);
|
575 |
575 |
} else {
|
576 |
576 |
// add the layer to the group
|
577 |
577 |
group.setMapContext(fmap);
|
578 |
578 |
group.add(lyr);
|
579 |
|
|
|
579 |
|
580 |
580 |
}
|
581 |
581 |
}
|
582 |
582 |
}
|
583 |
583 |
} else {
|
584 |
584 |
// gets a new group instance
|
585 |
585 |
group = lyr.newComposedLayer();
|
586 |
|
// if layer hasn't group, draws it inmediately
|
|
586 |
// if layer hasn't group, draws it inmediately
|
587 |
587 |
if (group == null) {
|
588 |
588 |
if (lyr instanceof FLayers){
|
589 |
589 |
group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group);
|
... | ... | |
591 |
591 |
lyr.draw(image, g, viewPort, cancel,scale);
|
592 |
592 |
}
|
593 |
593 |
LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW);
|
594 |
|
fmap.fireLayerDrawingEvent(afterEvent);
|
|
594 |
fmap.fireLayerDrawingEvent(afterEvent);
|
595 |
595 |
} else {
|
596 |
596 |
// adds the layer to the group
|
597 |
597 |
group.setMapContext(fmap);
|
... | ... | |
621 |
621 |
}
|
622 |
622 |
|
623 |
623 |
}
|
624 |
|
///// CHEMA ComposedLayer
|
|
624 |
///// CHEMA ComposedLayer
|
625 |
625 |
if (group != null && this.getParentLayer() == null) {
|
626 |
|
//si tenemos un grupo pendiente de pintar, pintamos
|
|
626 |
//si tenemos un grupo pendiente de pintar, pintamos
|
627 |
627 |
group.draw(image, g, viewPort, cancel,scale);
|
628 |
628 |
group = null;
|
629 |
629 |
|
630 |
630 |
}
|
631 |
|
///// CHEMA ComposedLayer
|
|
631 |
///// CHEMA ComposedLayer
|
632 |
632 |
if (getVirtualLayers() != null) {
|
633 |
633 |
getVirtualLayers().draw(image, g, viewPort, cancel,scale);
|
634 |
634 |
}
|
635 |
|
|
|
635 |
|
636 |
636 |
///// CHEMA ComposedLayer
|
637 |
637 |
return group;
|
638 |
638 |
///// CHEMA ComposedLayer
|
639 |
|
|
|
639 |
|
640 |
640 |
// }
|
641 |
641 |
// catch (ConcurrentModificationException e)
|
642 |
642 |
// {
|
643 |
643 |
// System.err.println(e.getMessage());
|
644 |
644 |
// }
|
645 |
645 |
}
|
646 |
|
|
|
646 |
|
647 |
647 |
/**
|
648 |
648 |
* @see com.iver.cit.gvsig.fmap.layers.FLayer#print(java.awt.Graphics2D,
|
649 |
649 |
* com.iver.cit.gvsig.fmap.ViewPort,
|
... | ... | |
1214 |
1214 |
driver.setXMLEntity(xml.getChild(2));
|
1215 |
1215 |
|
1216 |
1216 |
boolean loadOk = false;
|
1217 |
|
try {
|
1218 |
|
((DefaultDBDriver)driver).load();
|
1219 |
|
if (((DefaultDBDriver)driver).getConnection() != null) {
|
1220 |
|
loadOk = true;
|
1221 |
|
}
|
|
1217 |
if (driver instanceof DefaultDBDriver) {
|
|
1218 |
try {
|
|
1219 |
((DefaultDBDriver) driver).load();
|
|
1220 |
if (((DefaultDBDriver) driver)
|
|
1221 |
.getConnection() != null) {
|
|
1222 |
loadOk = true;
|
|
1223 |
}
|
|
1224 |
} catch (DriverException e) {
|
|
1225 |
e.printStackTrace();
|
|
1226 |
loadOk = false;
|
|
1227 |
}
|
|
1228 |
} else {
|
|
1229 |
try{
|
|
1230 |
((VectorialDatabaseDriver)driver).load();
|
|
1231 |
loadOk=true;
|
|
1232 |
}catch (Exception e) {
|
|
1233 |
loadOk=false;
|
|
1234 |
}
|
|
1235 |
}
|
1222 |
1236 |
|
1223 |
|
} catch (DriverException e) {
|
1224 |
|
e.printStackTrace();
|
1225 |
|
loadOk = false;
|
1226 |
|
|
1227 |
|
}
|
1228 |
|
|
1229 |
1237 |
layer = LayerFactory.createDBLayer(driver, name, proj);
|
1230 |
1238 |
if (!loadOk) {
|
1231 |
1239 |
layer.setAvailable(false);
|