svn-gvsig-desktop / trunk / extensions / extSymbology / src / org / gvsig / symbology / gui / styling / LayerPreview.java @ 27690
History | View | Annotate | Download (3.92 KB)
1 | 22082 | vcaballero | /* 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.symbology.gui.styling; |
||
20 | |||
21 | import java.awt.Dimension; |
||
22 | import java.awt.Graphics2D; |
||
23 | import java.awt.geom.Rectangle2D; |
||
24 | import java.awt.image.BufferedImage; |
||
25 | import java.io.File; |
||
26 | import java.util.Stack; |
||
27 | |||
28 | import javax.swing.JFrame; |
||
29 | |||
30 | import org.cresques.cts.IProjection; |
||
31 | import org.gvsig.gui.beans.imagenavigator.IClientImageNavigator; |
||
32 | import org.gvsig.gui.beans.imagenavigator.ImageNavigator; |
||
33 | |||
34 | import com.hardcode.gdbms.driver.exceptions.ReadDriverException; |
||
35 | import com.iver.cit.gvsig.exceptions.expansionfile.ExpansionFileReadException; |
||
36 | import com.iver.cit.gvsig.fmap.MapContext; |
||
37 | import com.iver.cit.gvsig.fmap.ViewPort; |
||
38 | import com.iver.cit.gvsig.fmap.core.ILabelable; |
||
39 | import com.iver.cit.gvsig.fmap.crs.CRSFactory; |
||
40 | import com.iver.cit.gvsig.fmap.layers.FLayer; |
||
41 | import com.iver.cit.gvsig.fmap.layers.LayerFactory; |
||
42 | import com.iver.cit.gvsig.fmap.operations.Cancel; |
||
43 | |||
44 | public class LayerPreview extends ImageNavigator implements IClientImageNavigator { |
||
45 | private static final long serialVersionUID = -7554322442540714114L; |
||
46 | private FLayer layer = null; |
||
47 | private ViewPort vp;
|
||
48 | private Stack<Cancel> cancels = new Stack<Cancel>(); |
||
49 | |||
50 | public LayerPreview() {
|
||
51 | super(null); |
||
52 | setClientImageNavigator(this);
|
||
53 | } |
||
54 | |||
55 | public void setLayer(FLayer layer) throws ExpansionFileReadException, ReadDriverException { |
||
56 | this.layer = layer;
|
||
57 | if (layer != null) { |
||
58 | vp = new ViewPort(layer.getProjection());
|
||
59 | Rectangle2D b = layer.getFullExtent();
|
||
60 | setViewDimensions(b.getMinX(), b.getMaxY(), b.getMaxX(), b.getMinY()); |
||
61 | } |
||
62 | updateBuffer(); |
||
63 | setEnabled(true);
|
||
64 | } |
||
65 | |||
66 | public static void main(String[] args) { |
||
67 | JFrame jFrame = new JFrame("test"); |
||
68 | String fwAndamiDriverPath = "../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers"; |
||
69 | IProjection PROJ = CRSFactory.getCRS("EPSG:23030");
|
||
70 | try {
|
||
71 | LayerFactory.setDriversPath(new File(fwAndamiDriverPath).getAbsolutePath()); |
||
72 | LayerPreview prev = new LayerPreview();
|
||
73 | |||
74 | prev.setLayer(LayerFactory. |
||
75 | createLayer( |
||
76 | "line",
|
||
77 | "gvSIG shp driver",
|
||
78 | new File("/home/jaume/Documents/Cartografia/cv_300_polygons.shp"), |
||
79 | PROJ)); |
||
80 | |||
81 | jFrame.setSize(new Dimension(598, 167)); |
||
82 | |||
83 | jFrame.setContentPane(prev); |
||
84 | |||
85 | jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||
86 | jFrame.setVisible(true);
|
||
87 | } catch (Exception e) { |
||
88 | e.printStackTrace(); |
||
89 | } |
||
90 | } |
||
91 | |||
92 | public void drawImage(Graphics2D g, double x1, double y1, double x2, double y2, double zoom, int width, int height) { |
||
93 | Cancel c = new Cancel();
|
||
94 | while (!cancels.isEmpty()) cancels.pop().setCanceled(true); |
||
95 | |||
96 | cancels.push(c); |
||
97 | if (layer == null || width <= 0 || height <= 0 || vp == null) |
||
98 | return;
|
||
99 | vp.setExtent(new Rectangle2D.Double(x1, y2, x2-x1, y1-y2)); |
||
100 | vp.setImageSize(new Dimension(width, height)); |
||
101 | BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); |
||
102 | |||
103 | double scale = vp.getScale();
|
||
104 | try {
|
||
105 | layer.draw(bi, g, vp, c, scale); |
||
106 | if (layer instanceof ILabelable && ((ILabelable) layer).isLabeled()) { |
||
107 | ((ILabelable) layer).drawLabels(bi, g, vp, c, scale, MapContext.getScreenDPI()); |
||
108 | } |
||
109 | } catch (ReadDriverException e) {
|
||
110 | // TODO Auto-generated catch block
|
||
111 | e.printStackTrace(); |
||
112 | } |
||
113 | } |
||
114 | |||
115 | |||
116 | } |