Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / FLayer.java @ 6532

History | View | Annotate | Download (8.5 KB)

1 1100 fjp
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 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
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41 214 fernando
package com.iver.cit.gvsig.fmap.layers;
42
43 651 fernando
import com.iver.cit.gvsig.fmap.DriverException;
44 691 fernando
import com.iver.cit.gvsig.fmap.FMap;
45 533 vcaballero
import com.iver.cit.gvsig.fmap.ViewPort;
46 442 vcaballero
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
47 5152 fjp
import com.iver.cit.gvsig.fmap.edition.EditionException;
48 1005 vcaballero
49 415 fernando
import com.iver.utiles.XMLEntity;
50 5317 fjp
import com.iver.utiles.swing.threads.Cancellable;
51 249 vcaballero
52 1005 vcaballero
import org.cresques.cts.ICoordTrans;
53 249 vcaballero
54 1005 vcaballero
import org.cresques.geo.Projected;
55
56
import java.awt.Graphics2D;
57
import java.awt.geom.Rectangle2D;
58
import java.awt.image.BufferedImage;
59
60 5760 jmvivo
import javax.swing.ImageIcon;
61 1005 vcaballero
62 5760 jmvivo
63 217 fernando
/**
64 1005 vcaballero
 * Interfaz que tienen que implementar todas las capas.
65 217 fernando
 */
66 533 vcaballero
public interface FLayer extends Projected {
67 523 vcaballero
        /**
68
         * Obtiene una representaci?n de la colecci?n de capas de forma recursiva
69
         *
70 1005 vcaballero
         * @return XMLEntity.
71 1828 fernando
         * @throws XMLException
72 523 vcaballero
         */
73 1828 fernando
        XMLEntity getXMLEntity() throws XMLException;
74 214 fernando
75 523 vcaballero
        /**
76 1005 vcaballero
         * Inserta las propiedades del XMLEntity al objeto actual.
77 523 vcaballero
         *
78 1005 vcaballero
         * @param xml XMLEntity
79 523 vcaballero
         *
80
         * @throws XMLException
81
         */
82 1056 vcaballero
        void setXMLEntity(XMLEntity xml) throws XMLException;
83 442 vcaballero
84 523 vcaballero
        /**
85 2183 fernando
         * Inserta las propiedades del XMLEntity al objeto actual.
86
         *
87
         * @param xml XMLEntity
88
         *
89
         * @throws XMLException
90
         */
91
        void setXMLEntity03(XMLEntity xml) throws XMLException;
92
93
        /**
94 1005 vcaballero
         * Pone la capa actual a activa o inactiva seg?n el boolean que se pasa
95
         * como par?metro.
96 523 vcaballero
         *
97 1005 vcaballero
         * @param selected activa.
98 523 vcaballero
         */
99
        void setActive(boolean selected);
100 214 fernando
101 523 vcaballero
        /**
102 1005 vcaballero
         * Devuelve true si la capa esta activa.
103 523 vcaballero
         *
104 1005 vcaballero
         * @return activa.
105 523 vcaballero
         */
106
        boolean isActive();
107 214 fernando
108 523 vcaballero
        /**
109 1005 vcaballero
         * Inserta un nombre a la capa.
110 523 vcaballero
         *
111 1005 vcaballero
         * @param name nombre.
112 523 vcaballero
         */
113
        void setName(String name);
114 214 fernando
115 523 vcaballero
        /**
116 1005 vcaballero
         * Devuelve el nombre de la capa.
117 523 vcaballero
         *
118 1005 vcaballero
         * @return nombre de la capa.
119 523 vcaballero
         */
120
        String getName();
121 214 fernando
122 523 vcaballero
        /**
123
         * Realiza las operaciones de inicializaci?n de la capa. El m?todo es
124
         * invocado una ?nica vez durante la vida de la capa y justo antes de
125
         * visualizar la capa
126
         *
127 1005 vcaballero
         * @throws DriverIOException
128 523 vcaballero
         */
129
        void load() throws DriverIOException;
130 214 fernando
131 523 vcaballero
        /**
132 1005 vcaballero
         * Pone la capa en modo visible o no visible.
133 523 vcaballero
         *
134 1005 vcaballero
         * @param visibility visibilidad.
135 523 vcaballero
         */
136
        void setVisible(boolean visibility);
137 214 fernando
138 523 vcaballero
        /**
139 1005 vcaballero
         * Devuelve true si la capa es visible.
140 6531 jmvivo
         * Es dependiente isAvialable @link isAvialable
141 523 vcaballero
         *
142 1005 vcaballero
         * @return visibilidad.
143 6531 jmvivo
         *
144
         * @see isAvialable()
145
         * @see setAvialable()
146
         * @see visibleRequired()
147 523 vcaballero
         */
148
        boolean isVisible();
149 214 fernando
150 523 vcaballero
        /**
151 1005 vcaballero
         * Devuelve el FLayers padre de la capa.
152 523 vcaballero
         *
153 1005 vcaballero
         * @return FLayers padre de la capa.
154 523 vcaballero
         */
155
        public FLayers getParentLayer();
156 249 vcaballero
157 884 fernando
        /**
158 1005 vcaballero
         * Devuelve el FMap al que est? a?adida la capa o null si la capa no ha
159
         * sido a?adida a ning?n FMap
160 885 fjp
         *
161 884 fernando
         * @return FMap
162
         */
163 691 fernando
        public FMap getFMap();
164 884 fernando
165 513 fjp
        /**
166 1005 vcaballero
         * Inserta el FLayers padre de la capa.
167 563 fernando
         *
168 1005 vcaballero
         * @param root capa padre.
169 563 fernando
         */
170
        public void setParentLayer(FLayers root);
171
172
        /**
173 513 fjp
         * Obtiene la extensi?n completa de la capa
174
         *
175 1005 vcaballero
         * @return FullExtent.
176 513 fjp
         *
177 1005 vcaballero
         * @throws DriverException
178 513 fjp
         */
179 651 fernando
        Rectangle2D getFullExtent() throws DriverException;
180 513 fjp
181
        /**
182
         * Dibuja la capa
183
         *
184 1005 vcaballero
         * @param image Imagen utilizada para acelerar el dibujado en pantalla.
185
         * @param g Graphics2D sobre el que dibujar.
186
         * @param viewPort Propiedades de la vista.
187
         * @param cancel PAra poder cancelar el dibujado.
188 513 fjp
         *
189
         * @throws DriverException
190 563 fernando
         */
191
        void draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
192 2531 caballero
                Cancellable cancel,double scale) throws DriverException;
