Revision 19376 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/properties/control/EnhancedControl.java
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