Revision 11792 trunk/libraries/libRaster/src/org/gvsig/raster/grid/filter/enhancement/EnhancementListManager.java
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