193 563 fernando
194
        /**
195
         * Dibuja la capa
196
         *
197 1005 vcaballero
         * @param g Graphics2D de la impresora sobre el que dibujar.
198
         * @param viewPort Propiedades de la vista.
199 563 fernando
         * @param cancel
200
         *
201
         * @throws DriverException
202 513 fjp
         */
203 2531 caballero
        void print(Graphics2D g, ViewPort viewPort, Cancellable cancel,double scale)
204 653 fernando
                throws DriverException;
205 727 fernando
206 884 fernando
        /**
207 1005 vcaballero
         * Inserta las coordenadas de transformaci?n.
208 884 fernando
         *
209 1005 vcaballero
         * @param ct Coordenadas de transformaci?n.
210 885 fjp
         */
211
        void setCoordTrans(ICoordTrans ct);
212
213
        /**
214 1005 vcaballero
         * Devuelve las coordenadas de transformaci?n.
215 885 fjp
         *
216 1005 vcaballero
         * @return Coordenadas de transformaci?n.
217 885 fjp
         */
218
        ICoordTrans getCoordTrans();
219
220
        /**
221 1005 vcaballero
         * A?ade un listener LayerListener a la lista de listeners.
222 885 fjp
         *
223 1005 vcaballero
         * @param o Listener.
224 884 fernando
         *
225 1005 vcaballero
         * @return True si es correcta la inserci?n del listener.
226 884 fernando
         */
227 727 fernando
        public boolean addLayerListener(LayerListener o);
228 5908 caballero
        public LayerListener[] getLayerListeners();
229 884 fernando
        /**
230 1005 vcaballero
         * Borra de la lista el LayerListener que se pasa como par?metro.
231 884 fernando
         *
232 1005 vcaballero
         * @param o Listener.
233 884 fernando
         *
234 1005 vcaballero
         * @return True si es correcto el borrado del listener.
235 884 fernando
         */
