Revision 30008 branches/v2_0_0_prep/libraries/libRaster/src/org/gvsig/raster/grid/filter/RasterFilterList.java

View differences:

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