Revision 11792 trunk/libraries/libRaster/src/org/gvsig/raster/grid/filter/enhancement/EnhancementListManager.java

View differences:

EnhancementListManager.java
68 68
		extensionPoints.add("RasterFilter", "Enhancement", EnhancementListManager.class);
69 69
	}
70 70
	
71
	 /**
72
     * A?ade un filtro de realce. Esta versi?n tiene el par?metro para a?adirle el nombre
73
     * del fichero. Esto se usa para que si a un fichero se le ha calculado ya el recorte de colas
74
     * no se vuelva a calcular, evitando as? que si hacemos un draw a una imagen por bloques cada
75
     * bloque tenga un c?lculo distinto para el recorte.
76
     * @param removeAll	true si se desea eliminar cualquier filtro de brillo que 
77
     * hubiera en la pila antes y false si se acumula sobre lo que haya
78
     */
79
    public void addEnhancedFilter(boolean removeEnds, IStatistics stats, double tailTrim, 
80
    		int insertionMode, int[] renderBands) {
81
        String fName = Messages.getText(LinearEnhancementFilter.genericName);
82
		
83
		if(	insertionMode == RasterFilterList.ADD_END_AND_DELETE && filterList.isActive(fName)) {
71
	/**
72
	 * A?ade un filtro de realce. Esta versi?n tiene el par?metro para a?adirle el nombre
73
	 * del fichero. Esto se usa para que si a un fichero se le ha calculado ya el recorte de colas
74
	 * no se vuelva a calcular, evitando as? que si hacemos un draw a una imagen por bloques cada
75
	 * bloque tenga un c?lculo distinto para el recorte.
76
	 * @param removeAll	true si se desea eliminar cualquier filtro de brillo que 
77
	 * hubiera en la pila antes y false si se acumula sobre lo que haya
78
	 */
79
	public void addEnhancedFilter(boolean removeEnds, IStatistics stats, double tailTrim, int insertionMode, int[] renderBands) {
80
		String fName = Messages.getText(LinearEnhancementFilter.genericName);
81

  
82
		if (insertionMode == RasterFilterList.ADD_END_AND_DELETE && filterList.isActive(fName)) {
84 83
			filterList.remove(fName);
85 84
			filterListManager.controlTypes();
86 85
		}
87
		
88
        RasterFilter filter = null;
89
        
90
        switch (filterList.getDataTypeInFilter(fName, insertionMode)) {
91
        case IBuffer.TYPE_IMAGE:
92
            //filter = new LinearEnhancementImageFilter();
93
            break;
94
        case IBuffer.TYPE_SHORT:
95
        	filter = new LinearEnhancementShortFilter();
96
            break;
97
        case IBuffer.TYPE_USHORT:
98
        case IBuffer.TYPE_INT:
99
        	//filter = new LinearEnhancementIntegerFilter();
100
            break;
101
        case IBuffer.TYPE_FLOAT:
102
        	filter = new LinearEnhancementFloatFilter();
103
            break;
104
        case IBuffer.TYPE_DOUBLE:
105
        	filter = new LinearEnhancementDoubleFilter();
106
            break;
107
        }
108 86

  
109
        if(filter != null){
110
        	filter.addParam("stats", stats);
111
	        if (removeEnds) {
112
	        	filter.addParam("remove", new Boolean(true));
113
	        } else {
114
	        	filter.addParam("remove", new Boolean(false));
115
	        }
116
	        filter.addParam("tailTrim", new Double(tailTrim));
117
	        filter.addParam("renderBands", renderBands);
118
	        
119
	        if(insertionMode == RasterFilterList.MODIFY_LAST) {
120
				if(filterList.isActive(fName)) {
87
		RasterFilter filter = null;
88

  
89
		switch (filterList.getDataTypeInFilter(fName, insertionMode)) {
90
			case IBuffer.TYPE_IMAGE:
91
				// filter = new LinearEnhancementImageFilter();
92
				break;
93
			case IBuffer.TYPE_SHORT:
94
				filter = new LinearEnhancementShortFilter();
95
				break;
96
			case IBuffer.TYPE_USHORT:
97
			case IBuffer.TYPE_INT:
98
				// filter = new LinearEnhancementIntegerFilter();
99
				break;
100
			case IBuffer.TYPE_FLOAT:
101
				filter = new LinearEnhancementFloatFilter();
102
				break;
103
			case IBuffer.TYPE_DOUBLE:
104
				filter = new LinearEnhancementDoubleFilter();
105
				break;
106
		}
107

  
108
		if (filter != null) {
109
			filter.addParam("stats", stats);
110
			if (removeEnds) {
111
				filter.addParam("remove", new Boolean(true));
112
			} else {
113
				filter.addParam("remove", new Boolean(false));
114
			}
115
			filter.addParam("tailTrim", new Double(tailTrim));
116
			filter.addParam("renderBands", renderBands);
117

  
118
			if (insertionMode == RasterFilterList.MODIFY_LAST) {
119
				if (filterList.isActive(fName)) {
121 120
					filterList.replace(filter, fName);
122 121
					return;
123 122
				}
124 123
			}
125 124
			filterList.add(filter);
126
        }
127
    }
125
		}
126
	}
128 127

  
129 128
	/**
130
	 * Obtiene un Array de Strings a partir de una pila de filtros. Cada elemento del array
131
	 * tendr? la forma de elemento=valor.
129
	 * Obtiene un Array de Strings a partir de una pila de filtros. Cada elemento
130
	 * del array tendr? la forma de elemento=valor.
132 131
	 */
133
	
134 132
	public ArrayList getStringsFromFilterList(ArrayList filterList, RasterFilter rf) {
135 133
		if (rf instanceof LinearEnhancementFilter) {
136
            filterList.add("filter.enhanced.active=true");
137
            filterList.add("filter.enhanced.tailTrim=" + ((LinearEnhancementFilter) rf).getTailTrim().toString());
138
            StringBuffer values = new StringBuffer();
139
            for (int i = 0; i < ((LinearEnhancementFilter) rf).renderBands.length; i++) {
134
			filterList.add("filter.enhanced.active=true");
135
			filterList.add("filter.enhanced.tailTrim=" + ((LinearEnhancementFilter) rf).getTailTrim().toString());
136
			StringBuffer values = new StringBuffer();
137
			for (int i = 0; i < ((LinearEnhancementFilter) rf).renderBands.length; i++) {
140 138
				values.append(((LinearEnhancementFilter) rf).renderBands[i]);
141
            	if(i < ((LinearEnhancementFilter) rf).renderBands.length - 1)
142
            		values.append(",");
143
            }
144
            filterList.add("filter.enhanced.renderbands=" + values.toString());
145
            filterList.add("filter.enhanced.remove=" + ((LinearEnhancementFilter) rf).getRemoveEnds().toString());
139
				if (i < ((LinearEnhancementFilter) rf).renderBands.length - 1)
140
					values.append(",");
141
			}
142
			filterList.add("filter.enhanced.renderbands=" + values.toString());
143
			filterList.add("filter.enhanced.remove=" + ((LinearEnhancementFilter) rf).getRemoveEnds().toString());
146 144
		}
147
					
145

  
148 146
		return filterList;
149 147
	}
150 148

  
......
153 151
	 * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#createFilterListFromStrings(java.util.ArrayList, java.lang.String, int)
154 152
	 */
155 153
	public int createFilterListFromStrings(ArrayList filters, String fil, int filteri) {
156
		 if (	fil.startsWith("filter.enhanced.active") &&
157
				RasterFilterListManager.getValue(fil).equals("true")) {
158
             filters.remove(filteri);
159
             double tailTrim = 0D;
160
             int[] renderBands = new int[]{0, 0, 0};
154
		if (fil.startsWith("filter.enhanced.active") && RasterFilterListManager.getValue(fil).equals("true")) {
155
			filters.remove(filteri);
156
			double tailTrim = 0D;
157
			int[] renderBands = new int[] { 0, 0, 0 };
161 158

  
162
             for (int propFilter = 0;propFilter < filters.size();propFilter++) {
163
                 String elem = (String) filters.get(propFilter);
159
			for (int propFilter = 0; propFilter < filters.size(); propFilter++) {
160
				String elem = (String) filters.get(propFilter);
164 161

  
165
                 if (elem.startsWith("filter.enhanced.tailTrim")) {
166
                	 try{
167
                		 tailTrim = new Double(RasterFilterListManager.getValue(elem)).doubleValue();
168
                	 }catch(NumberFormatException ex){
169
                		 //tailTrim sigue valiendo 0
170
                	 }
171
                 }
172
             
173
                 if (elem.startsWith("filter.enhanced.renderbands")) {
174
                	 String value = RasterFilterListManager.getValue(elem);
175
                	 String[] valueList = value.split(",");
176
                	 renderBands = new int[valueList.length];
177
                	 for (int i = 0; i < renderBands.length; i++) {
178
                		 try {
179
                			 renderBands[i] = Integer.parseInt(valueList[i]);
180
                		 } catch(NumberFormatException e) {
181
                			 //No a?ade el valor
182
                		 }
183
                	 }
184
                	 //filters.remove(propFilter);
185
                     //propFilter--;
186
                 }
187
                 
188
                 if (elem.startsWith("filter.enhanced.remove")) {
189
                     addEnhancedFilter(Boolean.valueOf(RasterFilterListManager.getValue(elem)).booleanValue(), stats, tailTrim, RasterFilterList.ADD_END, renderBands);
190
                     filters.remove(propFilter);
191
                     propFilter--;
192
                 }
193
             }
162
				if (elem.startsWith("filter.enhanced.tailTrim")) {
163
					try {
164
						tailTrim = new Double(RasterFilterListManager.getValue(elem)).doubleValue();
165
					} catch (NumberFormatException ex) {
166
						// tailTrim sigue valiendo 0
167
					}
168
				}
194 169

  
195
             filteri = -1;
196
         }
197
		 return filteri;
170
				if (elem.startsWith("filter.enhanced.renderbands")) {
171
					String value = RasterFilterListManager.getValue(elem);
172
					String[] valueList = value.split(",");
173
					renderBands = new int[valueList.length];
174
					for (int i = 0; i < renderBands.length; i++) {
175
						try {
176
							renderBands[i] = Integer.parseInt(valueList[i]);
177
						} catch (NumberFormatException e) {
178
							// No a?ade el valor
179
						}
180
					}
181
					// filters.remove(propFilter);
182
					// propFilter--;
183
				}
184

  
185
				if (elem.startsWith("filter.enhanced.remove")) {
186
					addEnhancedFilter(Boolean.valueOf(RasterFilterListManager.getValue(elem)).booleanValue(), stats, tailTrim, RasterFilterList.ADD_END, renderBands);
187
					filters.remove(propFilter);
188
					propFilter--;
189
				}
190
			}
191

  
192
			filteri = -1;
193
		}
194
		return filteri;
198 195
	}
199 196

  
200 197
	/*
......
207 204
		return filters;
208 205
	}
209 206

  
207
	/*
208
	 * (non-Javadoc)
209
	 * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#addFilter(java.lang.Class, org.gvsig.raster.dataset.Params)
210
	 */
210 211
	public void addFilter(Class classFilter, Params params) {
211 212
		if (classFilter.equals(LinearEnhancementFilter.class)) {
212 213
			boolean removeEnds = false;
......
217 218
				if (params.getParam(i).id.equals("RemoveEnds"))
218 219
					removeEnds = new Boolean(params.getParam(i).defaultValue).booleanValue();
219 220
				if (params.getParam(i).id.equals("TailTrim"))
220
					tailTrim = Math.round(Double.parseDouble(params.getParam(i).defaultValue) / 100.0);
221
					tailTrim = Double.parseDouble(params.getParam(i).defaultValue) / 100.0;
221 222
			}
222 223

  
223 224
//			RasterFilterListManager filterManager = new RasterFilterListManager(.getFilterList());

Also available in: Unified diff