Statistics
| Revision:

root / trunk / libraries / libRaster / src / org / gvsig / raster / grid / filter / enhancement / BrightnessContrastListManager.java @ 11710

History | View | Annotate | Download (6.14 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19

    
20
package org.gvsig.raster.grid.filter.enhancement;
21

    
22
import java.util.ArrayList;
23

    
24
import org.gvsig.raster.buffer.RasterBuffer;
25
import org.gvsig.raster.grid.filter.IRasterFilterListManager;
26
import org.gvsig.raster.grid.filter.RasterFilter;
27
import org.gvsig.raster.grid.filter.RasterFilterList;
28
import org.gvsig.raster.grid.filter.RasterFilterListManager;
29
import org.gvsig.raster.util.extensionPoints.ExtensionPoints;
30
import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton;
31

    
32
/**
33
 * Gestor de los filtros de brillo y contraste. Contiene m?todos para a?adir ambos 
34
 * tipos de filtro en la pila.
35
 * 
36
 * @author Miguel ?ngel Querol Carratal?  (miguelangel.querol@iver.es)
37
 */
38
public class BrightnessContrastListManager implements IRasterFilterListManager{
39
        
40
        protected RasterFilterList                         filterList = null;
41
        private RasterFilterListManager                filterListManager = null;
42
        
43
        /**
44
         * Constructor. Asigna la lista de filtros y el manager.
45
         * @param filterListManager
46
         */
47
        public BrightnessContrastListManager(RasterFilterListManager filterListManager){
48
                this.filterListManager = filterListManager;
49
                this.filterList = filterListManager.getFilterList();
50
        }
51

    
52
        static {
53
                ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
54
                extensionPoints.add("RasterFilter", "BrightnessContrast", BrightnessContrastListManager.class);
55
        }
56

    
57
        /**
58
         * A?ade un filtro de brillo a la pila de filtros.
59
         * @param incrBrillo valor de brillo a aplicar
60
         * @param removeAll        true si se desea eliminar cualquier filtro de brillo que 
61
         * hubiera en la pila antes y false si se acumula sobre lo que haya
62
         */
63
        public void addBrightnessFilter(int incrBrillo, boolean removeAll){
64
                //Si ya hay un filtro de brillo en la pila lo sobreescribimos
65
                String fName = BrightnessFilter.genericName;
66
                
67
                RasterFilter filtro = null;
68
                
69
                switch(filterList.getDataTypeInFilter(fName)){
70
                case RasterBuffer.TYPE_BYTE:
71
                        filtro = new BrightnessByteFilter();
72
                        break;
73
                case RasterBuffer.TYPE_SHORT:
74
                        filtro = new BrightnessShortFilter();
75
                        break;
76
                case RasterBuffer.TYPE_USHORT:
77
                case RasterBuffer.TYPE_INT:
78
                        break;
79
                }
80
                
81
                //Cuando el filtro esta creado, tomamos los valores y lo a?adimos a la pila
82
                
83
                if(filtro != null){
84
                        if(removeAll)
85
                                filterList.remove(BrightnessFilter.genericName);
86
                        filtro.addParam("incrBrillo", new Integer(incrBrillo));
87
                        filterList.add(filtro);
88
                        filterListManager.controlTypes();
89
                }
90
        }
91
                
92
        /**
93
         * A?ade un filtro de contraste a la pila de filtros.
94
         * @param incrBrillo
95
         */
96
        public void addContrastFilter(int incrContraste, boolean removeAll){
97
                //Si ya hay un filtro de contraste en la pila lo sobreescribimos
98
                String fName = ContrastFilter.genericName;
99
                
100
                RasterFilter filtro = null;
101
                
102
                switch(filterList.getDataTypeInFilter(fName)){
103
                case RasterBuffer.TYPE_BYTE:
104
                        filtro = new ContrastByteFilter();
105
                        break;
106
                case RasterBuffer.TYPE_SHORT:
107
                        filtro = new ContrastShortFilter();
108
                        break;
109
                case RasterBuffer.TYPE_USHORT:
110
                case RasterBuffer.TYPE_INT:
111
                        break;
112
                }
113
                
114
                //Cuando el filtro esta creado, tomamos los valores y lo a?adimos a la pila
115
                
116
                if(filtro != null){
117
                        if(removeAll && filterList.isActive(fName))
118
                                filterList.remove(fName);
119
                        filtro.addParam("incrContraste", new Integer(incrContraste));
120
                        filterList.add(filtro);
121
                        filterListManager.controlTypes();
122
                }
123
        }
124
        
125
        
126
        public void createStackFromStrings(ArrayList f, Integer pos) {
127
                        
128
        }
129

    
130
        public ArrayList getStringsFromStack() {
131
                return null;
132
        }
133
        
134
        /**
135
         * Obtiene un Array de Strings a partir de una pila de filtros. Cada elemento del array
136
         * tendr? la forma de elemento=valor.
137
         */
138
        
139
        public ArrayList getStringsFromStack(ArrayList filterList, RasterFilter rf) {
140
                
141
                /*if((rf instanceof BrightnessFilter) || 
142
                        (rf instanceof ContrastFilter)){
143
                        filterList.add("filter.brightCont.active=true");
144
                        
145
                }
146
                
147
                if(rf instanceof BrightnessFilter){
148
                        BrightnessFilter bright = (BrightnessFilter) rf;
149
                        filterList.add("filter.brightness.incrBrillo="+bright.incrBrillo);
150
        }else if(rf instanceof ContrastFilter){
151
                ContrastFilter contrast = (ContrastFilter) rf;
152
                filterList.add("filter.contrast.incrContraste="+contrast.incrContraste);
153
        }*/
154
                        
155
                return filterList;
156
        }
157

    
158
        public int createStackFromStrings(ArrayList filters, String fil, int filteri) {
159
                if((fil.startsWith("filter.brightCont.active"))&&
160
                                (RasterFilterListManager.getValue(fil).equals("true"))){
161
                        
162
                        int incrBrillo = 0;
163
                        int incrContraste = 0;
164
                        filters.remove(0);
165
                        
166
                        for(int prop = 0; prop < filters.size() ; prop++){        
167
                                String elem = (String) filters.get(prop);
168
                                if(elem.startsWith("filter.brightness.incrBrillo")){
169
                                        incrBrillo = Integer.parseInt(RasterFilterListManager.getValue(elem));
170
                                        filters.remove(prop);
171
                                        prop--;
172
                                }
173
                        
174
                                if(elem.startsWith("filter.contrast.incrContraste")){
175
                                        incrContraste = Integer.parseInt(RasterFilterListManager.getValue(elem));
176
                                        filters.remove(prop);
177
                                        prop--;
178
                                }
179
                        }
180
                        addBrightnessFilter(incrBrillo, true);
181
                        addContrastFilter(incrContraste, true);        
182
                }
183
        return filteri;
184
        }
185

    
186
        public void createStackFromStrings(ArrayList f) {
187
        }
188

    
189
        /*
190
         * (non-Javadoc)
191
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#getRasterFilterList()
192
         */
193
        public ArrayList getRasterFilterList() {
194
                ArrayList filters = new ArrayList();
195
                filters.add(BrightnessFilter.class);
196
                filters.add(ContrastFilter.class);
197
                return filters;
198
        }
199
}