236 727 fernando
        public boolean removeLayerListener(LayerListener o);
237 5908 caballero
238 2531 caballero
        public boolean isWithinScale(double scale);
239 5908 caballero
240
241 1176 fjp
        /**
242
         * La capa no se visualiza si est? por debajo de esa escala
243
         * @return la escala minima de visualizaci?n
244
         */
245
        public double getMinScale();
246
247
        /**
248
         * La capa no se visualiza si est? por encima de esa escala
249
         * @return la escala m?xima de visualizaci?n
250
         */
251
        public double getMaxScale();
252 5908 caballero
253 1176 fjp
        public void setMinScale(double minScale);
254
        public void setMaxScale(double maxScale);
255 5152 fjp
        public void setEditing(boolean b) throws EditionException;
256 3690 caballero
        public boolean isEditing();
257 5923 fjp
258
        public boolean isCachingDrawnLayers();
259 5760 jmvivo
        /**
260 5923 fjp
         * Set true if you want this layer to store an image of previous layers
261
         * Then, if you perform and "FLayers.invalidateLayer(lyr)", the system will
262
         * redraw only the layers you are requesting.
263
         * Otra opci?n ser?a guardar una imagen de cada capa dibujada, y poner una
264
         * llamada en cada una de ellas, algo como "invalidate()". Al renderizar,
265
         * se puede ver si est? invalidada, y si no lo est?, pegar la imagen cacheada.
266
         * ERROR!: Luis tiene raz?n en esto: No puedes cachear esa imagen porque
267
         * si el fondo ha cambiado, el antialiasing afectar? al dibujado de esa capa.
268
         * Sin embargo, s? ser?a ?til si lo que se hace es dibujar la imagen cacheada
269
         * de cada una de las capas que no est?n invalidadas, y a partir de que aparezca
270
         * una de ellas invalidada, el resto ya se tienen que dibujar.
271
         * La pega de que consumes m?s memoria sigue estando presente.
272
         * @param bCacheDrawnLayers
273
         */
274
        public void setCachingDrawnLayers(boolean bCacheDrawnLayers);
275
276
        /**
277 5760 jmvivo
         * Icono a mostrar en el TOC junto a la capa
278
         * @return el icono
279
         */
280
        public ImageIcon getTocImageIcon();
281 5802 jaume
282
        /**
283 5803 jaume
         * If the layer appears in the TOC then <b>true</b> is returned,
284
         * if <b>false</b> the layer will not be displayed at the TOC
285
         * although it remains in the view and in the project
286 5802 jaume
         */
287
        boolean isInTOC();
288 5923 fjp
289
        /**
290
         * @return true if this layer need a repaint.
291
         */
292
        public boolean isDirty();
293
294
        /**
295
         * true if this layer need a repaint. By default, all layers will be
296
         * set to dirty when the extent changes. But for events like changing
297
         * its legend, or editing a layer, we can perform some optimization
298
         * in the method prepareDrawing from FMap.
299
         * @param dirty
300
         */
301
        public void setDirty(boolean dirty);
302
303
        public BufferedImage getCacheImageDrawnLayers();
304
305
        public void setCacheImageDrawnLayers(BufferedImage cacheImageDrawnLayers);
306 6531 jmvivo
307
        /**
308
         * @return set layer aviable or not.
309
         */
310
        public void setAvailable(boolean aviable);
311 5923 fjp
312 6531 jmvivo
        /**
313
         * @return true if this layer is aviable.
314
         *
315
         * Default value is true.
316
         */
317
        public boolean isAvialable();
318
319
        /**
320
         * Intenta recuperar una capa ante un posible error.
321
         * Si tiene algun problema en la carga, marca
322
         * el avialable a false y lanza una excepcion.
323
         *
324
         * @throws DriverIOException
325
         */
326
        public void reload() throws DriverIOException;
327
328
329
        /**
330
         * Devuelve true si la capa esta establecida como visible.
331
         *
332
         * @return visibilidad.
333
         */
334
        boolean visibleRequired();
335
336
        /**
337
         * Devuelve una cadena con informacion sobre la capa.
338
         *
339
         * @return visibilidad.
340
         */
341
        public String getInfoString();
342
343
344 214 fernando
}