Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_controls / src / org / gvsig / fmap / mapcontrol / impl / MapControlDrawer2D.java @ 37201

History | View | Annotate | Download (6.93 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

    
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2009 {Iver T.I.}   {Task}
26
 */
27

    
28
package org.gvsig.fmap.mapcontrol.impl;
29

    
30
import java.awt.Color;
31
import java.awt.Composite;
32
import java.awt.Image;
33
import java.awt.geom.AffineTransform;
34
import java.awt.geom.Point2D;
35

    
36
import org.gvsig.fmap.geom.Geometry;
37
import org.gvsig.fmap.geom.GeometryLocator;
38
import org.gvsig.fmap.geom.GeometryManager;
39
import org.gvsig.fmap.geom.handler.Handler;
40
import org.gvsig.fmap.geom.operation.Draw;
41
import org.gvsig.fmap.geom.operation.DrawOperationContext;
42
import org.gvsig.fmap.geom.operation.GeometryOperationException;
43
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
44
import org.gvsig.fmap.geom.primitive.Curve;
45
import org.gvsig.fmap.geom.primitive.GeneralPathX;
46
import org.gvsig.fmap.mapcontext.MapContextLocator;
47
import org.gvsig.fmap.mapcontext.ViewPort;
48
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
49
import org.gvsig.fmap.mapcontrol.MapControlDrawer;
50
import org.slf4j.Logger;
51
import org.slf4j.LoggerFactory;
52

    
53
/**
54
 * MapControlDrawer for a 2D view.
55
 * 
56
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera</a>
57
 */
58
public class MapControlDrawer2D extends DefaultPrimitivesDrawer implements MapControlDrawer{
59
    private static final Logger LOG = LoggerFactory.getLogger(MapControlDrawer2D.class);
60
    
61
        protected GeometryManager geomManager = GeometryLocator.getGeometryManager();
62
        private ViewPort viewPort = null;
63

    
64
        /**
65
         * @param graphics
66
         * @param viewPort
67
         */
68
        public MapControlDrawer2D() {
69
                super();                
70
        }
71

    
72
        /* (non-Javadoc)
73
         * @see org.gvsig.fmap.mapcontrol.tools.renderer.Renderer#draw(org.gvsig.fmap.geom.Geometry, org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol)
74
         */
75
        public void draw(Geometry geometry, ISymbol symbol) {
76
                if (geometry != null) {
77
                    symbol.draw(graphics, viewPort.getAffineTransform(), geometry, null, null);             
78
                }                
79
        }
80

    
81
        /*
82
         * (non-Javadoc)
83
         * @see org.gvsig.fmap.mapcontrol.tools.renderer.Renderer#drawHandlers(org.gvsig.fmap.geom.Geometry, java.awt.geom.AffineTransform, org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol)
84
         */
85
        public void drawHandlers(Handler[] handlers, AffineTransform at, ISymbol symbol) {
86
                for (int i = 0; i < handlers.length; i++) {
87
                        Point2D point = handlers[i].getPoint();
88
                        at.transform(point, point);
89

    
90
                        graphics.setPaintMode();
91
                        graphics.setColor(symbol.getColor());
92
                        graphics.fillRect((int) (point.getX() - 3), (int) (point.getY() - 3), 7, 7);
93
                        graphics.drawRect((int) (point.getX() - 5), (int) (point.getY() - 5), 10, 10);
94
                        graphics.drawString( "" + i, (int) (point.getX() - 5), (int) (point.getY() - 5));
95
                }
96
        }
97

    
98
        /* (non-Javadoc)
99
         * @see org.gvsig.fmap.mapcontrol.tools.renderer.Renderer#drawLine(java.awt.geom.Point2D, java.awt.geom.Point2D, org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol)
100
         */
101
        public void drawLine(Point2D firstPoint, Point2D endPoint, ISymbol symbol) {
102
                GeneralPathX elShape = new GeneralPathX(GeneralPathX.WIND_EVEN_ODD, 2);
103
                elShape.moveTo(firstPoint.getX(), firstPoint.getY());
104
                elShape.lineTo(endPoint.getX(), endPoint.getY());
105
                DrawOperationContext doc = new DrawOperationContext();
106
                doc.setGraphics(graphics);
107
                doc.setViewPort(viewPort);
108
                doc.setSymbol(symbol);
109
                try {
110
                        Curve curve = (Curve)geomManager.create(Geometry.TYPES.CURVE, Geometry.SUBTYPES.GEOM2D);
111
                        curve.setGeneralPath(elShape);
112
                        curve.invokeOperation(Draw.CODE, doc);
113
                } catch (GeometryOperationNotSupportedException e) {
114
                        e.printStackTrace();
115
                } catch (GeometryOperationException e) {
116
                        e.printStackTrace();
117
                } catch (org.gvsig.fmap.geom.exception.CreateGeometryException e) {
118
                        e.printStackTrace();
119
                }                
120
        }
121

    
122
        /* (non-Javadoc)
123
         * @see org.gvsig.fmap.mapcontrol.tools.renderer.Renderer#drawImage(java.awt.Image, int, int)
124
         */
125
        public void drawImage(Image img, int x, int y) {
126
                if (img != null){
127
                        graphics.drawImage(img, x, y, null);
128
                }                
129
        }        
130

    
131
        /*
132
         * (non-Javadoc)
133
         * @see org.gvsig.fmap.mapcontrol.MapControlDrawer#drawHandler(org.gvsig.fmap.geom.handler.Handler, java.awt.geom.AffineTransform)
134
         */
135
        public void drawHandler(Handler handler, AffineTransform at) {
136
                Point2D point = handler.getPoint();
137
                Point2D dest = (Point2D) point.clone();
138
                at.transform(point, dest);
139
                graphics.setColor(Color.black);
140
                graphics.drawLine((int)dest.getX()-2,(int)dest.getY()-10,(int)dest.getX()-2,(int)dest.getY()+10);
141
                graphics.drawLine((int)dest.getX()+2,(int)dest.getY()-10,(int)dest.getX()+2,(int)dest.getY()+10);
142
                graphics.drawLine((int)dest.getX()-10,(int)dest.getY()-2,(int)dest.getX()+10,(int)dest.getY()-2);
143
                graphics.drawLine((int)dest.getX()-10,(int)dest.getY()+2,(int)dest.getX()+10,(int)dest.getY()+2);
144
                graphics.setColor(Color.red);
145
                graphics.drawLine((int)dest.getX()-1,(int)dest.getY()-10,(int)dest.getX()-1,(int)dest.getY()+10);
146
                graphics.drawLine((int)dest.getX()+1,(int)dest.getY()-10,(int)dest.getX()+1,(int)dest.getY()+10);
147
                graphics.drawLine((int)dest.getX()-10,(int)dest.getY()-1,(int)dest.getX()+10,(int)dest.getY()-1);
148
                graphics.drawLine((int)dest.getX()-10,(int)dest.getY()+1,(int)dest.getX()+10,(int)dest.getY()+1);
149
        }
150

    
151
        /* (non-Javadoc)
152
         * @see org.gvsig.fmap.mapcontrol.tools.renderer.Renderer#drawImage(java.awt.Image, java.awt.geom.AffineTransform)
153
         */
154
        public void drawImage(Image img, AffineTransform xform) {
155
                graphics.drawImage(img, xform, null);                
156
        }
157

    
158
        /* (non-Javadoc)
159
         * @see org.gvsig.fmap.mapcontext.rendering.Renderer#setViewPort(org.gvsig.fmap.mapcontext.ViewPort)
160
         */
161
        public void setViewPort(ViewPort viewPort) {
162
                this.viewPort = viewPort;                
163
        }
164

    
165
        /* (non-Javadoc)
166
         * @see org.gvsig.fmap.mapcontrol.MapControlDrawer#draw(org.gvsig.fmap.geom.Geometry)
167
         */
168
        public void draw(Geometry geometry) {
169
                draw(geometry, MapContextLocator.getSymbolManager().createSymbol(geometry.getType()));
170
        }
171

    
172
        /* (non-Javadoc)
173
         * @see org.gvsig.fmap.mapcontrol.MapControlDrawer#setComposite(java.awt.AlphaComposite)
174
         */
175
        public void setComposite(Composite composite) {
176
                graphics.setComposite(composite);
177
        }
178

    
179
        /* (non-Javadoc)
180
         * @see org.gvsig.fmap.mapcontrol.MapControlDrawer#transform(java.awt.geom.AffineTransform)
181
         */
182
        public void transform(AffineTransform at) {
183
                graphics.transform(at);                
184
        }
185

    
186
}
187