Revision 19376 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/properties/control/EnhancedControl.java

View differences:

EnhancedControl.java
24 24

  
25 25
import javax.swing.JCheckBox;
26 26

  
27
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
27 28
import org.gvsig.gui.beans.panelGroup.AbstractPanelGroup;
28 29
import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
29 30
import org.gvsig.gui.beans.slidertext.listeners.SliderListener;
31
import org.gvsig.raster.dataset.FileNotOpenException;
32
import org.gvsig.raster.dataset.io.RasterDriverException;
33
import org.gvsig.raster.grid.filter.FilterAddException;
30 34
import org.gvsig.raster.grid.filter.FilterTypeException;
31 35
import org.gvsig.raster.grid.filter.RasterFilter;
32 36
import org.gvsig.raster.grid.filter.RasterFilterList;
......
34 38
import org.gvsig.raster.grid.filter.enhancement.BrightnessContrastListManager;
35 39
import org.gvsig.raster.grid.filter.enhancement.BrightnessFilter;
36 40
import org.gvsig.raster.grid.filter.enhancement.ContrastFilter;
37
import org.gvsig.raster.grid.filter.enhancement.EnhancementListManager;
38
import org.gvsig.raster.grid.filter.enhancement.LinearEnhancementFilter;
41
import org.gvsig.raster.grid.filter.enhancement.EnhancementStretchListManager;
42
import org.gvsig.raster.grid.filter.enhancement.LinearStretchEnhancementFilter;
43
import org.gvsig.raster.grid.filter.enhancement.LinearStretchParams;
39 44
import org.gvsig.raster.grid.filter.statistics.StatisticsListManager;
40 45
import org.gvsig.raster.grid.filter.statistics.TailTrimFilter;
41 46
import org.gvsig.raster.gui.properties.dialog.RasterPropertiesTocMenuEntry;
......
130 135
		public EnhancedWithTrimListener(EnhancedWithTrimPanel panel) {
131 136
			active = panel.getActive();
132 137
			active.addActionListener(this);
133
			panel.getTrimPanel().getRemoveCheck().addActionListener(this);
134
			panel.getTrimPanel().getTrimCheck().addActionListener(this);
135
			panel.getTrimPanel().getTrimSlider().addValueChangedListener(this);
138
			panel.getRemoveCheck().addActionListener(this);
139
			panel.getTrimCheck().addActionListener(this);
140
			panel.getTrimSlider().addValueChangedListener(this);
136 141
		}
137 142

  
138 143
		/*
......
209 214
			bcPanel.setControlEnabled(false);
210 215

  
211 216
		// REALCE LINEAL
212
		LinearEnhancementFilter eFilter = (LinearEnhancementFilter) filterList.getByName(LinearEnhancementFilter.names[0]);
217
		LinearStretchEnhancementFilter eFilter = (LinearStretchEnhancementFilter) filterList.getByName(LinearStretchEnhancementFilter.names[0]);
213 218
		if (eFilter != null) {
214 219
			ePanel.setControlEnabled(true);
215 220
			if (eFilter.getRemoveEnds().booleanValue())
......
234 239
	/**
235 240
	 * Carga los valores del filtro desde el panel
236 241
	 * @throws FilterTypeException
242
	 * @throws FilterAddException 
237 243
	 */
