Statistics
| Revision:

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

History | View | Annotate | Download (6.37 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
package org.gvsig.raster.grid.filter.enhancement;
20

    
21
import java.util.ArrayList;
22

    
23
import org.gvsig.raster.dataset.Params;
24
import org.gvsig.raster.grid.filter.IRasterFilterListManager;
25
import org.gvsig.raster.grid.filter.RasterFilter;
26
import org.gvsig.raster.grid.filter.RasterFilterList;
27
import org.gvsig.raster.grid.filter.RasterFilterListManager;
28
import org.gvsig.raster.util.extensionPoints.ExtensionPoints;
29
import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton;
30
/**
31
 * Gestor de los filtros de brillo y contraste. Contiene m?todos para a?adir
32
 * ambos tipos de filtro en la pila.
33
 * 
34
 * @author Miguel ?ngel Querol Carratal? (miguelangel.querol@iver.es)
35
 */
36
public class BrightnessContrastListManager implements IRasterFilterListManager {
37
        protected RasterFilterList                        filterList                                = null;
38
        private RasterFilterListManager        filterListManager        = null;
39

    
40
        /**
41
         * Constructor. Asigna la lista de filtros y el manager.
42
         * @param filterListManager
43
         */
44
        public BrightnessContrastListManager(RasterFilterListManager filterListManager) {
45
                this.filterListManager = filterListManager;
46
                this.filterList = filterListManager.getFilterList();
47
        }
48

    
49
        /**
50
         * Registrar los manager en los puntos de extension
51
         */
52
        public static void register() {
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) {
64
                RasterFilter filter = createBrightnessFilter(incrBrillo);
65

    
66
                if (filter != null)
67
                        filterList.add(filter);
68
        }
69

    
70
        public static RasterFilter createBrightnessFilter(int incrBrillo) {
71
                RasterFilter filter = new BrightnessByteFilter();
72

    
73
                // Cuando el filtro esta creado, tomamos los valores y lo a?adimos a la pila
74
                if (filter != null) {
75
                        filter.addParam("incrBrillo", new Integer(incrBrillo));
76
                }
77
                return filter;
78
        }
79

    
80
        /**
81
         * A?ade un filtro de contraste a la pila de filtros.
82
         * @param incrBrillo
83
         */
84
        public void addContrastFilter(int incrContraste) {
85
                RasterFilter filter = createContrastFilter(incrContraste);
86

    
87
                // Cuando el filtro esta creado, tomamos los valores y lo a?adimos a la pila
88
                if (filter != null)
89
                        filterList.add(filter);
90
        }
91

    
92
        public static RasterFilter createContrastFilter(int incrContraste) {
93
                RasterFilter filter = new ContrastByteFilter();
94

    
95
                // Cuando el filtro esta creado, tomamos los valores y lo a?adimos a la pila
96
                if (filter != null)
97
                        filter.addParam("incrContraste", new Integer(incrContraste));
98

    
99
                return filter;
100
        }
101

    
102
        /*
103
         * (non-Javadoc)
104
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#getStringsFromFilterList(java.util.ArrayList, org.gvsig.raster.grid.filter.RasterFilter)
105
         */
106
        public ArrayList getStringsFromFilterList(ArrayList filterList, RasterFilter rf) {
107

    
108
                if ((rf instanceof BrightnessFilter) || (rf instanceof ContrastFilter)) {
109
                        filterList.add("filter.brightCont.active=true");
110
                }
111

    
112
                if (rf instanceof BrightnessFilter) {
113
                        BrightnessFilter bright = (BrightnessFilter) rf;
114
                        filterList.add("filter.brightness.incrBrillo=" + bright.incrBrillo);
115
                } else if (rf instanceof ContrastFilter) {
116
                        ContrastFilter contrast = (ContrastFilter) rf;
117
                        filterList.add("filter.contrast.incrContraste=" + contrast.incrContraste);
118
                }
119

    
120
                return filterList;
121
        }
122

    
123
        /*
124
         * (non-Javadoc)
125
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#createFilterListFromStrings(java.util.ArrayList, java.lang.String, int)
126
         */
127
        public int createFilterListFromStrings(ArrayList filters, String fil, int filteri) {
128
                if ((fil.startsWith("filter.brightCont.active")) && (RasterFilterListManager.getValue(fil).equals("true"))) {
129

    
130
                        int incrBrillo = 0;
131
                        int incrContraste = 0;
132
                        filters.remove(0);
133

    
134
                        for (int prop = 0; prop < filters.size(); prop++) {
135
                                String elem = (String) filters.get(prop);
136
                                if (elem.startsWith("filter.brightness.incrBrillo")) {
137
                                        incrBrillo = Integer.parseInt(RasterFilterListManager.getValue(elem));
138
                                        filters.remove(prop);
139
                                        prop--;
140
                                }
141

    
142
                                if (elem.startsWith("filter.contrast.incrContraste")) {
143
                                        incrContraste = Integer.parseInt(RasterFilterListManager.getValue(elem));
144
                                        filters.remove(prop);
145
                                        prop--;
146
                                }
147
                        }
148
                        addBrightnessFilter(incrBrillo);
149
                        addContrastFilter(incrContraste);
150
                }
151
                return filteri;
152
        }
153

    
154
        /*
155
         * (non-Javadoc)
156
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#getRasterFilterList()
157
         */
158
        public ArrayList getRasterFilterList() {
159
                ArrayList filters = new ArrayList();
160
                filters.add(BrightnessFilter.class);
161
                filters.add(ContrastFilter.class);
162
                return filters;
163
        }
164

    
165
        /*
166
         * (non-Javadoc)
167
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#addFilter(java.lang.Class, org.gvsig.raster.dataset.Params)
168
         */
169
        public void addFilter(Class classFilter, Params params) {
170
                if (classFilter.equals(ContrastFilter.class)) {
171
                        int contrast = 0;
172
                        for (int i = 0; i < params.getNumParams(); i++) {
173
                                if (params.getParam(i).id.equals("Contrast"))
174
                                        contrast = new Integer(params.getParam(i).defaultValue).intValue();
175
                        }
176
                        addContrastFilter(contrast);
177
                }
178
                if (classFilter.equals(BrightnessFilter.class)) {
179
                        int brightness = 0;
180
                        for (int i = 0; i < params.getNumParams(); i++) {
181
                                if (params.getParam(i).id.equals("Brightness"))
182
                                        brightness = new Integer(params.getParam(i).defaultValue).intValue();
183
                        }
184
                        addBrightnessFilter(brightness);
185
                }
186
        }
187
}