Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.geometry / org.gvsig.fmap.geometry.jts / src / main / java / org / gvsig / fmap / geom / jts / primitive / surface / polygon / Polygon2DM.java @ 42275

History | View | Annotate | Download (5 KB)

1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2015 gvSIG Association
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., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.fmap.geom.jts.primitive.surface.polygon;
24

    
25
import java.awt.geom.AffineTransform;
26
import java.awt.geom.PathIterator;
27
import java.util.ArrayList;
28
import java.util.List;
29

    
30
import com.vividsolutions.jts.geom.Coordinate;
31

    
32
import org.gvsig.fmap.geom.Geometry;
33
import org.gvsig.fmap.geom.GeometryException;
34
import org.gvsig.fmap.geom.aggregate.MultiLine;
35
import org.gvsig.fmap.geom.aggregate.MultiPolygon;
36
import org.gvsig.fmap.geom.jts.aggregate.MultiLine2DM;
37
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon2DM;
38
import org.gvsig.fmap.geom.jts.primitive.curve.line.BaseLine2DM;
39
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line2DM;
40
import org.gvsig.fmap.geom.jts.util.JTSUtils;
41
import org.gvsig.fmap.geom.primitive.Line;
42
import org.gvsig.fmap.geom.primitive.Polygon;
43
import org.gvsig.fmap.geom.primitive.Ring;
44
import org.gvsig.fmap.geom.primitive.SurfaceAppearance;
45

    
46

    
47
/**
48
 * @author fdiaz
49
 *
50
 */
51
public class Polygon2DM extends BaseLine2DM implements Polygon {
52

    
53
    /**
54
     *
55
     */
56
    private static final long serialVersionUID = 3755255543825597334L;
57

    
58
    List<Ring> interiorRings = new ArrayList<Ring>();
59

    
60
    /**
61
     * @param subtype
62
     */
63
    public Polygon2DM() {
64
        super();
65
    }
66

    
67

    
68
    /**
69
    *
70
    */
71
    public Polygon2DM(Coordinate[] coordinates) {
72
        super(coordinates);
73
    }
74

    
75
    /* (non-Javadoc)
76
     * @see org.gvsig.fmap.geom.primitive.Surface#setSurfaceAppearance(org.gvsig.fmap.geom.primitive.SurfaceAppearance)
77
     */
78
    public void setSurfaceAppearance(SurfaceAppearance app) {
79
        // TODO Auto-generated method stub
80

    
81
    }
82

    
83
    /*
84
     * (non-Javadoc)
85
     *
86
     * @see org.gvsig.fmap.geom.Geometry#cloneGeometry()
87
     */
88
    public Geometry cloneGeometry() {
89
        return new Polygon2DM((Coordinate[]) coordinates.clone());
90
    }
91

    
92
    /* (non-Javadoc)
93
     * @see org.gvsig.fmap.geom.primitive.Surface#getSurfaceAppearance()
94
     */
95
    public SurfaceAppearance getSurfaceAppearance() {
96
        // TODO Auto-generated method stub
97
        return null;
98
    }
99

    
100
    /* (non-Javadoc)
101
     * @see org.gvsig.fmap.geom.primitive.Surface#getNumInteriorRings()
102
     */
103
    public int getNumInteriorRings() {
104
        return interiorRings.size();
105
    }
106

    
107
    /* (non-Javadoc)
108
     * @see org.gvsig.fmap.geom.primitive.Surface#getInteriorRing(int)
109
     */
110
    public Ring getInteriorRing(int index) {
111
        return interiorRings.get(index);
112
    }
113

    
114
    /* (non-Javadoc)
115
     * @see org.gvsig.fmap.geom.primitive.Surface#addInteriorRing(org.gvsig.fmap.geom.primitive.Ring)
116
     */
117
    public void addInteriorRing(Ring ring) {
118
        interiorRings.add(ring);
119
    }
120

    
121
    /* (non-Javadoc)
122
     * @see org.gvsig.fmap.geom.primitive.Surface#addInteriorRing(org.gvsig.fmap.geom.primitive.Line)
123
     */
124
    public void addInteriorRing(Line ring) {
125
        interiorRings.add((Ring)ring); //FIXME: ?????
126
    }
127

    
128
    /* (non-Javadoc)
129
     * @see org.gvsig.fmap.geom.primitive.Surface#removeInteriorRing(int)
130
     */
131
    public void removeInteriorRing(int index) {
132
        interiorRings.remove(index);
133
    }
134

    
135
    /* (non-Javadoc)
136
     * @see org.gvsig.fmap.geom.primitive.Line#toLines()
137
     */
138
    public MultiLine toLines() throws GeometryException {
139
        MultiLine multiLine = new MultiLine2DM();
140
        multiLine.addPrimitive(new Line2DM(coordinates.toCoordinateArray()));
141
        return multiLine;
142
    }
143

    
144
    /* (non-Javadoc)
145
     * @see org.gvsig.fmap.geom.primitive.Line#toPolygons()
146
     */
147
    public MultiPolygon toPolygons() throws GeometryException {
148
        MultiPolygon multiPolygon = new MultiPolygon2DM();
149
        multiPolygon.addPrimitive(this);
150
        return multiPolygon;
151
    }
152

    
153
    /* (non-Javadoc)
154
     * @see org.gvsig.fmap.geom.jts.GeometryJTS#getJTS()
155
     */
156
    public com.vividsolutions.jts.geom.Geometry getJTS() {
157
        return JTSUtils.createJTSPolygon(coordinates, interiorRings);
158
    }
159

    
160

    
161

    
162
    /*
163
     * (non-Javadoc)
164
     *
165
     * @see
166
     * org.gvsig.fmap.geom.Geometry#getPathIterator(java.awt.geom.AffineTransform
167
     * )
168
     */
169
    public PathIterator getPathIterator(AffineTransform at) {
170
        PolygonIterator pi = new PolygonIterator(this, at);
171
        return pi;
172
    }
173

    
174
}