Statistics
| Revision:

root / branches / CqCMSDvp / libraries / libCq CMS for java.old / src / org / cresques / io / raster / TransparencyFilter.java @ 1810

History | View | Annotate | Download (2.69 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
                                for(int j=0;j<intervalA.length;j++){
51
                                        if(        intervalB[i][0] >= intervalA[i][0] && 
52
                                                intervalB[i][1] <= intervalA[i][1]){
53
                                                equalInterval = true;
54
                                                break;
55
                                        }
56
                                }
57
                                if(!equalInterval)
58
                                        return false;
59
                        }
60
                        return true;
61
                }
62
                
63
                if(intervalA == null && intervalB == null)
64
                        return true;
65
                
66
                return false;
67
        }
68
        
69
        /**
70
         * Devuelve true si el filtro pasado por par?metro es equivalente a este
71
         * y false si no lo es.
72
         * @param filter        Filtro a compara
73
         * @return
74
         */
75
        public boolean isEquivalent(TransparencyFilter filter){
76
                
77
                if(        alpha!=filter.alpha ||
78
                        transparencyColorRed != filter.transparencyColorRed ||
79
                        transparencyColorGreen != filter.transparencyColorGreen ||
80
                        transparencyColorBlue != filter.transparencyColorBlue)
81
                        return false;
82
                
83
                boolean equalRange = false;
84
                equalRange = compareIntervals((int[][])params.get("red"), (int[][])filter.params.get("red"));
85
                if(!equalRange)
86
                        return false;
87
                equalRange = false;
88
                equalRange = compareIntervals((int[][])params.get("green"), (int[][])filter.params.get("green"));
89
                if(!equalRange)
90
                        return false;
91
                equalRange = false;
92
                equalRange = compareIntervals((int[][])params.get("blue"), (int[][])filter.params.get("blue"));
93
                if(!equalRange)
94
                        return false;
95
                
96
                return true;                
97
        }
98
        
99
}
100

    
101

    
102