Revision 30008 branches/v2_0_0_prep/libraries/libRaster/src/org/gvsig/raster/grid/filter/RasterFilterList.java
RasterFilterList.java | ||
---|---|---|
46 | 46 |
|
47 | 47 |
/** |
48 | 48 |
* Asigna un listener a la lista que ser? informado cuando cambie un |
49 |
* filtro o posici?n en la lista.
|
|
49 |
* filtro o posici?n en la lista. |
|
50 | 50 |
* @param listener FilterListListener |
51 | 51 |
*/ |
52 | 52 |
public void addFilterListListener(FilterListChangeListener listener) { |
53 | 53 |
filterListListener.add(listener); |
54 | 54 |
} |
55 |
|
|
55 |
|
|
56 | 56 |
/** |
57 | 57 |
* M?todo llamado cuando hay un cambio en una propiedad de visualizaci?n |
58 | 58 |
*/ |
... | ... | |
62 | 62 |
((FilterListChangeListener)filterListListener.get(i)).filterListChanged(ev); |
63 | 63 |
} |
64 | 64 |
} |
65 |
|
|
65 |
|
|
66 | 66 |
/** |
67 | 67 |
* A?ade un par?metro a la lista de filtros. Estos par?metros luego pueden ser |
68 | 68 |
* utilizados por los managers que se registren |
... | ... | |
97 | 97 |
* @throws FilterTypeException |
98 | 98 |
*/ |
99 | 99 |
public void add(RasterFilter filter) throws FilterTypeException { |
100 |
if (isActive(filter.getName())) {
|
|
100 |
if (isActive(filter.getName())) |
|
101 | 101 |
replace(filter, filter.getName()); |
102 |
} else {
|
|
102 |
else { |
|
103 | 103 |
list.add(filter); |
104 | 104 |
controlTypes(); |
105 | 105 |
} |
... | ... | |
171 | 171 |
public void remove(Class baseFilterClass) throws FilterTypeException { |
172 | 172 |
boolean changed = false; |
173 | 173 |
for (int i = 0; i < lenght(); i++) |
174 |
if (baseFilterClass.isInstance((RasterFilter) list.get(i))) {
|
|
174 |
if (baseFilterClass.isInstance(list.get(i))) { |
|
175 | 175 |
list.remove(i); |
176 | 176 |
i--; |
177 | 177 |
changed = true; |
... | ... | |
199 | 199 |
public IBuffer getResult() { |
200 | 200 |
return rasterBuf; |
201 | 201 |
} |
202 |
|
|
202 |
|
|
203 | 203 |
/** |
204 | 204 |
* Devuelve la banda alpha para los filtros que generan una |
205 | 205 |
* @return |
... | ... | |
233 | 233 |
* @return Filtro |
234 | 234 |
*/ |
235 | 235 |
public RasterFilter get(String name) { |
236 |
for (int i = list.size() - 1; i >= 0; i--) {
|
|
236 |
for (int i = list.size() - 1; i >= 0; i--) |
|
237 | 237 |
if (((RasterFilter) list.get(i)).getName().equals(name)) |
238 | 238 |
return (RasterFilter) list.get(i); |
239 |
} |
|
240 | 239 |
return null; |
241 | 240 |
} |
242 | 241 |
|
... | ... | |
247 | 246 |
* o null si no hay ninguno. |
248 | 247 |
*/ |
249 | 248 |
public RasterFilter getByName(String name) { |
250 |
for (int i = 0; i < lenght(); i++) {
|
|
249 |
for (int i = 0; i < lenght(); i++) |
|
251 | 250 |
if (((RasterFilter) list.get(i)).getName().equals(name)) |
252 | 251 |
return (RasterFilter) list.get(i); |
253 |
} |
|
254 | 252 |
return null; |
255 | 253 |
} |
256 | 254 |
|
... | ... | |
261 | 259 |
* @return RasterFilter |
262 | 260 |
*/ |
263 | 261 |
public RasterFilter getFilterByBaseClass(Class baseFilterClass) { |
264 |
for (int i = 0; i < lenght(); i++) {
|
|
265 |
if (baseFilterClass.isInstance((RasterFilter) list.get(i)))
|
|
262 |
for (int i = 0; i < lenght(); i++) |
|
263 |
if (baseFilterClass.isInstance(list.get(i))) |
|
266 | 264 |
return (RasterFilter) list.get(i); |
267 |
} |
|
268 | 265 |
return null; |
269 | 266 |
} |
270 | 267 |
|
... | ... | |
305 | 302 |
*/ |
306 | 303 |
public boolean move(Class filter, int position) { |
307 | 304 |
RasterFilter f = null; |
308 |
for (int i = 0; i < list.size(); i++) {
|
|
305 |
for (int i = 0; i < list.size(); i++) |
|
309 | 306 |
if(filter.isInstance(list.get(i))) { |
310 | 307 |
f = (RasterFilter) list.get(i); |
311 | 308 |
list.remove(i); |
312 | 309 |
break; |
313 | 310 |
} |
314 |
} |
|
315 | 311 |
if(f != null) { |
316 | 312 |
list.add(position, f); |
317 | 313 |
return true; |
... | ... | |
324 | 320 |
* @param raster |
325 | 321 |
*/ |
326 | 322 |
public void setInitRasterBuf(IBuffer raster) { |
327 |
rasterBuf = (IBuffer) raster;
|
|
323 |
rasterBuf = raster; |
|
328 | 324 |
if(rasterBuf != null) |
329 | 325 |
typeFilter = rasterBuf.getDataType(); |
330 | 326 |
} |
... | ... | |
352 | 348 |
* @return true si est? en la pila y false si no lo est? |
353 | 349 |
*/ |
354 | 350 |
public boolean isActive(String name) { |
355 |
for (int i = list.size() - 1; i >= 0; i--) {
|
|
351 |
for (int i = list.size() - 1; i >= 0; i--) |
|
356 | 352 |
if (((RasterFilter) list.get(i)).getName().equals(name)) |
357 | 353 |
return true; |
358 |
} |
|
359 | 354 |
return false; |
360 | 355 |
} |
361 | 356 |
|
... | ... | |
367 | 362 |
* @return true si est? en la pila y false si no lo est? |
368 | 363 |
*/ |
369 | 364 |
public boolean isActive(RasterFilter filter) { |
370 |
for (int i = list.size() - 1; i >= 0; i--) {
|
|
371 |
if (((RasterFilter) list.get(i)).equals(filter)) {
|
|
365 |
for (int i = list.size() - 1; i >= 0; i--) |
|
366 |
if (((RasterFilter) list.get(i)).equals(filter)) |
|
372 | 367 |
return true; |
373 |
} |
|
374 |
} |
|
375 | 368 |
return false; |
376 | 369 |
} |
377 | 370 |
|
... | ... | |
396 | 389 |
private void executeFilterByDataType(int dataType) throws InterruptedException { |
397 | 390 |
environment.put("FirstUseTransparency", Boolean.TRUE); |
398 | 391 |
environment.put("HasNoDataFilter", Boolean.valueOf(isActive("nodata"))); |
399 |
|
|
392 |
|
|
400 | 393 |
environment.put("FirstRaster", rasterBuf); |
401 | 394 |
alphaBand = null; |
402 | 395 |
for (int i = 0; i < list.size(); i++) { |
... | ... | |
414 | 407 |
|
415 | 408 |
if (filter.getResult("raster") != null) |
416 | 409 |
this.rasterBuf = (IBuffer) filter.getResult("raster"); |
417 |
|
|
410 |
|
|
418 | 411 |
//Si el filtro genera una banda alpha se mezcla con la que han generado otros |
419 |
if (filter.getResult("alphaBand") != null) {
|
|
412 |
if (filter.getResult("alphaBand") != null) |
|
420 | 413 |
if(alphaBand != null) |
421 | 414 |
alphaBand = Transparency.merge(alphaBand, (IBuffer)filter.getResult("alphaBand")); |
422 |
else
|
|
415 |
else |
|
423 | 416 |
alphaBand = (IBuffer)filter.getResult("alphaBand"); |
424 |
} |
|
425 | 417 |
} |
426 | 418 |
environment.remove("FirstRaster"); |
427 | 419 |
} |
... | ... | |
444 | 436 |
public void show() { |
445 | 437 |
System.out.println("--------------------------------------------"); |
446 | 438 |
|
447 |
for (int i = 0; i < list.size() ; i++) {
|
|
439 |
for (int i = 0; i < list.size() ; i++) |
|
448 | 440 |
System.out.println("FILTRO:" + i + " NAME:" + ((RasterFilter) list.get(i)).getName() + " FIL:" + ((RasterFilter) list.get(i)).toString()); |
449 |
} |
|
450 | 441 |
} |
451 | 442 |
|
452 | 443 |
public void resetPercent() { |
... | ... | |
480 | 471 |
*/ |
481 | 472 |
public ArrayList getStatusCloned() { |
482 | 473 |
ArrayList newArray = new ArrayList(); |
483 |
for (int i = 0; i < list.size(); i++) {
|
|
474 |
for (int i = 0; i < list.size(); i++) |
|
484 | 475 |
try { |
485 | 476 |
newArray.add(((RasterFilter) list.get(i)).clone()); |
486 | 477 |
} catch (CloneNotSupportedException e) { |
487 | 478 |
System.out.println("No se ha podido clonar"); |
488 | 479 |
} |
489 |
} |
|
490 | 480 |
return newArray; |
491 | 481 |
} |
492 | 482 |
|
... | ... | |
498 | 488 |
list.clear(); |
499 | 489 |
if(newArray == null) |
500 | 490 |
return; |
501 |
for (int i = 0; i < newArray.size(); i++) {
|
|
491 |
for (int i = 0; i < newArray.size(); i++) |
|
502 | 492 |
list.add(newArray.get(i)); |
503 |
} |
|
504 | 493 |
callFilterListChanged(this); |
505 | 494 |
} |
506 | 495 |
|
... | ... | |
529 | 518 |
public void setEnv(TreeMap env) { |
530 | 519 |
this.environment = env; |
531 | 520 |
} |
521 |
|
|
522 |
/** |
|
523 |
* Releases buffer resources |
|
524 |
*/ |
|
525 |
public void free() { |
|
526 |
if (rasterBuf != null) |
|
527 |
rasterBuf.free(); |
|
528 |
if (alphaBand != null) |
|
529 |
alphaBand.free(); |
|
530 |
rasterBuf = null; |
|
531 |
alphaBand = null; |
|
532 |
for (int i = 0; i < lenght(); i++) |
|
533 |
((RasterFilter) list.get(i)).free(); |
|
534 |
} |
|
532 | 535 |
} |
Also available in: Unified diff