Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src / org / gvsig / raster / filter / mask / MaskListManager.java @ 22424

History | View | Annotate | Download (5.04 KB)

1 19879 nbrodin
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 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.filter.mask;
20
21
import java.util.ArrayList;
22
23
import org.gvsig.raster.dataset.Params;
24
import org.gvsig.raster.grid.filter.FilterTypeException;
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.grid.filter.RegistrableFilterListener;
30 22424 bsanchez
import org.gvsig.raster.util.extensionPoints.ExtensionPoint;
31 19879 nbrodin
32
/**
33
 * Gestor de los filtros de mascara. Los filtros de m?scara generan una
34
 * capa enmascarando con regiones de inter?s. Las zonas fuera del ROI se
35
 * pondr?n a NoData.
36
 *
37
 * 14/03/2008
38
 * @author Nacho Brodin nachobrodin@gmail.com
39
 */
40
public class MaskListManager implements IRasterFilterListManager {
41
        protected RasterFilterList        filterList = null;
42
43
        /**
44
         * Constructor. Asigna la lista de filtros y el manager.
45
         * @param filterListManager
46
         */
47
        public MaskListManager(RasterFilterListManager filterListManager) {
48
                this.filterList = filterListManager.getFilterList();
49
        }
50
51
        /**
52
         * Registrar los manager en los puntos de extension
53
         */
54
        public static void register() {
55 22424 bsanchez
                ExtensionPoint extensionPoint = ExtensionPoint.getExtensionPoint("RasterFilter");
56
                extensionPoint.register("Mask", MaskListManager.class);
57 19879 nbrodin
        }
58
59
        /**
60
         * A?ade un filtro de m?scara
61
         * @param rois Lista de ROIs
62
         * @param noData Valor a asignar fuera de las ROI
63
         * @param inverse Inversa
64
         * @throws FilterTypeException
65
         */
66 19894 nbrodin
        public void addMaskFilter(ArrayList rois, Double noData, Boolean inverse, Boolean transp) throws FilterTypeException {
67 19879 nbrodin
                RasterFilter filter = new MaskByteFilter();
68
69
                //Cuando el filtro esta creado, tomamos los valores y lo a?adimos a la pila
70
                if (filter != null) {
71
                        filter.addParam("rois", rois);
72
                        filter.addParam("nodata", noData);
73
                        filter.addParam("inverse", inverse);
74 19894 nbrodin
                        filter.addParam("transparency", transp);
75 19879 nbrodin
                        filterList.add(filter);
76
                }
77
        }
78
79
        /*
80
         * (non-Javadoc)
81
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#getRasterFilterList()
82
         */
83
        public ArrayList getRasterFilterList() {
84
                ArrayList filters = new ArrayList();
85
                filters.add(MaskFilter.class);
86
                return filters;
87
        }
88
89
        /*
90
         * (non-Javadoc)
91
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#addFilter(java.lang.Class, org.gvsig.raster.dataset.Params)
92
         */
93
        public void addFilter(Class classFilter, Params params) throws FilterTypeException {
94
                if (classFilter.equals(MaskFilter.class)) {
95
                        ArrayList rois = new ArrayList();
96
                        Boolean inverse = new Boolean(false);
97 19894 nbrodin
                        Boolean transp = new Boolean(false);
98 19879 nbrodin
                        Double nodata = new Double(-99999);
99
100
                        Params paramsUI = null;
101
                        for (int i = 0; i < params.getNumParams(); i++) {
102
                                if (params.getParam(i).id.equals("Panel") &&
103
                                        params.getParam(i).defaultValue instanceof RegistrableFilterListener) {
104
                                        paramsUI = ((RegistrableFilterListener) params.getParam(i).defaultValue).getParams();
105
                                }
106
                        }
107
108
                        if (paramsUI != null) {
109
                                for (int i = 0; i < paramsUI.getNumParams(); i++) {
110
                                        if (paramsUI.getParam(i).id.equals("rois"))
111
                                                rois = (ArrayList) paramsUI.getParam(i).defaultValue;
112
                                        if (paramsUI.getParam(i).id.equals("inverse"))
113
                                                inverse = (Boolean) paramsUI.getParam(i).defaultValue;
114
                                        if (paramsUI.getParam(i).id.equals("nodata"))
115
                                                nodata = (Double) paramsUI.getParam(i).defaultValue;
116 19894 nbrodin
                                        if (paramsUI.getParam(i).id.equals("transparency"))
117
                                                transp = (Boolean) paramsUI.getParam(i).defaultValue;
118 19879 nbrodin
                                }
119
                        }
120 19894 nbrodin
                        addMaskFilter(rois, nodata, inverse, transp);
121 19879 nbrodin
                }
122
        }
123
124
        /*
125
         * (non-Javadoc)
126
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#createFilterListFromStrings(java.util.ArrayList, java.lang.String, int)
127
         */
128
        public int createFilterListFromStrings(ArrayList filters, String fil, int filteri) throws FilterTypeException {
129
                return filteri;
130
        }
131
132
        /*
133
         * (non-Javadoc)
134
         * @see org.gvsig.raster.grid.filter.IRasterFilterListManager#getStringsFromFilterList(java.util.ArrayList, org.gvsig.raster.grid.filter.RasterFilter)
135
         */
136
        public ArrayList getStringsFromFilterList(ArrayList filterList, RasterFilter rf) {
137
                return filterList;
138
        }
139
}