Statistics
| Revision:

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