Statistics
| Revision:

gvsig-raster / org.gvsig.raster / trunk / org.gvsig.raster / org.gvsig.raster.lib / org.gvsig.raster.lib.api / src / main / java / org / gvsig / fmap / dal / coverage / datastruct / BandList.java @ 2443

History | View | Annotate | Download (6.89 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.fmap.dal.coverage.datastruct;
23

    
24
import java.util.ArrayList;
25

    
26
import org.gvsig.fmap.dal.coverage.exception.BandNotFoundInListException;
27

    
28
/**
29
 * Esta clase gestiona una lista de bandas que puede pertenecer
30
 * a un fichero (la tiene un Dataset) o puede ser una lista 
31
 * de bandas de multiples ficheros . Las bandas son
32
 * almacenadas en un array donde la posici?n en este es el n?mero de banda.
33
 *   
34
 * @author Nacho Brodin (nachobrodin@gmail.com)
35
 *
36
 */
37
public interface BandList {
38
        
39
        /**
40
         * Asigna el ?ltimo array de bandas a escribir solicitadas.
41
         * @param drawableBands
42
         */
43
        public void setDrawableBands(int[] drawableBands);
44
        
45
        /**
46
         * Asigna el array de bandas
47
         * @param bands
48
         */
49
        public void setBandArray(ArrayList<DatasetBand> bands);
50
        
51
        /**
52
         * Obtiene el ?ltimo array de bandas a escribir solicitadas.
53
         * @return
54
         */
55
        public int[] getDrawableBands();
56
        
57
        /**
58
         * Encuentra una banda en la lista.
59
         * @param file Fichero al que pertenece la banda buscada.
60
         * @param pos Posici?n que ocupa en el fichero.
61
         * @return true si se ha hallado la banda y false si no se 
62
         * ha encontrado
63
         */
64
        public boolean findBand(DatasetBand band);
65
                
66
        /**
67
         * Obtiene la lista de bandas a pintar sobre el buffer de 
68
         * salida en forma de array. Cada elemento del array es una banda
69
         * del Buffer de salida que ha de dibujarse y el valor que contiene
70
         * ese elemento es la banda de la imagen que va pintada en esa banda 
71
         * del Buffer.
72
         * <table border=1>
73
         * <tr><td>Elem (Buffer)</td><td>Valor (Banda de la imagen)</td></tr>
74
         * <tr><td>0</td><td>1</td></tr>
75
         * <tr><td>1</td><td>0</td></tr>
76
         * <tr><td>2</td><td>-1</td></tr>
77
         * <tr><td>3</td><td>0</td></tr>
78
         * <tr><td>4</td><td>2</td></tr>
79
         * </table>
80
         * El Buffer tendra en la banda 0 dibujada la banda 1 de este Provider, 
81
         * en la banda 1 la 0 del provider, en la banda 2 no habr? ninguna de este provider,
82
         * en la 3 la 0 y en la 4 la 2 de este provider.
83
         * @return lista de bandas a dibujar o un array de un elemento con valor -1.
84
         */
85
        public int[] bandsToDrawList(int nBandsDataImage);
86
        
87
        /**
88
         * Checkea si alguna banda de la lista se est?a dibujando en el buffer de salida.
89
         * @return        true si alguna banda se est? dibujando y false si no
90
         */
91
        public boolean isDrawingAnyBand();
92
        
93
        //******************************
94
        //Setters and Getters
95
        //******************************
96
        
97
        /**
98
         * A?ade una banda a la lista.
99
         * @param b banda a a?adir.
100
         * @deprecated Use addBand without position. This call does not use this parameter.
101
         */
102
        public void addBand(DatasetBand b, int pos)throws BandNotFoundInListException;
103
        
104
        /**
105
         * Adds a band to the list
106
         * @param b Band to add.
107
         */
108
        public void addBand(DatasetBand b)throws BandNotFoundInListException;
109
        
110
        /**
111
         * A?ade la lista de bandas pasada por par?metro a la lista
112
         * actual. Si alguna banda ya existe no la a?ade y continua.
113
         * @param bl Lista de bandas
114
         */
115
        public void addBandList(BandList bl);
116
        
117
        /**
118
         * ELimina todas las bandas que tienen un nombre determinado.
119
         * @param name Nombre de las bandas a eliminar
120
         */
121
        public void removeBands(String name);
122
        
123
        /**
124
         * Resetea la asignaci?n de dibujado de las bandas de la imagen
125
         * sobre el DataImage cuando se hace un update para esta banda.
126
         */
127
        public void clearDrawableBands();
128
        
129
        /**
130
         * Para este GeoRasterFile asigna que bandas se pintaran
131
         * sobre el RasterBuf cuando se haga un update. Especificamos a 
132
         * trav?s de los par?metros para que posici?n del RasterBuf ir? 
133
         * dibujada con que banda del fichero de imagen.
134
         * @param posRasterBuf        Posici?n del RasterBuf que queremos pintar.
135
         * @param imageBand        Banda de la imagen que se pintar?
136
         */
137
        public void addDrawableBand(int posRasterBuf, int imageBand);
138
        
139
        /**
140
         * Obtiene el n?mero de bandas de un RasterBuf sobre las que se pintara
141
         * alguna banda de este fichero cuando se llama a un updateBuffer. 
142
         * @return N?mero de bandas. Cero en caso de no tener ninguna asignada. 
143
         */
144
        public int getDrawableBandsCount();
145
        
146
        /**
147
         * Obtiene la banda de la posici?n i.
148
         * @param i Posici?n de la banda a obtener.
149
         * @return Banda.
150
         */
151
        public DatasetBand getBand(int i);
152
        
153
        /**
154
         * Obtiene el n?mero de bandas.
155
         * @return entero con el n?mero de bandas.
156
         */
157
        public int getBandCount();
158
        
159
        /**
160
         * A partir de un nombre de fichero y un n?mero de banda obtiene la banda o bandas del buffer de salida 
161
         * donde se pinta.
162
         * @param fileName Nombre de fichero
163
         * @param band N?mero de banda de la imagen
164
         * @return banda o bandas del buffer de salida donde se dibuja.
165
         */
166
        public int[] getBufferBandToDraw(String fileName, int band);
167
        
168
        /**
169
         * A partir de un nombre de fichero y un n?mero de banda obtiene la banda o bandas del buffer de salida 
170
         * donde se pinta. Esta llamada es igual a getBufferBandToDraw pero esta considera un buffer por cada
171
         * provider. Por ejemplo, si tenemos 3 providers de una banda cada uno el buffer de cada provider tendr? como
172
         * mucho una banda. En el caso anterior consideraria un buffer de 3 bandas
173
         * @param fileName Nombre de fichero
174
         * @param band N?mero de banda de la imagen
175
         * @return banda o bandas del buffer de salida donde se dibuja.
176
         */
177
        public int[] getLocalBufferBandToDraw(String fileName, int band);
178
        
179
        /**
180
         * Obtiene en un array de String la lista de nombres de ficheros
181
         * @return lista de nombres de los ficheros del GeoRasterMultiFile
182
         */
183
        public String[] getBandStringList();
184
        
185
        /**
186
         * Obtiene en un array de enteros con la lista de la posici?n de bandas
187
         * @return lista de la posici?n de bandas
188
         */
189
        public int[] getBandPositionList();
190
        
191
        /**
192
         * Obtiene el tipo de dato de las bandas. Esta llamada supone que todos los tipos de dato
193
         * de las bandas son igual por lo que devolver? el primero. 
194
         * @return Entero que representa el tipo de datos de las bandas
195
         */
196
        public int getBandsDataType();
197
        
198
        /**
199
         * Obtiene la posici?n del fichero en la lista a partir del nombre 
200
         * @param fileName Nombre del fichero
201
         * @return Posici?n del fichero o -1 si no existe. 
202
         */
203
        public int getFileNumber(String fileName);
204
        
205
        /**
206
         * Limpia la lista de bandas
207
         */
208
        public void clear();
209
        
210
        public Object clone();
211

    
212
}