Revision 2352

View differences:

org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/ROIMaskPreview.java
12 12
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
13 13
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
14 14
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
15
import org.gvsig.fmap.dal.coverage.exception.FilterTypeException;
15 16
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
16 17
import org.gvsig.fmap.dal.coverage.exception.ROIException;
18
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
19
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
17 20
import org.gvsig.fmap.dal.coverage.grid.render.ImageDrawer;
18 21
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
19 22
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
......
175 178
		drawer.setBuffer(buf);
176 179
		drawer.setLastTransparency(transparency);
177 180
		try {
178
			if(!ci.isRGB() && !ci.isRGBA() && !ci.isPalette())
179
				drawer.addEnhanced(inputLyr.getDataStore().getStatistics(), true, 0.2);
181
			applyFiltersToPreview(drawer);
182
			
180 183
			return (BufferedImage)drawer.drawBufferOverImageObject();
181 184
		} catch (ProcessInterruptedException e) {
182 185
			return null;
183 186
		} 
184 187
    }
185 188
	
189
	/**
190
	 * Adds filters to the preview. If the original render has a color table
191
	 * , a generic enhanced will be added.
192
	 * @param drawer
193
	 */
194
	private void applyFiltersToPreview(ImageDrawer drawer) {
195
		RasterFilterList filterList = inputLyr.getRender().getFilterList();
196
		List<RasterFilter> list = new ArrayList<RasterFilter>();
197
		if(filterList.lenght() > 0) {
198
			for (int i = 0; i < filterList.lenght(); i++) {
199
				RasterFilter rf = filterList.get(i);
200
				if(rf.getName().equals("colortable")) {
201
					drawer.addEnhanced(inputLyr.getDataStore().getStatistics(), true, 0.2);
202
					return;
203
				}
204
				list.add(rf);
205
			}
206
		}
207
		try {
208
			drawer.addFilters(inputLyr.getDataStore().getStatistics(), list);
209
		} catch (FilterTypeException e) {
210
			logger.debug("Tirando sin filtros", e);
211
		}
212
	}
213
	
186 214
	private NoData getNoDataSelected() {
187 215
		NoData nodata = RasterLocator.getManager().getDataStructFactory().createDefaultNoData(
188 216
				inputLyr.getDataStore().getBandCount(), inputLyr.getDataStore().getDataType()[0]);

Also available in: Unified diff