Revision 19307

View differences:

trunk/extensions/extRasterTools-SE/config/text.properties
187 187
brightness=Brillo
188 188
contrast=Contraste
189 189
enhanced=Realce
190
enhanced_rad=Realces Radiom?tricos
190 191
rgbtohsl=RGB->HSL
191 192
hsltorgb=HSL->RGB
192 193
rgbtocmyk=RGB->CMYK
trunk/extensions/extRasterTools-SE/src/org/gvsig/raster/beans/previewbase/ParamStruct.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.raster.beans.previewbase;
20

  
21
import org.gvsig.raster.dataset.Params;
22

  
23
/**
24
 * Estructura para los par?metros de PreviewFiltering. Contiene el nombre del 
25
 * filtro, el par?metro y la clase de este.
26
 * 
27
 */
28
public class ParamStruct {
29
	String filterName = null;
30
	Params filterParam = null;
31
	Class filterClass = null;
32

  
33
	/**
34
	 * @return the filterName
35
	 */
36
	public String getFilterName() {
37
		return filterName;
38
	}
39

  
40
	/**
41
	 * @param filterName the filterName to set
42
	 */
43
	public void setFilterName(String filterName) {
44
		this.filterName = filterName;
45
	}
46

  
47
	/**
48
	 * @return the filterParam
49
	 */
50
	public Params getFilterParam() {
51
		return filterParam;
52
	}
53

  
54
	/**
55
	 * @param filterParam the filterParam to set
56
	 */
57
	public void setFilterParam(Params filterParam) {
58
		this.filterParam = filterParam;
59
	}
60

  
61
	/**
62
	 * @return the filterClass
63
	 */
64
	public Class getFilterClass() {
65
		return filterClass;
66
	}
67

  
68
	/**
69
	 * @param filterClass the filterClass to set
70
	 */
71
	public void setFilterClass(Class filterClass) {
72
		this.filterClass = filterClass;
73
	}
74
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/raster/beans/previewbase/PreviewFiltering.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.raster.beans.previewbase;
20

  
21
import java.util.ArrayList;
22

  
23
import org.gvsig.raster.dataset.Params;
24
import org.gvsig.raster.grid.filter.FilterTypeException;
25
import org.gvsig.raster.grid.filter.IRasterFilterListManager;
26
import org.gvsig.raster.grid.filter.RasterFilter;
27
import org.gvsig.raster.grid.filter.RasterFilterList;
28
import org.gvsig.raster.grid.filter.RasterFilterListManager;
29
import org.gvsig.raster.hierarchy.IRasterRendering;
30
import org.gvsig.raster.util.RasterToolsUtil;
31

  
32
import com.iver.andami.PluginServices;
33

  
34
/**
35
 * Procesado de la imagen para la previsualizaci?n. Para poder usar esta clase despu?s de instanciarla
36
 * habr? que asignarle un valor a showFiltersSelected aunque por defecto est? a true por lo que se
37
 * visualizaran los cambios sin problemas, asigna una lista de filtros inicial (que ya tenga el raster
38
 * aplicado) con setFilterStatus y asignar los filtros que queramos aplicar con addNewParam (una llamada
39
 * por cada filtro).
40
 * 
41
 * 19/02/2008
42
 * @author Nacho Brodin nachobrodin@gmail.com
43
 */
44
public class PreviewFiltering implements IPreviewRenderProcess {
45

  
46
	private boolean          showFiltersSelected     = true;
47
	private ArrayList        paramsList              = new ArrayList();
48
	private ArrayList        filtersInit             = null;
49
	
50
	/**
51
	 * Flag de selecci?n de activaci?n y desactivaci?n
52
	 * @param show
53
	 */
54
	public void showFiltersSelected(boolean show) {
55
		this.showFiltersSelected = show;
56
	}
57
	
58
	/**
59
	 * Obtiene la lista de par?metros
60
	 * @return the paramsList
61
	 */
62
	public ArrayList getParamsList() {
63
		return paramsList;
64
	}
65
	
66
	/**
67
	 * Asigna la lista de par?metros
68
	 * @param params
69
	 */
70
	public void setParamsList(ArrayList params) {
71
		this.paramsList = params;
72
	}
73
	
74
	/**
75
	 * Asigna el arrayList de filtros inicial
76
	 * @param params
77
	 */
78
	public void setFilterStatus(ArrayList filtersInit) {
79
		this.filtersInit = filtersInit;
80
	}
81
	
82
	/**
83
	 * Devuelve el arrayList de filtros inicial
84
	 * @return
85
	 */
86
	public ArrayList getFilterStatus() {
87
		return filtersInit;
88
	}
89
	
90
	/**
91
	 * A?adir un nuevo Params a la lista de Params que podemos manejar. Un Params
92
	 * equivale a un filtro cargado. El hecho de trabajar con Params y no con
93
	 * filtros, simplifica totalmente el panel. Sin tener que depender de los
94
	 * filtros nada m?s que para el momento de dibujado o guardado.
95
	 * @param name
96
	 * @param params
97
	 * @param classFilter
98
	 */
99
	public void addNewParam(String name, Params params, Class classFilter) {
100
		ParamStruct param = new ParamStruct();
101
		param.setFilterName(name);
102
		param.setFilterParam(params);
103
		param.setFilterClass(classFilter);
104
		paramsList.add(param);
105
	}
106

  
107
	/**
108
	 * Procesa la imagen con la lista de filtros si el flag showFilterSelected est? a true.
109
	 * Esta funci?n llama a addFilter por cada filtro a?adido pero es applyFilters la encargada
110
	 * de construir la lista. 
111
	 */
112
	public void process(IRasterRendering rendering) throws FilterTypeException {
113
		rendering.getRenderFilterList().clear();
114

  
115
		if (showFiltersSelected) {
116
			RasterFilterList filterList = rendering.getRenderFilterList();
117
			RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
118

  
119
			ArrayList listFilterUsed = applyFilters(rendering);
120
			ArrayList exc = new ArrayList();
121
			for (int i = 0; i < listFilterUsed.size(); i++) {
122
				IRasterFilterListManager filterManager = stackManager.getManagerByFilterClass(((ParamStruct) listFilterUsed.get(i)).getFilterClass());
123
				try {
124
					filterManager.addFilter(((ParamStruct) listFilterUsed.get(i)).getFilterClass(), ((ParamStruct) listFilterUsed.get(i)).getFilterParam());
125
				} catch (FilterTypeException e) {
126
					exc.add(e);
127
				}
128
			}
129
			if(exc.size() != 0) {
130
				RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, exc);
131
				exc.clear();
132
			}
133
		}
134
	}
135
	
136
	/**
137
	 * Aqui se seleccionan que filtros se van a aplicar y se devuelven en forma
138
	 * de ArrayList tanto para el dibujado como cuando aceptan o aplican el panel.
139
	 * @param rendering
140
	 * @return
141
	 */
142
	public ArrayList applyFilters(IRasterRendering rendering) {
143
		ArrayList listFilterUsed = new ArrayList();
144

  
145
		RasterFilterList filterList = new RasterFilterList();
146
		filterList.setEnv(rendering.getRenderFilterList().getEnv());
147
		RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
148

  
149
		if(filtersInit == null)
150
			return listFilterUsed;
151
		
152
		// Conservamos filtros no visibles ya existentes
153
		for (int i = 0; i < filtersInit.size(); i++) {
154
			// Si es visible no hacemos nada
155
			if (((RasterFilter) filtersInit.get(i)).isVisible())
156
				continue;
157

  
158
			RasterFilter obj = null;
159
			for (int j = 0; j < stackManager.getRasterFilterList().size(); j++) {
160
				Class classFilter = (Class) stackManager.getRasterFilterList().get(j);
161
				try {
162
					obj = (RasterFilter) classFilter.newInstance();
163
					if (obj.getName().equals(((RasterFilter) filtersInit.get(i)).getName()))
164
						break;
165
				} catch (InstantiationException e) {
166
					RasterToolsUtil.messageBoxError("error_creando_filtro", this, e);
167
				} catch (IllegalAccessException e) {
168
					RasterToolsUtil.messageBoxError("error_creando_filtro", this, e);
169
				}
170
			}
171

  
172
			// Si no encontramos el filtro apropiado, nos olvidamos de el
173
			if (obj == null)
174
				continue;
175

  
176
			// Si no es visible tenemos que conservar el filtro
177
			try {
178
				Params params = (Params) ((RasterFilter) filtersInit.get(i)).getUIParams(((RasterFilter) filtersInit.get(i)).getName()).clone();
179
				// A?ado el parametro RenderBands a los parametros del filtro
180
				String rgb = rendering.getRenderBands()[0] + " " + rendering.getRenderBands()[1] + " " + rendering.getRenderBands()[2];
181
				params.setParam("RenderBands", rgb, 0, null);
182

  
183
				ParamStruct newParam = new ParamStruct();
184
				newParam.setFilterClass(obj.getClass());
185
				newParam.setFilterName(((RasterFilter) filtersInit.get(i)).getName());
186
				newParam.setFilterParam(params);
187
				listFilterUsed.add(newParam);
188
			} catch (CloneNotSupportedException e) {
189
			}
190
		}
191
		return listFilterUsed;
192
	}
193

  
194
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/enhanced/ui/EnhancedPreviewFiltering.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.rastertools.enhanced.ui;
20

  
21
import org.gvsig.raster.beans.previewbase.IPreviewRenderProcess;
22
import org.gvsig.raster.grid.filter.FilterTypeException;
23
import org.gvsig.raster.hierarchy.IRasterRendering;
24

  
25
/**
26
 * Procesado de la imagen para la previsualizaci?n.
27
 * 
28
 * 19/02/2008
29
 * @author Nacho Brodin nachobrodin@gmail.com
30
 */
31
public class EnhancedPreviewFiltering implements IPreviewRenderProcess {
32

  
33
	public void process(IRasterRendering rendering) throws FilterTypeException {
34
	}
35

  
36
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/enhanced/ui/EnhancedListener.java
25 25
import org.gvsig.raster.IProcessActions;
26 26
import org.gvsig.raster.beans.canvas.layers.GraphicHistogram;
27 27
import org.gvsig.raster.beans.previewbase.PreviewBasePanel;
28
import org.gvsig.raster.beans.previewbase.PreviewFiltering;
28 29
import org.gvsig.rastertools.enhanced.graphics.HistogramGraphicBase;
29 30

  
30 31
/**
......
38 39
	private GraphicsPanel             graphic             = null;
39 40
	private PreviewBasePanel          enhancedPanel       = null;
40 41
	private EnhancedDialog            enhancedDialog      = null;
42
	private PreviewFiltering          filteredPreview     = null;
41 43
	
42 44
	/**
43 45
	 * Constructor
44 46
	 * @param selectors Panel con los selectores de opciones
45 47
	 * @param graphic Panel con los gr?ficos
48
	 * @param enhancedPanel Panel base con la previsualizaci?n
49
	 * @param enhandedDialog Dialogo general
50
	 * @param filteredPreview Preprocesado para la preview
46 51
	 */
47
	public EnhancedListener(SelectorsPanel selector, GraphicsPanel graphic, PreviewBasePanel enhancedPanel, EnhancedDialog enhancedDialog) {
52
	public EnhancedListener(SelectorsPanel selector, 
53
							GraphicsPanel graphic, 
54
							PreviewBasePanel enhancedPanel, 
55
							EnhancedDialog enhancedDialog, 
56
							PreviewFiltering filteredPreview) {
48 57
		this.selector = selector;
49 58
		this.graphic = graphic;
50 59
		this.enhancedPanel = enhancedPanel;
51 60
		this.enhancedDialog = enhancedDialog;
61
		this.filteredPreview = filteredPreview;
52 62
		
53 63
		selector.getHistogramType().addActionListener(this);
54 64
		selector.getDrawType().addActionListener(this);
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/enhanced/ui/EnhancedDialog.java
27 27
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
28 28
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
29 29
import org.gvsig.raster.beans.previewbase.PreviewBasePanel;
30
import org.gvsig.raster.beans.previewbase.PreviewFiltering;
30 31

  
31 32
import com.iver.andami.PluginServices;
32 33
import com.iver.andami.ui.mdiManager.IWindow;
......
44 45
	private PreviewBasePanel          enhancedPanel       = null;
45 46
	private GraphicsPanel             graphicsPanel       = null;
46 47
	private FLyrRasterSE              lyr                 = null;
47
	private EnhancedPreviewFiltering  filteredPreview     = null;
48
	private PreviewFiltering          filteredPreview     = null;
48 49
	private SelectorsPanel            controlsPanel       = null;
49 50
	
50 51
	/**
......
60 61
		this.setLayout(new BorderLayout(5, 5));
61 62
		
62 63
		graphicsPanel = new GraphicsPanel(lyr);
63
		filteredPreview = new EnhancedPreviewFiltering();
64
		filteredPreview = new PreviewFiltering();
64 65
		controlsPanel = new SelectorsPanel(lyr, lyrs);
65 66
				
66 67
		this.lyr = lyr;
67 68
		this.add(getPreviewBasePanel(), java.awt.BorderLayout.CENTER);
68 69
		
69
		EnhancedListener listener = new EnhancedListener(controlsPanel, graphicsPanel, getPreviewBasePanel(), this);
70
		EnhancedListener listener = new EnhancedListener(controlsPanel, graphicsPanel, getPreviewBasePanel(), this, filteredPreview);
70 71
		graphicsPanel.setListener(listener);
71 72
		
72 73
		getPreviewBasePanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL).addActionListener(listener);
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/enhanced/graphics/InputHistogram.java
118 118
			
119 119
			canvas = new GCanvas(Color.BLACK);
120 120
			canvas.setDrawableElement(new Border(borderColor));
121
			canvas.setDrawableElement(gHist);
122
			canvas.setDrawableElement(dElement);
121 123
			canvas.setDrawableElement(minMaxLines);
122
			canvas.setDrawableElement(gHist);
123
			canvas.setDrawableElement(dElement); 
124 124
		}
125 125
		return canvas;
126 126
	}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/enhanced/EnhancedTocMenuEntry.java
94 94
	 * @see com.iver.cit.gvsig.project.documents.IContextMenuAction#getText()
95 95
	 */
96 96
	public String getText() {
97
		return PluginServices.getText(this, "enhanced");
97
		return PluginServices.getText(this, "enhanced_rad");
98 98
	}
99 99

  
100 100
	/*

Also available in: Unified diff