Revision 2354 org.gvsig.raster.tools/trunk/templates/rasterTaskProjectTemplate/alg_with_preview_template/sources/app/ProjectTemplatePreview.java

View differences:

ProjectTemplatePreview.java
3 3
import java.awt.Graphics2D;
4 4
import java.awt.geom.Rectangle2D;
5 5
import java.awt.image.BufferedImage;
6
import java.util.ArrayList;
6 7
import java.util.HashMap;
8
import java.util.List;
7 9

  
8 10
import org.gvsig.fmap.dal.coverage.RasterLocator;
9 11
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
10 12
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
13
import org.gvsig.fmap.dal.coverage.exception.FilterTypeException;
11 14
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
15
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
16
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
12 17
import org.gvsig.fmap.dal.coverage.grid.render.ImageDrawer;
18
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
19
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
13 20
import org.gvsig.gui.beans.imagenavigator.ImageUnavailableException;
14 21
import org.gvsig.raster.fmap.layers.FLyrRaster;
15 22
import org.gvsig.raster.projecttemplate.algorithm.ProjectTemplateProcess;
......
146 153
		HashMap<String, Object> map = (HashMap<String, Object>)task.getResult();
147 154
		Buffer buf = (Buffer)map.get(ProjectTemplateProcess.BUFFER);
148 155
		buf.setDataExtent(ext.toRectangle2D());
149
		if(buf.getBandCount() == 1) {
150
			buf.replicateBand(0, 1);
151
			buf.replicateBand(0, 2);
152
		}
156
		
157
		/*ColorInterpretation ci = inputLyr.getDataStore().getColorInterpretation();
158
		Transparency transparency = null;
159
		if(ci.isRGB() || ci.isRGBA()) {
160
			Integer alphaBandNumber = (Integer)map.get(ProjectTemplateProcess.ALPHA_BAND);
161
			transparency = RasterLocator.getManager().getDataStructFactory().createTransparency(buf.getBandCount());
162
			transparency.setTransparencyBand(alphaBandNumber);
163
			transparency.activeTransparency();
164
		}*/
165
		
153 166
		ImageDrawer drawer = RasterLocator.getManager().createImageDrawerService();
154 167
		drawer.setBuffer(buf);
155 168
		try {
156
			//drawer.addEnhanced(inputLyr.getDataStore().getStatistics(), true, 0.2);
169
			applyFiltersToPreview(drawer);
170
			
157 171
			return (BufferedImage)drawer.drawBufferOverImageObject();
158 172
		} catch (ProcessInterruptedException e) {
159 173
			return null;
160 174
		} 
161 175
    }
162 176
	
177
	/**
178
	 * Adds filters to the preview.
179
	 * @param drawer
180
	 */
181
	private void applyFiltersToPreview(ImageDrawer drawer) {
182
		RasterFilterList filterList = inputLyr.getRender().getFilterList();
183
		List<RasterFilter> list = new ArrayList<RasterFilter>();
184
		if(filterList.lenght() > 0) {
185
			for (int i = 0; i < filterList.lenght(); i++) {
186
				RasterFilter rf = filterList.get(i);
187
				list.add(rf);
188
			}
189
		}
190
		try {
191
			drawer.addFilters(inputLyr.getDataStore().getStatistics(), list);
192
		} catch (FilterTypeException e) {
193
			logger.debug("The filters have not been applied", e);
194
		}
195
	}
196
	
163 197
	public Object getSource() {
164 198
		return null;
165 199
	}

Also available in: Unified diff