238
	private void setValuesFromPanelToFilter() throws FilterTypeException {
244
	private void setValuesFromPanelToFilter() throws FilterTypeException, FilterAddException {
239 245
		RasterFilterListManager manager = new RasterFilterListManager(filterList);
240 246

  
241 247
		// REALCE
242
		EnhancementListManager eManager = (EnhancementListManager) manager.getManagerByClass(EnhancementListManager.class);
248
		EnhancementStretchListManager eManager = (EnhancementStretchListManager) manager.getManagerByClass(EnhancementStretchListManager.class);
243 249
		if (ePanel.getActive().isSelected()) {
244 250
			IStatistics stats = dataset.getDataSource().getStatistics();
245 251
			int[] renderBands = new int[] { 0, 1, 2 };
246 252
			if (lyr instanceof IRasterRendering)
247 253
				renderBands = ((IRasterRendering) lyr).getRender().getRenderBands();
248 254
			 // En este caso siempre es necesario el m?ximo y m?nimo
249
			if (!ePanel.isTailTrimCheckSelected() || ePanel.getTrimValue() == 0) {
250
				filterList.remove(TailTrimFilter.class);
251
				eManager.addEnhancedFilter(ePanel.isRemoveEndsSelected(), stats, 0, renderBands);
252
			} else
253
				eManager.addEnhancedFilter(ePanel.isRemoveEndsSelected(), stats, (double) (ePanel.getTrimValue() / 100D), renderBands);
255
			try {
256
				if (!ePanel.isTailTrimCheckSelected() || ePanel.getTrimValue() == 0) {
257
					filterList.remove(TailTrimFilter.class);
258
					LinearStretchParams leParams = LinearStretchParams.createStandardParam(((FLyrRasterSE)lyr).getBandCount(), 0, stats);
259
					eManager.addEnhancedStretchFilter(leParams, stats, renderBands, ePanel.isRemoveEndsSelected());
260
				} else {
261
					LinearStretchParams leParams = LinearStretchParams.createStandardParam(((FLyrRasterSE)lyr).getBandCount(), (double) (ePanel.getTrimValue() / 100D), stats);
262
					eManager.addEnhancedStretchFilter(leParams, stats, renderBands, ePanel.isRemoveEndsSelected());
263
				}
264
			} catch (FileNotOpenException e) {
265
				throw new FilterAddException("No se han podido calcular estadisticas. Error al a?adir realce.");
266
			} catch (RasterDriverException e) {
267
				throw new FilterAddException("No se han podido calcular estadisticas. Error al a?adir realce.");
268
			}
254 269
		} else {
255
			filterList.remove(LinearEnhancementFilter.class);
270
			filterList.remove(LinearStretchEnhancementFilter.class);
256 271
			filterList.remove(TailTrimFilter.class);
257 272
		}
258 273

  
......
272 287
		ArrayList listOrder = (ArrayList) panelGroup.getProperties().get("filterOrder");
273 288
		ArrayList listCopy = filterList.getStatusCloned();
274 289
		int cont = 0;
275
		for (int i=0; i<listOrder.size(); i++) {
290
		for (int i = 0; i < listOrder.size(); i++) {
276 291
			int pos = hasFilter(listCopy, ((RasterFilter) listOrder.get(i)).getName());
277 292
			if (pos != -1) {
278 293
				// Esta pero en posicion equivocada
......
299 314
			setValuesFromPanelToFilter();
300 315
		} catch (FilterTypeException e) {
301 316
			RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, e);
317
		} catch (FilterAddException e) {
318
			RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, e);
302 319
		}
303 320
	}
304 321

  
......
319 336
				setValuesFromPanelToFilter();
320 337
			} catch (FilterTypeException e) {
321 338
				RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, e);
339
			} catch (FilterAddException e) {
340
				RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, e);
322 341
			}
323 342
	}
324 343

  
......
329 348
		restoreStatus();
330 349
	}
331 350

  
351
	/**
352
	 * Consulta si el filtro especificado en el par?metro name est? dentro
353
	 * de la lista filter.
354
	 * @param filter Lista donde se consulta
355
	 * @param name Nombre a comprobar si est? en la lista
356
	 * @return true si est? en la lista y false si no est?.
357
	 */
332 358
	private int hasFilter(ArrayList filter, String name) {
333 359
		for (int i = 0; i < filter.size(); i++) {
334 360
			if (((RasterFilter) filter.get(i)).getName().equals(name))
......
341 367
		panelGroup.getProperties().put("filterStatus", filterList.getStatusCloned());
342 368

  
343 369
		ArrayList filterOrder = filterList.getStatusCloned();
344
		int posEnhanced = hasFilter(filterOrder, "enhanced");
370
		int posEnhanced = hasFilter(filterOrder, "enhanced_stretch");
345 371
		int posTailTrim = hasFilter(filterOrder, "tailTrim");
346 372
		// Si tiene realce comprobamos el tailtrim
347 373
		if (posEnhanced != -1) {
......
356 382
				filterOrder.remove(posTailTrim);
357 383
			// Insertamos primero el tailtrim y luego el realce para conservar un orden logico
358 384
			filterOrder.add(0, StatisticsListManager.createTailFilter(0, 0, false, null));
359
			filterOrder.add(1, EnhancementListManager.createEnhancedFilter(false, null, 0, null));
385
			filterOrder.add(1, EnhancementStretchListManager.createEnhancedFilter(null, null, null, false));
360 386
		}
361 387

  
362 388
		// Si no tiene brillo, lo insertamos

Also available in: Unified diff