Revision 723

View differences:

org.gvsig.raster.wcs/trunk/org.gvsig.raster.wcs/org.gvsig.raster.wcs.app/org.gvsig.raster.wcs.app.wcsclient/src/main/java/org/gvsig/raster/wcs/app/wcsclient/layer/FLyrWCS.java
71 71
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
72 72
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
73 73
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException;
74
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
75 74
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
76 75
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
77 76
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
78 77
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
78
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
79 79
import org.gvsig.fmap.dal.exception.DataException;
80 80
import org.gvsig.fmap.dal.exception.InitializeException;
81 81
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
......
477 477
        return layer;
478 478
    }
479 479

  
480
	/*
481
     * (non-Javadoc)
482
     * @see org.gvsig.fmap.raster.IRasterRendering#getRenderTransparency()
483
     */
484
    public GridTransparency getRenderTransparency() {
480
    public Transparency getRenderTransparency() {
485 481
        return getRender().getLastTransparency();
486
        //		return (transparency != null) ? transparency : getRender().getLastTransparency();
487 482
    }
488 483

  
489 484
    /*
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.multifile/src/main/java/org/gvsig/raster/tools/app/multifile/panel/BandSelectorPanel.java
39 39
import javax.swing.table.DefaultTableModel;
40 40

  
41 41
import org.gvsig.andami.PluginServices;
42
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
43 42
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
44 43
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
44
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
45 45
import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
46 46
import org.gvsig.gui.beans.table.TableContainer;
47 47
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
48
import org.gvsig.raster.fmap.layers.FLyrRaster;
49
import org.gvsig.raster.fmap.layers.IRasterLayerActions;
48 50
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
49 51
import org.gvsig.raster.tools.app.basic.tool.properties.RasterPropertiesTocMenuEntry;
50
import org.gvsig.raster.fmap.layers.FLyrRaster;
51
import org.gvsig.raster.fmap.layers.IRasterLayerActions;
52 52

  
53 53
/**
54 54
 * Selecciona las bandas visibles en un raster. Contiene una tabla con una fila
......
527 527
	public void readDrawedBands() {
528 528
		if (fLayer.getRender() != null) {
529 529
			int[] renderBands = fLayer.getRender().getRenderBands();
530
			GridTransparency transp = fLayer.getRender().getLastTransparency();
530
			Transparency transp = fLayer.getRender().getLastTransparency();
531 531
			if(transp != null && transp.isTransparencyActive() && transp.getAlphaBandNumber() != -1)
532 532
				this.assignBand(transp.getAlphaBandNumber(), RasterDataStore.ALPHA_BAND);
533 533
			for (int i = 0; i < renderBands.length; i++) {
......
609 609
		fLayer.getRender().setRenderBands(renderBands);
610 610
		if(alphaBand != null) {
611 611
			// Ultima transparencia aplicada en el renderizador
612
			GridTransparency gt = fLayer.getRender().getLastTransparency();
612
			Transparency gt = fLayer.getRender().getLastTransparency();
613 613
			if(gt != null) 
614 614
				gt.setTransparencyBand(alphaBand.intValue());
615 615
		}
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.multifile/src/main/java/org/gvsig/raster/tools/app/multifile/panel/BandSelectorListener.java
42 42
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
43 43
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
44 44
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
45
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
46 45
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
47 46
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
48 47
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
......
447 446
					bandSetupPanel.getAssignedBand(RasterDataStore.BLUE_BAND)});
448 447
			int alphaBand = bandSetupPanel.getAssignedBand(RasterDataStore.ALPHA_BAND);
449 448
			// Ultima transparencia aplicada en el renderizador
450
			GridTransparency gt = fLayer.getRender().getLastTransparency();
449
			Transparency gt = fLayer.getRender().getLastTransparency();
451 450
			if(gt != null)
452 451
				gt.setTransparencyBand(alphaBand);
453 452

  
454 453
			// Transparencia del dataset
455 454
			if(fLayer.getDataStore() != null) {
456
				Transparency t = fLayer.getDataStore().getTransparencyFilesStatus();
455
				Transparency t = fLayer.getDataStore().getTransparency();
457 456
				if(t != null)
458 457
					t.setTransparencyBand(alphaBand);
459 458
			}
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/RasterExtension.java
527 527
					ArrayList<FLayer> list = RasterToolsUtil.getRasterLayerList(lyrs, null);
528 528
					for (int j = 0; j < list.size(); j++)
529 529
						if(list.get(j) instanceof FLyrRaster)
530
							((RasterDataStore)((FLyrRaster)list.get(j)).getDataStore()).getTransparencyFilesStatus().activeNoData(noDataTransparent);
530
							((RasterDataStore)((FLyrRaster)list.get(j)).getDataStore()).getTransparency().activeNoData(noDataTransparent);
531 531
				}
532 532

  
533 533
			return;
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/colortable/ui/ColorTablePanel.java
34 34
import org.gvsig.fmap.dal.coverage.RasterManager;
35 35
import org.gvsig.fmap.dal.coverage.exception.ColorTableException;
36 36
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
37
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
38 37
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
39 38
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
40 39
import org.gvsig.fmap.dal.coverage.grid.render.Render;
41 40
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
42 41
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
42
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
43 43
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
44 44
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
45 45
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
......
255 255

  
256 256
		// Quitamos la banda de transparencia por si el filtro de color la ha activado
257 257
		try {
258
			GridTransparency transparency = getLayer().getRender().getLastTransparency();
258
			Transparency transparency = getLayer().getRender().getLastTransparency();
259 259
			transparency.setTransparencyBand(-1);
260
			transparency.activeTransparency();
260
			//transparency.activeTransparency();
261 261
			transparency.setAlphaBand(null);
262 262
		} catch (NullPointerException ex) {
263 263
			//No quitamos la banda de transparencia
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/properties/panel/GeneralPanel.java
45 45

  
46 46
import org.gvsig.andami.PluginServices;
47 47
import org.gvsig.fmap.dal.coverage.RasterLibrary;
48
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
49 48
import org.gvsig.fmap.dal.coverage.store.props.Statistics;
49
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
50 50
import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
51 51
import org.gvsig.raster.fmap.layers.FLyrRaster;
52 52
import org.gvsig.raster.fmap.layers.IRasterLayerActions;
......
83 83
	private JPanel              scalePanel          = null;
84 84
	private JPanel              recalcStatsPanel    = null;
85 85
	private NoDataPanel         pNoDataPanel        = null;
86
	private GridTransparency    transparency        = null;
86
	private Transparency        transparency        = null;
87 87
	
88 88
	private JScrollPane         jScrollPane         = null;
89 89
	private JEditorPane         jEditorPane         = null;
......
486 486

  
487 487
		refreshHTMLStatistics();
488 488
		saveStatus();
489
		setValuesFromPanelToGridTransparency();
489
		setValuesFromPanelToTransparency();
490 490
	}
491 491
		
492 492
	/**
......
563 563
	/**
564 564
	 * Asigna los valores del panel a la transparencia de la capa.
565 565
	 */
566
	private void setValuesFromPanelToGridTransparency() {
566
	private void setValuesFromPanelToTransparency() {
567 567
		if (transparency == null)
568 568
			return;
569 569

  
......
591 591
	 */
592 592
	public void onlyApply() {
593 593
		if (RasterPropertiesTocMenuEntry.enableEvents)
594
			setValuesFromPanelToGridTransparency();
594
			setValuesFromPanelToTransparency();
595 595

  
596 596
		if (fLayer == null)
597 597
			return;
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/properties/control/TransparencyListener.java
25 25
import java.util.EventObject;
26 26

  
27 27
import org.gvsig.fmap.dal.coverage.datastruct.TransparencyRange;
28
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
28
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
29 29
import org.gvsig.raster.fmap.layers.FLyrRaster;
30 30
import org.gvsig.raster.tools.app.basic.RasterExtension;
31 31
import org.gvsig.raster.tools.app.basic.tool.properties.RasterPropertiesTocMenuEntry;
......
37 37
 * @author Nacho Brodin (nachobrodin@gmail.com)
38 38
 */
39 39
public class TransparencyListener implements TranspByPixelEventListener {
40
	private GridTransparency  transparency      = null;
40
	private Transparency      transparency      = null;
41 41
	private TransparencyPanel tPanel            = null;
42 42

  
43 43
	/**
......
52 52
	/**
53 53
	 * Carga los valores del panel desde el objeto con la transparencia
54 54
	 */
55
	private void setValuesFromGridTransparencyToPanel() {
55
	private void setValuesFromTransparencyToPanel() {
56 56
		//Asignamos la opacidad al panel
57 57
		if (transparency.getOpacity() != 255) {
58 58
			tPanel.getOpacityPanel().setControlEnabled(true);
......
81 81
	/**
82 82
	 * Carga los valores del objeto transparencia desde el panel
83 83
	 */
84
	private void setValuesFromPanelToGridTransparency() {
84
	private void setValuesFromPanelToTransparency() {
85 85
		if (transparency == null)
86 86
			return;
87 87
		// Asignamos la opacidad al objeto
......
119 119
	 */
120 120
	public void onlyApply() {
121 121
		if (RasterPropertiesTocMenuEntry.enableEvents)
122
			setValuesFromPanelToGridTransparency();
122
			setValuesFromPanelToTransparency();
123 123
	}
124 124

  
125 125
	/**
......
187 187
	public void setLayer(FLyrRaster layer) {
188 188
		transparency = layer.getRender().getLastTransparency();
189 189
		saveStatus();
190
		setValuesFromGridTransparencyToPanel();
190
		setValuesFromTransparencyToPanel();
191 191
	}
192 192
}
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/raster/process/FilterProcess.java
196 196
			//Si la imagen original ten?a una banda de transparencia se asignar? esta. Si los filtros generados
197 197
			//crean una banda se mezclar? con la original. 
198 198
			int nbands = buffer.getBandCount();
199
			if( rasterDataSource.getTransparencyFilesStatus() != null &&
200
					rasterDataSource.getTransparencyFilesStatus().getAlphaBandNumber() >= 0) {
201
				query.setDrawableBands(new int[]{rasterDataSource.getTransparencyFilesStatus().getAlphaBandNumber()});
199
			if( rasterDataSource.getTransparency() != null &&
200
					rasterDataSource.getTransparency().getAlphaBandNumber() >= 0) {
201
				query.setDrawableBands(new int[]{rasterDataSource.getTransparency().getAlphaBandNumber()});
202 202
				query.setAreaOfInterest();
203 203
				Buffer alpha = dstoreCopy.query(query);
204 204
				if(grid.getFilterList().getAlphaBand() != null)
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/src/main/java/org/gvsig/raster/util/LayerVisualStatusList.java
26 26
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
27 27
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
28 28
import org.gvsig.fmap.dal.coverage.grid.render.Render;
29
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
29 30
import org.gvsig.raster.fmap.layers.FLyrRaster;
30 31
import org.gvsig.raster.fmap.layers.IRasterLayerActions;
31 32

  
......
46 47
	 */
47 48
	public class LayerVisualStatus {
48 49
		private ArrayList<RasterFilter>    filterStatus = null;
49
		private GridTransparency           transparency = null;
50
		private Transparency               transparency = null;
50 51
		
51 52
		/**
52 53
		 * Obtiene el estado de la lista de filtros
......
66 67
		
67 68
		/**
68 69
		 * Obtiene el estado de la transparencia
69
		 * @return GridTransparency
70
		 * @return Transparency
70 71
		 */
71
		public GridTransparency getTransparency() {
72
		public Transparency getTransparency() {
72 73
			return transparency;
73 74
		}
74 75
		
75 76
		/**
76 77
		 * Asigna el estado de la transparencia
77
		 * @param GridTransparency
78
		 * @param Transparency
78 79
		 */
79
		public void setTransparency(GridTransparency transparency) {
80
		public void setTransparency(Transparency transparency) {
80 81
			this.transparency = transparency;
81 82
		}
82 83
	}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/src/main/java/org/gvsig/raster/fmap/layers/StatusLayerRaster.java
36 36
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
37 37
import org.gvsig.fmap.dal.coverage.exception.OperationNotSupportedException;
38 38
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
39
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
40 39
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
41 40
import org.gvsig.fmap.dal.coverage.grid.RasterFilterListManager;
42 41
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
43 42
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
43
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
44 44
import org.gvsig.tools.ToolsLocator;
45 45
import org.gvsig.tools.dynobject.DynStruct;
46 46
import org.gvsig.tools.persistence.PersistenceManager;
......
246 246
			layer.getRender().setRenderBands(renderBands);
247 247
				
248 248
		//Asigna la transparencia
249
		GridTransparency transp = layer.getRender().getLastTransparency(); 
249
		Transparency transp = layer.getRender().getLastTransparency(); 
250 250
		if(transp != null && transparency != 255) { 
251 251
			transp.setOpacity(transparency);
252 252
			transp.activeTransparency();
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/src/main/java/org/gvsig/raster/fmap/layers/DefaultFLyrRaster.java
66 66
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
67 67
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
68 68
import org.gvsig.fmap.dal.coverage.grid.Grid;
69
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
70 69
import org.gvsig.fmap.dal.coverage.grid.ROI;
71 70
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
72 71
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
......
410 409
		if (noDataEnabled.booleanValue() && dataStore.isNoDataEnabled()) {
411 410
			noDataType = RasterLibrary.NODATATYPE_LAYER;
412 411
			Double noDataValue = Double.valueOf(getNoDataValue());
413
			dataStore.getTransparencyFilesStatus().setNoData(noDataValue.doubleValue());
412
			dataStore.getTransparency().setNoData(noDataValue.doubleValue());
414 413
		} else {
415
			dataStore.getTransparencyFilesStatus().activeNoData(false);
414
			dataStore.getTransparency().activeNoData(false);
416 415
			noDataType = RasterLibrary.NODATATYPE_DISABLED;
417 416
		}
418 417
	}
......
433 432
		
434 433
		dataStore.resetNoDataValue();
435 434
		applyNoData();
436
		GridTransparency gridTransparency = dataStore.getTransparencyFilesStatus().getGridTransparency();
437 435

  
438 436
		filterList.setInitDataType(getDataType()[0]);
439 437

  
......
464 462

  
465 463
			getRender().setFilterList(filterList);
466 464
			// Inicializo la transparencia para el render
467
			getRender().setLastTransparency(gridTransparency);
465
			getRender().setLastTransparency(dataStore.getTransparency().cloneTransparency());
468 466
		} catch (FilterTypeException e) {
469 467
			//Ha habido un error en la asignaci?n de filtros por los que no se a?ade ninguno.
470 468
			logger.error("Error a?adiendo filtros en la inicializaci?n de capa " + this.getName() + " Datatype=" + this.getDataType(), null, e);
......
1890 1888
		super.setTransparency(trans);
1891 1889
		try {
1892 1890
			getRender().getLastTransparency().setOpacity(trans);
1893
			getRender().getLastTransparency().activeTransparency();
1894 1891
		} catch (NullPointerException e) {
1895 1892
			//Solo asigna la transparencia a la clase padre y no a la renderizaci?n
1896 1893
		}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/src/main/java/org/gvsig/raster/fmap/layers/IStatusRaster.java
88 88
	public RasterFilterList getFilterList() throws FilterTypeException;
89 89
	
90 90
	/**
91
	 * Obtiene el objeto de transparencia cargado desde el proyecto despu?s de hacer un 
92
	 * setXMLEntity
93
	 * @return la lista de filtros
94
	 */
95
	//public GridTransparency getTransparency();
96
	
97
	/**
98 91
	 * Obtiene la lista de filtros cargada desde el proyecto despu?s de hacer un 
99 92
	 * setXMLEntity. No construye los filtros sino que devuelve una lista de par?metros
100 93
	 * @return RasterFilterList
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/grid/GridTransparency.java
59 59
public interface GridTransparency extends Transparency {
60 60
	
61 61
	/**
62
	 * Comprueba si hay criterios para la aplicaci?n de transparencia y la activa si es
63
	 * as? sino se desactiva. Los criterios son:
64
	 * <P>
65
	 * Que haya una mascara de transparencia.
66
	 * </P><P>
67
	 * Que exista un buffer de datos para la aplicaci?n de nodata
68
	 * </P><P>
69
	 * Que hayan reglas sobre la aplicaci?n de transparencia.
70
	 * </P><P>
71
	 * Que la opacidad sea distita de 255 (completamente opaco). 
72
	 * </P>
73
	 */
74
	public void activeTransparency();
75
	
76
	/**
77 62
	 * Aplica las reglas de transparencia a un pixel RGB y devuelve el valor de ese
78 63
	 * mismo pixel con la transparencia aplicada. Primero procesar? los rangos. Si
79 64
	 * el pixel est? en alguno directamente lo pone transparente y lo devuelve, sino
......
84 69
	 * @return
85 70
	 */
86 71
	public int processRGB(int r, int g, int b, int line, int col);
87
	
88
	/**
89
	 * Obtiene el flag de transparencia activa o desactivada.
90
	 * @return true la transparencia est? activa y false desactiva
91
	 */
92
	public boolean isTransparencyActive();
93
	
94
	/**
95
	 * Asigna el flag de transparencia activa o desactivada.
96
	 * @param transparencyActive true activa la transparencia false la desactiva
97
	 */
98
	public void setTransparencyActive(boolean transparencyActive);
99 72
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/grid/render/Render.java
29 29
import org.gvsig.fmap.dal.coverage.exception.InvalidSetViewException;
30 30
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
31 31
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
32
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
33 32
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
34 33
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
35 34
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
35
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
36 36

  
37 37

  
38 38

  
......
58 58
	 * Asigna el ?ltimo estado de transparencia de la renderizaci?n.
59 59
	 * @param lastTransparency
60 60
	 */
61
	public void setLastTransparency(GridTransparency lastTransparency);
61
	public void setLastTransparency(Transparency lastTransparency);
62 62
	
63 63
	/**
64 64
	 * Obtiene el ?ltimo objeto transparencia aplicado en la renderizaci?n
65 65
	 * @return GridTransparency
66 66
	 */
67
	public GridTransparency getLastTransparency();
67
	public Transparency getLastTransparency();
68 68
	
69 69
	/**
70 70
	 * Gets the last alpha band number
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/store/parameter/RasterDataParameters.java
37 37
 */
38 38
public interface RasterDataParameters extends DataStoreParameters {
39 39

  
40
	/**
41
	 * Flag to know if this provider is visible or it isn't
42
	 * @return
43
	 */
44
	public boolean isVisible();
45
	
46
	/**
47
	 * Assigns the flag to know if this provider is visible or it isn't
48
	 * @return
49
	 */
50
	public void setVisible(boolean visible);
51
	
40 52
	public boolean isValid();
41 53

  
42 54
	/**
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/store/props/Transparency.java
177 177
	 * siempre ocupada.
178 178
	 */
179 179
	public void free() ;
180
	
181
	/**
182
	 * Comprueba si hay criterios para la aplicaci?n de transparencia y la activa si es
183
	 * as? sino se desactiva. Los criterios son:
184
	 * <P>
185
	 * Que haya una mascara de transparencia.
186
	 * </P><P>
187
	 * Que exista un buffer de datos para la aplicaci?n de nodata
188
	 * </P><P>
189
	 * Que hayan reglas sobre la aplicaci?n de transparencia.
190
	 * </P><P>
191
	 * Que la opacidad sea distita de 255 (completamente opaco). 
192
	 * </P>
193
	 */
194
	public void activeTransparency();
195
	
196
	
197
	/**
198
	 * Obtiene el flag de transparencia activa o desactivada.
199
	 * @return true la transparencia est? activa y false desactiva
200
	 */
201
	public boolean isTransparencyActive();
202
	
203
	/**
204
	 * Asigna el flag de transparencia activa o desactivada.
205
	 * @param transparencyActive true activa la transparencia false la desactiva
206
	 */
207
	public void setTransparencyActive(boolean transparencyActive);
208
	
209
	/**
210
	 * Clones this object
211
	 * @return
212
	 */
213
	public Transparency cloneTransparency();
180 214
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/store/RasterStoreProperties.java
180 180
	 */
181 181
	public HistogramComputer getHistogramComputer() throws HistogramException, InterruptedException;
182 182
	
183
	/**
184
	 * Gets the transparency status
185
	 * @return
186
	 */
187
	public Transparency getTransparencyFilesStatus();
188 183
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/datastruct/DataStructFactory.java
24 24
import java.awt.geom.Point2D;
25 25
import java.awt.geom.Rectangle2D;
26 26

  
27
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
28
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
29
import org.gvsig.fmap.dal.coverage.store.props.Statistics;
27
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
28
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
30 29

  
31 30
/**
32 31
 * Factory for data structures
......
94 93
	public NoData createNoData(double noData, int type, int dataType);
95 94
	
96 95
	/**
96
	 * Creates a GridTransparency from a Transparency object
97
	 * @param t
98
	 * @return
99
	 */
100
	public GridTransparency createGridTransparency(Transparency t);
101
	
102
	/**
97 103
	 * Carga el objeto DatasetListStatistics desde los datos del RMF.
98 104
	 * @param datasource
99 105
	 * @return
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/render/DefaultRender.java
53 53
import org.gvsig.fmap.dal.coverage.store.RasterQuery;
54 54
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
55 55
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
56
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
56 57
import org.gvsig.fmap.dal.coverage.util.PropertyEvent;
57 58
import org.gvsig.fmap.dal.coverage.util.PropertyListener;
58 59
import org.gvsig.fmap.dal.coverage.util.RasterUtils;
......
116 117
	 * Ultima transparencia aplicada en la visualizaci?n que es obtenida desde el
117 118
	 * grid
118 119
	 */
119
	private GridTransparency lastTransparency         = null;
120
	private Transparency     lastTransparency         = null;
120 121
	private int              lastAlphaBand            = -1;
121 122
	
122 123
	/**
......
361 362

  
362 363
		if (dataStore == null) 
363 364
			return;
365
		
366
		//If the transparency hasn't been defined yet then we'll take that from the store
364 367
		if (lastTransparency == null) {
365
			lastTransparency = new GridTransparencyImpl(dataStore.getTransparency());
368
			lastTransparency = dataStore.getTransparency().cloneTransparency();
366 369
			lastTransparency.addPropertyListener(this);
367 370
		}
368 371
		// Asignamos la banda de transparencia si existe esta
......
402 405
	private synchronized void drawBufferOnImage(Graphics2D g, ViewPortData vp, Buffer buf, double[] step, AffineTransform transf, Extent adjustedRotedRequest)
403 406
		throws RasterDriverException, InvalidSetViewException, ProcessInterruptedException {
404 407
		
405
		grid = bufferPreprocessing(buf, lastTransparency);
408
		lastTransparency = new GridTransparencyImpl(lastTransparency);
409
		grid = bufferPreprocessing(buf, (GridTransparency)lastTransparency);
406 410

  
407 411
		//Buffer filtrado para renderizar
408 412
		lastRenderBuffer = grid.getRasterBuf();
......
489 493
				replaceColorTable(colorTable);
490 494
			Grid grid = null;
491 495
			try {
492
				grid = bufferPreprocessing(buf, lastTransparency);
496
				grid = bufferPreprocessing(buf, new GridTransparencyImpl(lastTransparency));
493 497
			} catch (ProcessInterruptedException e3) {
494 498
				return;
495 499
			}
......
778 782
	 * (non-Javadoc)
779 783
	 * @see org.gvsig.fmap.dal.coverage.grid.Render#getLastTransparency()
780 784
	 */
781
	public GridTransparency getLastTransparency() {
785
	public Transparency getLastTransparency() {
782 786
		return lastTransparency;
783 787
	}
784 788
	
......
792 796

  
793 797
	/*
794 798
	 * (non-Javadoc)
795
	 * @see org.gvsig.fmap.dal.coverage.grid.Render#setLastTransparency(org.gvsig.fmap.dal.coverage.grid.GridTransparency)
799
	 * @see org.gvsig.fmap.dal.coverage.grid.render.Render#setLastTransparency(org.gvsig.fmap.dal.coverage.store.props.Transparency)
796 800
	 */
797
	public void setLastTransparency(GridTransparency lastTransparency) {
798
		if(lastTransparency instanceof GridTransparencyImpl) {
799
			this.lastTransparency = (GridTransparencyImpl)lastTransparency;
801
	public void setLastTransparency(Transparency lastTransparency) {
802
		this.lastTransparency = lastTransparency;
803
		if(this.lastTransparency != null)
800 804
			this.lastTransparency.addPropertyListener(this);
801
			if (getFilterList() != null)
802
				getFilterList().addEnvParam("Transparency", lastTransparency);
803
		}
804
		if(lastTransparency == null)
805
			this.lastTransparency = null;
806 805
	}
807 806

  
808 807
	/*
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/render/ImageDrawer.java
24 24
import java.awt.Image;
25 25
import java.awt.image.BufferedImage;
26 26

  
27
import org.gvsig.fmap.dal.coverage.RasterLocator;
28
import org.gvsig.fmap.dal.coverage.RasterManager;
27 29
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
28 30
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
29 31
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
32
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
30 33
import org.gvsig.raster.impl.DefaultRasterManager;
31 34
import org.gvsig.raster.impl.process.RasterTask;
32 35
import org.gvsig.raster.impl.process.RasterTaskQueue;
......
53 56
	private int           width     = 0;
54 57
	private int           height    = 0;
55 58
	private DefaultRender rendering = null;
59
	private RasterManager rManager  = RasterLocator.getManager();
56 60

  
57 61
	public ImageDrawer(DefaultRender rendering) {
58 62
		this.rendering = rendering;
......
92 96

  
93 97
			byte[] data = new byte[rasterBuf.getBandCount()];
94 98

  
95
			GridTransparency transparency = rendering.getLastTransparency();
99
			Transparency transparency = rendering.getLastTransparency();
96 100
			if (transparency != null && transparency.isTransparencyActive()) {
97 101
				if (transparency.existAlphaBand()
98 102
						&& transparency.getAlphaBand() != null
......
187 191
	private void drawWithTransparency(BufferedImage image, byte[] data, boolean supersampling) throws ProcessInterruptedException {
188 192
		RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString());
189 193
		int value = 0;
190
		GridTransparency transparency = rendering.getLastTransparency();
194
		Transparency t = rendering.getLastTransparency();
195
		GridTransparency transparency = rManager.getDataStructFactory().createGridTransparency(t);
191 196
//		try {
192 197
		if (supersampling) {
193 198
			int[] r = new int[height];
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/GridTransparencyImpl.java
68 68
 */
69 69
public class GridTransparencyImpl extends DataStoreTransparency implements GridTransparency {
70 70
	/**
71
	 * Flag de activaci?n de la transparencia cuando se visualiza o exporta.
72
	 */
73
	private boolean 		transparencyActive           = false;
74
			
75
	/**
76 71
	 * Constructor. Crea un objeto con las propiedades de la transparencia de un grid. 
77 72
	 * Las variables conservan sus valores por defecto
78 73
	 */
......
91 86
		activeTransparency();
92 87
	}
93 88
	
94
	/**
95
	 * Comprueba si hay criterios para la aplicaci?n de transparencia y la activa si es
96
	 * as? sino se desactiva. Los criterios son:
97
	 * <P>
98
	 * Que haya una mascara de transparencia.
99
	 * </P><P>
100
	 * Que exista un buffer de datos para la aplicaci?n de nodata
101
	 * </P><P>
102
	 * Que hayan reglas sobre la aplicaci?n de transparencia.
103
	 * </P><P>
104
	 * Que la opacidad sea distita de 255 (completamente opaco). 
105
	 * </P>
106
	 */
107
	public void activeTransparency() {
108
		if(	existAlphaBand() || isNoDataActive() ||
109
			(transparencyRanges.size() > 0) ||
110
			(opacity != 0xff))
111
			transparencyActive = true;
112
		else
113
			transparencyActive = false;
114
	}
115
	
116 89
	/*
117 90
	 * (non-Javadoc)
118 91
	 * @see org.gvsig.fmap.dal.coverage.grid.GridTransparency#processRGB(int, int, int, int, int)
......
196 169
		return 255;
197 170
	}
198 171
		
199
	/*
200
	 * (non-Javadoc)
201
	 * @see org.gvsig.fmap.dal.coverage.grid.GridTransparency#isTransparencyActive()
202
	 */
203
	public boolean isTransparencyActive() {
204
		return transparencyActive;
205
	}
206
	
207
	/**
208
	 * Asigna el flag de transparencia activa o desactivada.
209
	 * @param transparencyActive true activa la transparencia false la desactiva
210
	 */
211
	public void setTransparencyActive(boolean transparencyActive) {
212
		this.transparencyActive = transparencyActive;
213
	}
214
	
215 172
	public static void registerPersistent() {
216 173
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
217 174
		DynStruct definition = manager.addDefinition(
......
225 182
				(DynClass)ToolsLocator.getPersistenceManager()
226 183
					.getDefinition(Transparency.class)
227 184
		);
228
		definition.addDynFieldBoolean("transparencyActive");
229 185
	}
230 186
			
231 187
	@Override
232 188
	public void loadFromState(PersistentState state)
233 189
			throws PersistenceException {
234 190
		super.loadFromState(state);
235
		this.transparencyActive = state.getBoolean("transparencyActive");
236 191
	}
237 192
	
238 193
	@Override
239 194
	public void saveToState(PersistentState state) throws PersistenceException {
240 195
		super.saveToState(state);
241
		state.set("transparencyActive",transparencyActive);
242 196
	}
243 197
			
244 198
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/provider/RasterProvider.java
26 26

  
27 27
import org.cresques.cts.IProjection;
28 28
import org.gvsig.compat.net.ICancellable;
29
import org.gvsig.fmap.dal.DataParameters;
30 29
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
31 30
import org.gvsig.fmap.dal.coverage.exception.BandAccessException;
32 31
import org.gvsig.fmap.dal.coverage.exception.CloneException;
......
37 36
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
38 37
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException;
39 38
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
39
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
40 40
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
41 41
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
42 42
import org.gvsig.fmap.dal.coverage.store.props.Histogramable;
......
457 457
	 * Returs the DataParameters
458 458
	 * @return
459 459
	 */
460
	public DataParameters getDataParameters();
460
	public RasterDataParameters getDataParameters();
461 461
	
462 462
	/**
463 463
	 * Lee un bloque completo de datos del raster y devuelve un array tridimensional del tipo correcto. Esta funci?n es util
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/provider/DefaultRasterProvider.java
32 32
import org.cresques.cts.IProjection;
33 33
import org.gvsig.compat.net.ICancellable;
34 34
import org.gvsig.fmap.dal.DALLocator;
35
import org.gvsig.fmap.dal.DataParameters;
36 35
import org.gvsig.fmap.dal.DataServerExplorer;
37 36
import org.gvsig.fmap.dal.DataStoreParameters;
38 37
import org.gvsig.fmap.dal.coverage.RasterLibrary;
......
1056 1055
	 * Returs the DataParameters
1057 1056
	 * @return
1058 1057
	 */
1059
	public DataParameters getDataParameters() {
1060
		return getDataStoreParameters();
1058
	public RasterDataParameters getDataParameters() {
1059
		if(getDataStoreParameters() instanceof RasterDataParameters)
1060
			return (RasterDataParameters)getDataStoreParameters();
1061
		return null;
1061 1062
	}
1062 1063

  
1063 1064
	/*
......
1085 1086
		if( this.getDataParameters() instanceof RasterFileStoreParameters)
1086 1087
			return ((RasterFileStoreParameters)this.getDataParameters()).getFile();
1087 1088
		else
1088
			return ((RasterDataParameters)this.getDataParameters()).getURI();
1089
			return this.getDataParameters().getURI();
1089 1090
	}
1090 1091

  
1091 1092
	/*
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/properties/DataStoreTransparency.java
52 52
 * un merge de todos ellos.
53 53
 * </p>
54 54
 * <p>
55
 * Finalmente y antes de renderizar se necesita un objeto GridTransparency. Este
55
 * Finalmente y antes de renderizar se necesita un objeto Transparency. Este
56 56
 * estar? compuesto con toda la informaci?n de transparencia aplicar, es decir,
57
 * todos los objetos Transparency mezclados. GridTransparency con tiene el
57
 * todos los objetos Transparency mezclados.Transparency con tiene el
58 58
 * m?todo de procesado de un pixel. Se le proporciona un pixel y devuelve este
59 59
 * mismo pixel con la transparencia aplicada.
60 60
 * </p>
......
78 78
public class DataStoreTransparency implements Transparency, Persistent {
79 79
	public static final String PERSISTENCE_NAME = "Transparency_Persistent";
80 80

  
81
	public static int     MAX_OPACITY        = 255;
82
	protected int         alphaBandNumber    = -1;
81
	public static int     MAX_OPACITY           = 255;
82
	protected int         alphaBandNumber       = -1;
83 83
	/**
84 84
	 * Buffer con la banda alpha correspondiente a la zona a renderizar
85 85
	 */
86
	private Buffer       mask               = null;
86
	private Buffer       mask                   = null;
87 87
	/**
88 88
	 * Buffer con los datos originales (sin filtrar) correspondiente a la zona a renderizar.
89 89
	 * Esto es util para aplicar el valor NoData ya que hay que consultar el valor original del
90 90
	 * dato. Despu?s de hacer un process es recomendable hacer free para poner a null los buffers.
91 91
	 */
92
	protected Buffer     originalData       = null;
92
	protected Buffer     originalData           = null;
93 93
	/**
94 94
	 * Valor de dato transparente. Todos los p?xeles de originalData que correspondan con este
95 95
	 * valor se pondr?n 100% transparentes.
96 96
	 */
97
	protected double      noData             = RasterLibrary.defaultNoDataValue;
97
	protected double      noData                = RasterLibrary.defaultNoDataValue;
98 98
	/**
99 99
	 * Flag que indica que el uso de noData para transparencia est? activo
100 100
	 */
101
	protected boolean     noDataActive       = false;
101
	protected boolean     noDataActive          = false;
102 102
	/**
103 103
	 * Rangos de transparencia aplicados. Lista de TransparencyRange
104 104
	 */
105 105
	protected ArrayList<TransparencyRange>   
106
	                      transparencyRanges = new ArrayList<TransparencyRange>();
106
	                      transparencyRanges    = new ArrayList<TransparencyRange>();
107 107
	/**
108 108
	 * Grado de opacidad de todo el raster
109 109
	 */
110
	protected int         opacity            = 0xff;
110
	protected int         opacity               = 0xff;
111 111

  
112 112
	/**
113 113
	 * Array de listeners que ser?n informados cuando cambia la propiedad de transparencia
114 114
	 */
115 115
	private ArrayList<PropertyListener>     
116 116
	                      transparencyPropertyListener = new ArrayList<PropertyListener>();
117
	/**
118
	 * Flag de activaci?n de la transparencia cuando se visualiza o exporta.
119
	 */
120
	private boolean       transparencyActive    = false;
117 121

  
118 122
	/**
119 123
	 * Constructor
......
140 144
		this.noData = t.getNoData();
141 145
		this.noDataActive = t.isNoDataActive();
142 146
		this.originalData = t.originalData;
147
		this.transparencyActive = t.transparencyActive;
143 148
	}
144 149

  
145 150
	/*
......
452 457
		if (state.hasValue("bandnumber")){
453 458
			alphaBandNumber = state.getInt("bandnumber");
454 459
		}
460
		
461
		this.transparencyActive = state.getBoolean("transparencyActive");
455 462
	}
456 463

  
457 464
	/*
......
469 476
		if(getAlphaBandNumber() != -1) {
470 477
			state.set("bandnumber", getAlphaBandNumber());
471 478
		}
479
		
480
		state.set("transparencyActive",transparencyActive);
472 481
	}
473 482
	
474 483
	/*
475 484
	 * (non-Javadoc)
485
	 * @see org.gvsig.fmap.dal.coverage.store.props.Transparency#getGridTransparency()
486
	 */
487
	public GridTransparency getGridTransparency() {
488
		return new GridTransparencyImpl(this);
489
	}	
490
	
491
	/*
492
	 * (non-Javadoc)
476 493
	 * @see org.gvsig.fmap.dal.coverage.store.props.Transparency#activeTransparency()
477 494
	 */
478 495
	public void activeTransparency() {
479
		
496
		if(	existAlphaBand() || isNoDataActive() ||
497
			(transparencyRanges.size() > 0) ||
498
			(opacity != 0xff))
499
			transparencyActive = true;
500
		else
501
			transparencyActive = false;
480 502
	}
481 503
	
482 504
	/*
483 505
	 * (non-Javadoc)
484
	 * @see org.gvsig.fmap.dal.coverage.store.props.Transparency#getGridTransparency()
506
	 * @see org.gvsig.fmap.dal.coverage.store.props.Transparency#isTransparencyActive()
485 507
	 */
486
	public GridTransparency getGridTransparency() {
487
		return new GridTransparencyImpl(this);
488
	}	
508
	public boolean isTransparencyActive() {
509
		return transparencyActive;
510
	}
511
	
512
	/**
513
	 * Asigna el flag de transparencia activa o desactivada.
514
	 * @param transparencyActive true activa la transparencia false la desactiva
515
	 */
516
	public void setTransparencyActive(boolean transparencyActive) {
517
		this.transparencyActive = transparencyActive;
518
	}
519
	
520
	/*
521
	 * (non-Javadoc)
522
	 * @see org.gvsig.fmap.dal.coverage.store.props.Transparency#cloneTransparency()
523
	 */
524
	@SuppressWarnings("unchecked")
525
	public Transparency cloneTransparency() {
526
		DataStoreTransparency t = new DataStoreTransparency();
527
		
528
		//TODO: FUNCIONALIDAD: Falta asignar lo necesario para la transparencia por selecci?n
529
		t.transparencyRanges = (ArrayList<TransparencyRange>) getTransparencyRange().clone();
530
		t.mask = getAlphaBand();
531
		t.opacity = getOpacity();
532
		t.alphaBandNumber = alphaBandNumber;
533
		t.noData = getNoData();
534
		t.noDataActive = isNoDataActive();
535
		t.originalData = originalData;
536
		t.transparencyActive = t.transparencyActive;
537
		return t;
538
	}
489 539

  
490 540
	public static void registerPersistent() {
491 541
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
......
500 550
		definition.addDynFieldInt("bandnumber");
501 551
		definition.addDynFieldList("transparencyRange")
502 552
			.setClassOfItems(TransparencyRange.class);
553
		definition.addDynFieldBoolean("transparencyActive");
503 554
	}
504 555
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/DefaultRemoteRasterStore.java
39 39
import org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters;
40 40
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
41 41
import org.gvsig.fmap.dal.coverage.store.props.HistogramComputer;
42
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
43 42
import org.gvsig.fmap.dal.exception.InitializeException;
44 43
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
45 44
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
......
390 389
		return provider.getExtent().getMax().getY();
391 390
	}
392 391

  
393
	/*
394
	 * (non-Javadoc)
395
	 * @see org.gvsig.fmap.dal.coverage.store.RasterDataStore#getTransparencyFilesStatus()
396
	 */
397
	@Override
398
	public Transparency getTransparencyFilesStatus() {
399
		return provider.getTransparency();
400
	}
401

  
402 392
	/**
403 393
	 * Obtiene la paleta correspondiente a uno de los ficheros que forman el GeoMultiRasterFile
404 394
	 * @param i Posici?n del raster
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/AbstractRasterDataParameters.java
29 29

  
30 30
import org.cresques.cts.IProjection;
31 31
import org.gvsig.fmap.crs.CRSFactory;
32
import org.gvsig.fmap.dal.DataTypes;
33 32
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
34 33
import org.gvsig.fmap.dal.spi.AbstractDataParameters;
35 34
import org.gvsig.tools.ToolsLocator;
......
50 49
	private static final String    FIELD_SRS           = "srs";
51 50
	private static final String    FIELD_FRAME         = "frame";
52 51
	private static final String    FIELD_ALPHABAND     = "alphaband";
52
	private static final String    FIELD_VISIBLE       = "visible";
53 53
	
54 54

  
55
	@SuppressWarnings("deprecation")
56 55
	public static DynClass registerDynClass(String dynClassName) {
57 56
		DynObjectManager dynman = ToolsLocator.getDynObjectManager();
58 57
		DynField field;
......
62 61

  
63 62
		DynClass dynClass = dynman.add(dynClassName);
64 63

  
65
		field = dynClass.addDynField(FIELD_URI);
66
		field.setTheTypeOfAvailableValues(DynField.ANY);
64
		field = dynClass.addDynFieldString(FIELD_URI);
67 65
		field.setDescription("Uniform Resource Identifier (File name or URL)");
68
		field.setType(DataTypes.STRING);
66
		field.setClassOfValue(String.class);
69 67
		field.setMandatory(false);
70 68

  
71 69
		field = dynClass.addDynField(FIELD_SRS);
72
		field.setTheTypeOfAvailableValues(DynField.ANY);
73 70
		field.setDescription("SRS");
74
		field.setType(DataTypes.CRS);
71
		field.setClassOfValue(Object.class);
75 72
		field.setMandatory(false);
76 73

  
77
		field = dynClass.addDynField(FIELD_FRAME);
78
		field.setTheTypeOfAvailableValues(DynField.ANY);
74
		field = dynClass.addDynFieldInt(FIELD_FRAME);
79 75
		field.setDescription("frame");
80
		field.setType(DataTypes.INT);
76
		field.setClassOfValue(Integer.class);
81 77
		field.setMandatory(false);
82 78

  
83
		field = dynClass.addDynField(FIELD_ALPHABAND);
84
		field.setTheTypeOfAvailableValues(DynField.ANY);
79
		field = dynClass.addDynFieldInt(FIELD_ALPHABAND);
85 80
		field.setDescription("alphaband");
86
		field.setType(DataTypes.INT);
81
		field.setClassOfValue(Integer.class);
87 82
		field.setMandatory(false);
88 83
		
84
		field = dynClass.addDynFieldObject(FIELD_VISIBLE);
85
        field.setDescription("If the boolean in i position is true, that means that the i provider is visible");
86
        field.setMandatory(false);
87
        field.setClassOfValue(Object.class);
88
		
89 89
		return dynClass;
90 90
	}
91 91

  
......
177 177
			return ((Integer)b).intValue();
178 178
		return 0;
179 179
	}
180
	
181
	/*
182
	 * (non-Javadoc)
183
	 * @see org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters#isVisible()
184
	 */
185
	public boolean isVisible() {
186
		Boolean b = (Boolean)getDynValue(FIELD_VISIBLE);
187
		if(b != null)
188
			return ((Boolean)b).booleanValue();
189
		return true;
190
	}
191
	
192
	/*
193
	 * (non-Javadoc)
194
	 * @see org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters#setVisible(boolean)
195
	 */
196
	public void setVisible(boolean visible) {
197
		this.setDynValue(FIELD_VISIBLE, new Boolean(visible));
198
	}
180 199
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/DefaultRasterStore.java
737 737

  
738 738
	/*
739 739
	 * (non-Javadoc)
740
	 * @see org.gvsig.fmap.dal.coverage.store.RasterDataStore#getTransparencyFilesStatus()
741
	 */
742
	public Transparency getTransparencyFilesStatus() {
743
		return provider.getTransparency();
744
	}
745

  
746
	/*
747
	 * (non-Javadoc)
748 740
	 * @see org.gvsig.raster.impl.store.QueryableRaster#getColorTable(int)
749 741
	 */
750 742
	public ColorTable getColorTable(int i){
......
1341 1333
	public RasterDataParameters getInternalParameters() {
1342 1334
		if(provider instanceof TiledRasterProvider) {
1343 1335
			DefaultRasterProvider prov = (DefaultRasterProvider)((TiledRasterProvider)provider).getInternalProvider();
1344
			return (RasterDataParameters)prov.getDataParameters();
1336
			return prov.getDataParameters();
1345 1337
		}
1346 1338
		return (RasterDataParameters)getParameters();
1347 1339
	}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/datastruct/DefaultDataStructFactory.java
29 29
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
30 30
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
31 31
import org.gvsig.fmap.dal.coverage.datastruct.TransparencyRange;
32
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
33
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
34
import org.gvsig.fmap.dal.coverage.store.props.Statistics;
32
import org.gvsig.fmap.dal.coverage.grid.GridTransparency;
33
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
35 34
import org.gvsig.raster.impl.datastruct.persistence.DefaultColorTableLibrary;
36
import org.gvsig.raster.impl.provider.RasterProvider;
37
import org.gvsig.raster.impl.store.properties.SimpleProviderStatistics;
38
import org.gvsig.raster.impl.store.properties.MultiProviderStatistics;
35
import org.gvsig.raster.impl.grid.GridTransparencyImpl;
39 36

  
40 37
/**
41 38
 * Factory for data structures
......
51 48
	public TransparencyRange createTransparencyRange() {
52 49
		return new TransparencyRangeImpl();
53 50
	}
51
	
52
	/*
53
	 * (non-Javadoc)
54
	 * @see org.gvsig.fmap.dal.coverage.datastruct.DataStructFactory#createGridTransparency(org.gvsig.fmap.dal.coverage.store.props.Transparency)
55
	 */
56
	public GridTransparency createGridTransparency(Transparency t) {
57
		return new GridTransparencyImpl(t);
58
	}
54 59

  
55 60
   /*
56 61
    * (non-Javadoc)
org.gvsig.raster.gdal/trunk/org.gvsig.raster.gdal/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/GdalProvider.java
57 57
import org.gvsig.raster.impl.provider.tile.FileTileServer;
58 58
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
59 59
import org.gvsig.raster.impl.store.DefaultStoreFactory;
60
import org.gvsig.raster.impl.store.properties.DataStoreColorInterpretation;
61 60
import org.gvsig.raster.impl.store.properties.DataStoreMetadata;
62 61
import org.gvsig.tools.ToolsLocator;
63 62
import org.gvsig.tools.extensionpoint.ExtensionPoint;
org.gvsig.raster.mosaic/trunk/org.gvsig.raster.mosaic/org.gvsig.raster.mosaic.io/src/main/java/org/gvsig/raster/mosaic/io/MosaicProvider.java
55 55
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException;
56 56
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
57 57
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
58
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
58 59
import org.gvsig.fmap.dal.coverage.store.props.HistogramComputer;
59 60
import org.gvsig.fmap.dal.coverage.store.props.Statistics;
60 61
import org.gvsig.fmap.dal.coverage.store.props.TimeSeries;
......
240 241
		noData = getParameters().getNoData();
241 242
		noDataEnabled = true;
242 243
		setColorInterpretation(providerList.get(0).getColorInterpretation().cloneColorInterpretation());
243
		transparency = providerList.get(0).getTransparency();
244
		
244 245
		//Se le pone banda de transparencia siempre
245
		if(providerList.get(0).getDataType()[0] == Buffer.TYPE_BYTE && !providerList.get(0).getTransparency().existAlphaBand()) {
246
		if(providerList.get(0).getDataType()[0] == Buffer.TYPE_BYTE) {
246 247
			transparency = new DataStoreTransparency();
247 248
			transparency.setTransparencyBand(getBandCount());
248
		}
249
		} else 
250
			transparency = providerList.get(0).getTransparency();
249 251
		
250 252
		extent = null;
251 253
		for (int i = 0; i < providerList.size(); i++) {
......
329 331
						File file = new File(multiFileFormat.getPathToFile(i));
330 332
						if(file.exists()) {
331 333
							RasterProvider prov = loadProvider(multiFileFormat.getPathToFile(i), storeServices);
334
							if(i == 0)
335
								getParameters().setPixelSize(prov.getCellSize());
332 336
							getParameters().addProvider(prov);
333 337
						}
334 338
					} catch (ProviderNotRegisteredException e) {
......
624 628
		if(getParameters().hasParamsChanged())
625 629
			calcMetadataFromParams();
626 630
		setView(extent);
627
		String layerName = getLayerNameFromTimeSelection(getParameters().getTimeSelection());
631
		String layerName = getLayerNameFromSelection(getParameters().getTimeSelection());
628 632
		ArrayList<Tile> tileList = getTileList(extent, bandList, rasterBuf.getWidth(), rasterBuf.getHeight(), layerName);
629 633
		try {
630 634
			for (int i = 0; i < tileList.size(); i++) {
......
675 679
		if(getParameters().hasParamsChanged())
676 680
			calcMetadataFromParams();
677 681
		setView(extent);
678
		String layerName = getLayerNameFromTimeSelection(getParameters().getTimeSelection());
682
		String layerName = getLayerNameFromSelection(getParameters().getTimeSelection());
679 683
		ArrayList<Tile> tileList = getTileList(extent, bandList, bufWidth, bufHeight, layerName);
680 684
		try {
681 685
			for (int i = 0; i < tileList.size(); i++) {
......
805 809
	}
806 810
	
807 811
	/**
808
	 * Gets the layer name using the time selection
812
	 * Gets the layer name using the time selection and visibility
809 813
	 * @param t
810 814
	 * @return
811 815
	 */
812
	private String getLayerNameFromTimeSelection(Time t) {
816
	private String getLayerNameFromSelection(Time t) {
813 817
		String name = "";
814 818
		
815 819
		MessageDigest md = null;
......
822 826
		if(t == null || selectedProviders.size() != providerList.size()) {
823 827
			selectedProviders.clear();
824 828
			for (int i = 0; i < providerList.size(); i++) {
825
				selectedProviders.add(providerList.get(i));
826
				name += providerList.get(i).getName();
829
				RasterProvider prov = providerList.get(i);
830
				selectedProviders.add(prov);
831
				if(!((RasterDataParameters)prov.getDataParameters()).isVisible())
832
					name += prov.getURI().substring(prov.getURI().lastIndexOf(File.separator) + 1, prov.getURI().length());
827 833
			}
828 834
		} else {
829 835
			selectedProviders.clear();
......
845 851
						if( instant != null && 
846 852
							t.intersects(instant) &&
847 853
							!selectedProviders.contains(providerList.get(i))) {
848
							selectedProviders.add(providerList.get(i));
849
							name += providerList.get(i).getName();
854
							RasterProvider prov = providerList.get(i);
855
							selectedProviders.add(prov);
856
							if(!((RasterDataParameters)prov.getDataParameters()).isVisible())
857
								name += prov.getURI().substring(prov.getURI().lastIndexOf(File.separator) + 1, prov.getURI().length());
850 858
						}
851 859
					}
852 860
				} catch (RmfSerializerException e) {
org.gvsig.raster.mosaic/trunk/org.gvsig.raster.mosaic/org.gvsig.raster.mosaic.io/src/main/java/org/gvsig/raster/mosaic/io/MosaicDataParameters.java
45 45
	public static final String            FIELD_OVERLAP             = "Overlap";
46 46
	public static final String            FIELD_COLORCORRECTION     = "ColorCorrection";
47 47
	public static final String            FIELD_TIMESELECTION       = "TimeSelection";
48
	public static final String            FIELD_PROVIDER_VISIBLE    = "ProviderVisible";
48 49
	
49 50
	//Overlap methods
50 51
	public static final int               FIRST                     = 0;
org.gvsig.raster.mosaic/trunk/org.gvsig.raster.mosaic/org.gvsig.raster.mosaic.io/src/main/java/org/gvsig/raster/mosaic/io/MosaicDataParametersImpl.java
42 42
	public static final String            PARAMETERS_DEFINITION_NAME = "MultifileRasterDataParameters";
43 43
	private static DynClass               DYNCLASS                   = null;
44 44
	private boolean                       paramsHasChanged           = false;
45
	//private ArrayList<Boolean>            visible                    = new ArrayList<Boolean>();
45 46
	
46 47
	public MosaicDataParametersImpl() {
47 48
		super();
......
95 96
            field.setDescription("Time selection");
96 97
            field.setMandatory(false);
97 98
            field.setClassOfValue(Time.class);
99
            
100
            /*field = dynClass.addDynFieldObject(FIELD_PROVIDER_VISIBLE);
101
            field.setDescription("If the boolean in i position is true, that means that the i provider is visible");
102
            field.setMandatory(false);
103
            field.setClassOfValue(Object.class);*/
98 104

  
99 105
			DYNCLASS = dynClass;
100 106
		}
org.gvsig.raster.mosaic/trunk/org.gvsig.raster.mosaic/org.gvsig.raster.mosaic.io/src/main/java/org/gvsig/raster/mosaic/io/downloader/TileDownloaderForMosaics.java
33 33
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
34 34
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
35 35
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
36
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
36 37
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
37 38
import org.gvsig.fmap.dal.coverage.util.RasterUtils;
38 39
import org.gvsig.raster.cache.tile.Tile;
......
91 92
			//Iterates the list of providers clipping the selected extent
92 93
			for (int i = 0; i < provList.size(); i++) {
93 94
				RasterProvider p = provList.get(i);
95
				if(!p.getDataParameters().isVisible())
96
					continue;
94 97
				ci = p.getColorInterpretation();
95 98
				Buffer bufPartialResult = clipTileFromProvider((DefaultRasterProvider)p, tile);
96 99
				if(bufPartialResult != null) {
org.gvsig.raster.mosaic/trunk/org.gvsig.raster.mosaic/org.gvsig.raster.mosaic.io/src/main/java/org/gvsig/raster/mosaic/io/MosaicRasterFormatSerializer.java
199 199
		b.append("<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n");
200 200
		b.append("<" + MAIN_TAG + ">\n");
201 201
		putProperty(b, NAME, mosaicFormat.getName(), 2);
202
		putProperty(b, DESCRIPTION, mosaicFormat.getDescription(), 2);
202 203
		
203 204
		b.append("\t\t<" + URIS + ">\n");
204 205
		for (int i = 0; i < mosaicFormat.getNumberOfFiles(); i++) {
org.gvsig.raster.mosaic/trunk/org.gvsig.raster.mosaic/org.gvsig.raster.mosaic.app/src/main/java/org/gvsig/raster/mosaic/app/gui/MosaicPropertiesListener.java
57 57

  
58 58

  
59 59
/**
60
 * 
60
 * Class for listen to events in mosaic GUI
61 61
 * @author Nacho Brodin (nachobrodin@gmail.com)
62 62
 */
63 63
public class MosaicPropertiesListener implements TableModelListener, ActionListener, ButtonsPanelListener {
......
71 71
		panel.getCreateButton().addActionListener(this);
72 72
		panel.getSeeListCheck().addActionListener(this);
73 73
		panel.getDeleteButton().addActionListener(this);
74
		panel.getModel().addTableModelListener(this);
74 75
	}
75 76

  
77
	/**
78
	 * Events in the table
79
	 */
76 80
	public void tableChanged(TableModelEvent e) {
77
		
81
		if(e.getColumn() == 0) {
82
			MosaicDataParameters params = (MosaicDataParameters)panel.getfLayer().getDataStore().getParameters();
83
			Object[][] data = panel.getModel().getDataWithoutPath();
84
			for (int i = 0; i < data.length; i++) {
85
				boolean b = ((Boolean)data[i][0]).booleanValue();
86
				params.getProviders().get(i).getDataParameters().setVisible(b);
87
			}
88
		}
78 89
	}
79
	
90

  
80 91
	public void accept() {
81 92
		apply();
82 93
		
83 94
	}
84 95

  
96
	@SuppressWarnings("deprecation")
85 97
	public void apply() {
86 98
		try {
87 99
			RasterDataStore dataStore = panel.getfLayer().getDataStore();
......
136 148
			if(create) {
137 149
				MosaicProvider provMosaic = (MosaicProvider)dataManager.createProvider((DataStoreProviderServices)dataStore, newParamsMosaic);
138 150
				((DefaultFLyrRaster)panel.getfLayer()).setName(layerName);
139
				((DefaultFLyrRaster)panel.getfLayer()).getRender().setLastTransparency(null);
140 151
				//Assigns the MultifileProvider to the store
141 152
				dataStore.setProvider(provMosaic);
142 153
			}
143 154
			
155
			//((DefaultFLyrRaster)panel.getfLayer()).getRender().setLastTransparency(null);
144 156
			saveMosaicFileLayer(layerName, paramFirstFile.getURI(), uriList);
145 157
			panel.setCreateStatus();
146 158
		} catch (Exception exc) {
......
224 236
			File[] fileList = chooser.getSelectedFiles();
225 237
			ArrayList<File> fileArray = new ArrayList<File>();
226 238
			for (int i = 0; i < fileList.length; i++) {
227
				fileArray.add(fileList[i]);
239
				if(!existsFile(fileList[i]))
240
					fileArray.add(fileList[i]);
228 241
			}
229 242
			addData(fileArray);
230 243
		}
231 244
	}
232 245
	
233 246
	/**
247
	 * Returns true if exists the file in the table
248
	 * @param file
249
	 * @return
250
	 */
251
	private boolean existsFile(File file) {
252
		for (int i = 0; i < panel.getModel().getRowCount(); i++) {
253
			String path = (String)panel.getModel().getDataWithPath()[i][1];
254
			if(path.compareTo(file.getAbsolutePath()) == 0)
255
				return true;
256
		}
257
		return false;
258
	}
259
	
260
	/**
234 261
	 * Selects the files of a directory
235 262
	 */
236 263
	private void selectDirectory() {
......
246 273
				String[] files = dir.list();
247 274
				ArrayList<File> fileArray = new ArrayList<File>();
248 275
				for (int j = 0; j < files.length; j++) {
249
					fileArray.add(new File(dir + File.separator + files[j]));
276
					File f = new File(dir + File.separator + files[j]);
277
					if(!existsFile(f)) {
278
						fileArray.add(f);
279
					}
250 280
				}
251 281
				addData(fileArray);
252 282
			}
......
259 289
	 * @param data
260 290
	 * @return
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff