svn-gvsig-desktop / branches / CqCMSDvp / libraries / libCq CMS for java.old / src / org / cresques / io / raster / TransparencyFilter.java @ 1809
History | View | Annotate | Download (2.85 KB)
1 |
/*
|
---|---|
2 |
* Created on 11-abril-2005
|
3 |
*/
|
4 |
package org.cresques.io.raster; |
5 |
|
6 |
import java.awt.Image; |
7 |
import java.util.Vector; |
8 |
|
9 |
/**
|
10 |
* @author Nacho Brodin <brodin_ign@gva.es>
|
11 |
*/
|
12 |
public abstract class TransparencyFilter extends RasterFilter{ |
13 |
public boolean debug = false; |
14 |
|
15 |
//Par?metros del filtro
|
16 |
protected int[][] rangesR; |
17 |
protected int[][] rangesG; |
18 |
protected int[][] rangesB; |
19 |
public int alpha = 0x10; |
20 |
public int transparencyColorRed = 0xff; |
21 |
public int transparencyColorGreen = 0xff; |
22 |
public int transparencyColorBlue = 0xff; |
23 |
|
24 |
public TransparencyFilter(){
|
25 |
super();
|
26 |
} |
27 |
|
28 |
public void pre(){ |
29 |
//Obtenci?n de par?metros comunes a todos
|
30 |
this.rangesR = (int[][])params.get("red"); |
31 |
this.rangesG = (int[][])params.get("green"); |
32 |
this.rangesB = (int[][])params.get("blue"); |
33 |
this.alpha = ((Integer)params.get("alpha")).intValue(); |
34 |
this.transparencyColorRed = ((Integer)params.get("transparencyRed")).intValue(); |
35 |
this.transparencyColorGreen = ((Integer)params.get("transparencyGreen")).intValue(); |
36 |
this.transparencyColorBlue = ((Integer)params.get("transparencyBlue")).intValue(); |
37 |
} |
38 |
|
39 |
/**
|
40 |
* Para dos intervalos dados, devuelve true si el intervalo B est? dentro del A y
|
41 |
* false si no lo est?
|
42 |
* @param intervalA
|
43 |
* @param intervalB
|
44 |
* @return
|
45 |
*/
|
46 |
private boolean compareIntervals(int[][] intervalA, int[][] intervalB){ |
47 |
if(intervalA != null && intervalB != null){ |
48 |
boolean equalInterval = false; |
49 |
for(int i=0;i<intervalB.length;i++){ |
50 |
System.out.println("INTERVALO B ="+intervalB[i][0]+" "+intervalB[i][1]); |
51 |
for(int j=0;j<intervalA.length;j++){ |
52 |
System.out.println("COMPARANDO CON A ="+intervalA[j][0]+" "+intervalA[j][1]); |
53 |
if( intervalB[i][0] >= intervalA[i][0] && |
54 |
intervalB[i][1] <= intervalA[i][1]){ |
55 |
equalInterval = true;
|
56 |
break;
|
57 |
} |
58 |
} |
59 |
if(!equalInterval)
|
60 |
return false; |
61 |
} |
62 |
return true; |
63 |
} |
64 |
|
65 |
if(intervalA == null && intervalB == null) |
66 |
return true; |
67 |
|
68 |
return false; |
69 |
} |
70 |
|
71 |
/**
|
72 |
* Devuelve true si el filtro pasado por par?metro es equivalente a este
|
73 |
* y false si no lo es.
|
74 |
* @param filter Filtro a compara
|
75 |
* @return
|
76 |
*/
|
77 |
public boolean isEquivalent(TransparencyFilter filter){ |
78 |
|
79 |
/*if( alpha!=filter.alpha ||
|
80 |
transparencyColorRed != filter.transparencyColorRed ||
|
81 |
transparencyColorGreen != filter.transparencyColorGreen ||
|
82 |
transparencyColorBlue != filter.transparencyColorBlue)
|
83 |
return false;*/
|
84 |
|
85 |
boolean equalRange = false; |
86 |
equalRange = compareIntervals((int[][])params.get("red"), (int[][])filter.params.get("red")); |
87 |
if(!equalRange)
|
88 |
return false; |
89 |
equalRange = false;
|
90 |
equalRange = compareIntervals((int[][])params.get("green"), (int[][])filter.params.get("green")); |
91 |
if(!equalRange)
|
92 |
return false; |
93 |
equalRange = false;
|
94 |
equalRange = compareIntervals((int[][])params.get("blue"), (int[][])filter.params.get("blue")); |
95 |
if(!equalRange)
|
96 |
return false; |
97 |
|
98 |
return true; |
99 |
} |
100 |
|
101 |
} |
102 |
|
103 |
|
104 |
|