Revision 27445 trunk/extensions/extArcims/src/es/prodevelop/cit/gvsig/arcims/fmap/layers/FRasterLyrArcIMS.java
FRasterLyrArcIMS.java | ||
---|---|---|
128 | 128 |
* @author jldominguez |
129 | 129 |
*/ |
130 | 130 |
public class FRasterLyrArcIMS extends FLyrRasterSE { |
131 |
|
|
131 |
|
|
132 | 132 |
private static Logger logger = Logger.getLogger(FRasterLyrArcIMS.class.getName()); |
133 | 133 |
public static final String SCALE_CHANGED_COMMAND = "SCALE_HAS_CHANGED"; |
134 | 134 |
private MyCancellable myCanc; |
... | ... | |
151 | 151 |
private int[] renderBands = null; |
152 | 152 |
private FLyrRasterSE layerRaster = null; |
153 | 153 |
private ArrayList filterArguments = null; |
154 |
|
|
154 |
|
|
155 | 155 |
private int posX = 0; |
156 | 156 |
private int posY = 0; |
157 | 157 |
private double posXWC = 0; |
... | ... | |
159 | 159 |
private ArrayList actionListeners = new ArrayList(); |
160 | 160 |
private int maxTileWidth = 1023; |
161 | 161 |
private int maxTileHeight = 1023; |
162 |
|
|
162 |
|
|
163 | 163 |
private Grid grid = null; |
164 |
|
|
164 |
|
|
165 | 165 |
private boolean nameQueryChange = false; |
166 | 166 |
private ArrayList listeners = new ArrayList(); |
167 | 167 |
private boolean tiled = false; |
... | ... | |
431 | 431 |
.clone()); |
432 | 432 |
|
433 | 433 |
tiled = false; |
434 |
|
|
435 |
|
|
434 |
|
|
435 |
|
|
436 | 436 |
/* |
437 | 437 |
* Enable awake state before trying to initialize the layer |
438 |
*
|
|
438 |
* |
|
439 | 439 |
* change added to use the FLayerState support |
440 |
*
|
|
440 |
* |
|
441 | 441 |
* @author jsanz |
442 | 442 |
*/ |
443 | 443 |
try { |
... | ... | |
446 | 446 |
throw new ReadDriverException("Error changing awake state",e1); |
447 | 447 |
} |
448 | 448 |
|
449 |
|
|
449 |
|
|
450 | 450 |
if (tiles.getNumTiles() > 1) { |
451 | 451 |
tiled = true; |
452 | 452 |
tileSize[0] = tiles.getMaxTileWidth(); |
453 | 453 |
tileSize[1] = tiles.getMaxTileHeight(); |
454 |
|
|
454 |
|
|
455 | 455 |
MultiRasterDataset[][] datasets = new MultiRasterDataset[tiles.getNumRows()][tiles.getNumCols()]; |
456 | 456 |
IBuffer[][] buf = new IBuffer[tiles.getNumRows()][tiles.getNumCols()]; |
457 |
|
|
458 | 457 |
|
458 |
|
|
459 | 459 |
// more than one tile ---------------------- |
460 | 460 |
for (int tileNr = 0; tileNr < tiles.getNumTiles(); tileNr++) { |
461 | 461 |
// drawing part |
462 | 462 |
try { |
463 | 463 |
ViewPort vp = tiles.getTileViewPort(viewPort, tileNr); |
464 | 464 |
drawTile(g, vp, cancel, scale); |
465 |
|
|
465 |
|
|
466 | 466 |
if (layerRaster != null) { |
467 | 467 |
datasets[(int)(tileNr / tiles.getNumCols())][tileNr % tiles.getNumCols()] = |
468 | 468 |
(MultiRasterDataset)layerRaster.getDataSource().newDataset(); |
... | ... | |
475 | 475 |
logger.error("While drawing tile: " + de.getMessage()); |
476 | 476 |
} |
477 | 477 |
} |
478 |
|
|
478 |
|
|
479 | 479 |
try { |
480 | 480 |
if(datasets != null && datasets[0][0] != null) { |
481 | 481 |
dataset = new CompositeDataset(datasets); |
... | ... | |
485 | 485 |
throw new ReadDriverException("No hay continuidad en el mosaico.", e); |
486 | 486 |
} catch (LoadLayerException e) { |
487 | 487 |
throw new ReadDriverException("Error inicializando la capa.", e); |
488 |
} catch (InterruptedException e) { |
|
489 |
throw new ReadDriverException("Error interrupcion.", e); |
|
488 | 490 |
} |
489 |
|
|
491 |
|
|
490 | 492 |
// more than one tile ---------------------- |
491 |
|
|
492 |
|
|
493 |
|
|
494 |
|
|
493 | 495 |
} else { |
494 |
|
|
496 |
|
|
495 | 497 |
// one tile -------------------------------- |
496 | 498 |
try { |
497 | 499 |
ViewPort vp = tiles.getTileViewPort(viewPort, 0); |
... | ... | |
500 | 502 |
dataset = layerRaster.getDataSource(); |
501 | 503 |
getRender().setLastRenderBuffer(layerRaster.getRender().getLastRenderBuffer()); |
502 | 504 |
initializeRasterLayer(null, new IBuffer[][]{{layerRaster.getRender().getLastRenderBuffer()}}); |
503 |
|
|
505 |
|
|
504 | 506 |
} catch (NoninvertibleTransformException e) { |
505 | 507 |
logger.error("Non invertible matrix! "); |
506 | 508 |
} catch (DriverException de) { |
507 | 509 |
logger.error("While drawing tile: " + de.getMessage()); |
508 | 510 |
} catch (LoadLayerException e) { |
509 | 511 |
logger.error("While drawing: " + e.getMessage()); |
512 |
} catch (InterruptedException e) { |
|
513 |
logger.error("While drawing: " + e.getMessage()); |
|
510 | 514 |
} |
515 |
|
|
511 | 516 |
// one tile -------------------------------- |
512 | 517 |
|
513 |
|
|
518 |
|
|
514 | 519 |
} |
515 | 520 |
|
516 | 521 |
|
... | ... | |
583 | 588 |
ViewPort vp, |
584 | 589 |
double scale, |
585 | 590 |
Cancellable cancel) throws ReadDriverException, LoadLayerException, FilterTypeException { |
586 |
|
|
591 |
|
|
587 | 592 |
//Cerramos el dataset asociado a la capa si est? abierto. |
588 | 593 |
if(layerRaster != null) { |
589 | 594 |
layerRaster.setRemoveRasterFlag(true); |
... | ... | |
670 | 675 |
* @return A list of 2-element arrays { "Attribute name" , Value } |
671 | 676 |
*/ |
672 | 677 |
public ArrayList getAttributes() { |
673 |
|
|
678 |
|
|
674 | 679 |
// if (rasterFile != null) { |
675 | 680 |
// ArrayList attr = new ArrayList(); |
676 | 681 |
// Object[][] a = { |
... | ... | |
885 | 890 |
filterArguments = status.getFilterArguments(); |
886 | 891 |
gridTransparency = status.getTransparency(); |
887 | 892 |
renderBands = status.getRenderBands(); |
888 |
|
|
893 |
|
|
889 | 894 |
} |
890 | 895 |
} |
891 | 896 |
catch (ClassNotFoundException exc) { |
... | ... | |
1260 | 1265 |
private int bandCount = 0; |
1261 | 1266 |
private int dataType = DataBuffer.TYPE_UNDEFINED; |
1262 | 1267 |
} |
1263 |
|
|
1268 |
|
|
1264 | 1269 |
public RasterFilterList getRenderFilterList(){ |
1265 | 1270 |
return (filterList != null) ? filterList : getRender().getFilterList(); |
1266 | 1271 |
} |
... | ... | |
1273 | 1278 |
this.filterList = filterList; |
1274 | 1279 |
super.getRender().setFilterList(filterList); |
1275 | 1280 |
} |
1276 |
|
|
1281 |
|
|
1277 | 1282 |
public void setRenderBands(int[] renderBands) { |
1278 | 1283 |
this.renderBands = renderBands; |
1279 | 1284 |
getRender().setRenderBands(renderBands); |
1280 | 1285 |
} |
1281 |
|
|
1282 |
|
|
1286 |
|
|
1287 |
|
|
1283 | 1288 |
/** |
1284 | 1289 |
* Actions that are taken after setting the data sources for |
1285 | 1290 |
* the raster layer |
1286 | 1291 |
* |
1287 | 1292 |
* @throws LoadLayerException |
1293 |
* @throws InterruptedException |
|
1288 | 1294 |
*/ |
1289 |
private void initializeRasterLayer(MultiRasterDataset[][] datasets, IBuffer[][] buf) throws LoadLayerException { |
|
1295 |
private void initializeRasterLayer(MultiRasterDataset[][] datasets, IBuffer[][] buf) throws LoadLayerException, InterruptedException {
|
|
1290 | 1296 |
if(this.filterList != null) |
1291 | 1297 |
getRender().setFilterList(filterList); |
1292 | 1298 |
if(this.gridTransparency != null) |
... | ... | |
1311 | 1317 |
getRender().setLastRenderBuffer(buff); |
1312 | 1318 |
} |
1313 | 1319 |
} |
1314 |
|
|
1320 |
|
|
1315 | 1321 |
public GridTransparency getRenderTransparency() { |
1316 | 1322 |
return (gridTransparency != null) ? gridTransparency : getRender().getLastTransparency(); |
1317 | 1323 |
} |
1318 |
|
|
1324 |
|
|
1319 | 1325 |
public boolean isActionEnabled(int action) { |
1320 | 1326 |
switch (action) { |
1321 | 1327 |
case IRasterLayerActions.ZOOM_PIXEL_RESOLUTION: |
... | ... | |
1329 | 1335 |
|
1330 | 1336 |
return super.isActionEnabled(action); |
1331 | 1337 |
} |
1332 |
|
|
1338 |
|
|
1333 | 1339 |
public int[] getRenderBands() { |
1334 | 1340 |
return (renderBands != null) ? renderBands : getRender().getRenderBands(); |
1335 | 1341 |
} |
1336 | 1342 |
|
1337 |
|
|
1338 |
|
|
1339 |
|
|
1340 |
|
|
1341 |
|
|
1343 |
|
|
1344 |
|
|
1345 |
|
|
1346 |
|
|
1347 |
|
|
1342 | 1348 |
} |
Also available in: Unified diff