Revision 27445 trunk/extensions/extArcims/src/es/prodevelop/cit/gvsig/arcims/fmap/layers/FRasterLyrArcIMS.java

View differences:

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