Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src-test-ui / org / gvsig / imagenavigator / TestImageNavigator.java @ 12123

History | View | Annotate | Download (4.12 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 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.imagenavigator;
20

    
21
import java.awt.Dimension;
22
import java.awt.Graphics2D;
23
import java.awt.geom.AffineTransform;
24
import java.awt.geom.Dimension2D;
25

    
26
import javax.swing.JFrame;
27

    
28
import org.gvsig.gui.beans.imagenavigator.IClientImageNavigator;
29
import org.gvsig.gui.beans.imagenavigator.ImageNavigator;
30
import org.gvsig.raster.RasterLibrary;
31
import org.gvsig.raster.buffer.BufferFactory;
32
import org.gvsig.raster.dataset.NotSupportedExtensionException;
33
import org.gvsig.raster.dataset.RasterDataset;
34
import org.gvsig.raster.dataset.RasterDriverException;
35
import org.gvsig.raster.grid.render.Rendering;
36
import org.gvsig.raster.shared.Extent;
37
import org.gvsig.raster.shared.ViewPortData;
38

    
39
import com.iver.cit.gvsig.fmap.ViewPort;
40
/**
41
 * Este test comprueba el funcionamiento de ImageNavigator con capas reales
42
 *
43
 * @version 09/05/2007
44
 * @author Borja S?nchez Zamorano (borja.sanchez@iver.es)
45
 */
46
public class TestImageNavigator implements IClientImageNavigator {
47
        private String baseDir = "./test-images/";
48
        private String path = baseDir + "03AUG23153350-M2AS-000000122423_01_P001-BROWSE.jpg";
49
        private RasterDataset f = null;
50
        private BufferFactory ds = null;
51
        private Rendering rendering = null;
52
        private Extent extent2 = null;
53

    
54
        private JFrame jFrame = null;
55
        private ImageNavigator imageNavigator = null;
56

    
57
        static {
58
                RasterLibrary.wakeUp();
59
        }
60

    
61
        public TestImageNavigator() {
62
                int[] drawableBands = {0, 1, 2};
63
                try {
64
                        f = RasterDataset.open(null, path);
65
                } catch (NotSupportedExtensionException e) {
66
                        e.printStackTrace();
67
                        return;
68
                } catch (RasterDriverException e) {
69
                        e.printStackTrace();
70
                        return;
71
                }
72
                ds = new BufferFactory(f);
73
                ds.addDrawableBands(drawableBands);
74

    
75
                //ds.setAreaOfInterest(645817.0, 4923851.0, 645853.0, 4923815.0, 100, 100, true);
76
                rendering = new Rendering(ds);
77
                extent2 = ds.getExtent();
78
//                a.draw(g, vp)
79
                initialize();
80
        }
81

    
82
        private void initialize() {
83
                jFrame = new JFrame();
84
                jFrame.setSize(new Dimension(600, 600));
85
                jFrame.setContentPane(getImageNavigator());
86
                jFrame.setVisible(true);
87

    
88
                getImageNavigator().setViewDimensions(extent2.getMin().getX(), extent2.getMax().getY(), extent2.getMax().getX(), extent2.getMin().getY());
89
                getImageNavigator().setZoom(1.0/ds.getXCellSize());
90
                getImageNavigator().updateBuffer();
91
                jFrame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
92
        }
93

    
94
        private ImageNavigator getImageNavigator() {
95
                if (imageNavigator == null) {
96
                        imageNavigator = new ImageNavigator(this);
97
                }
98
                return imageNavigator;
99
        }
100

    
101
        public static void main(String[] args) {
102
                new TestImageNavigator();
103
        }
104

    
105
        public void drawImage(Graphics2D g, double x1, double y1, double x2, double y2, double zoom, int width, int height) {
106
                if ((rendering == null) || ((x2 - x1) == 0.0) || ((y2 - y1) == 0.0))
107
                        return;
108
                ViewPort vp = new ViewPort(null);
109

    
110
                Dimension2D dimension = new Dimension(width, height);
111
                Extent extent = new Extent(x1, y1, x2, y2);
112

    
113
                ViewPortData vp2 = new ViewPortData(vp.getProjection(), extent, dimension);
114
                vp2.setMat(new AffineTransform(zoom, 0.0, 0.0, zoom, -x1*zoom, -y1*zoom));
115

    
116
                AffineTransform trans = g.getTransform();
117
                // Calcular cuanto sobresale la imagen y rectificar ese desplazamiento
118
                if (y1 > extent2.maxY())
119
                        g.translate(0.0, (-(extent2.maxY() - y1) * zoom) * 2.0);
120

    
121
                rendering.draw(g, vp2);
122
                g.setTransform(trans);
123
        }
124
}