Revision 42267 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/Polygon2D.java

View differences:

Polygon2D.java
22 22
 */
23 23
package org.gvsig.fmap.geom.jts.primitive.surface.polygon;
24 24

  
25
import java.util.ArrayList;
26
import java.util.List;
27

  
25 28
import com.vividsolutions.jts.geom.Coordinate;
26 29

  
27 30
import org.gvsig.fmap.geom.Geometry;
28
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
29
import org.gvsig.fmap.geom.jts.utils.ArrayListCoordinateSequence;
30
import org.gvsig.fmap.geom.jts.utils.ReadOnlyCoordinates;
31
import org.gvsig.fmap.geom.primitive.Point;
31
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line2D;
32
import org.gvsig.fmap.geom.primitive.Line;
33
import org.gvsig.fmap.geom.primitive.Polygon;
34
import org.gvsig.fmap.geom.primitive.Ring;
35
import org.gvsig.fmap.geom.primitive.SurfaceAppearance;
32 36

  
33 37
/**
34 38
 * @author fdiaz
35 39
 *
36 40
 */
37
public class Polygon2D extends AbstractPolygon {
41
public class Polygon2D extends Line2D implements Polygon {
38 42

  
39

  
40 43
    /**
41 44
     *
42 45
     */
43 46
    private static final long serialVersionUID = 4927309852756014929L;
44 47

  
48
    List<Ring> interiorRings = new ArrayList<Ring>();
49

  
45 50
    /**
46 51
     * @param subtype
47 52
     */
48 53
    protected Polygon2D() {
49
        super(Geometry.SUBTYPES.GEOM2D);
54
        super();
50 55
    }
51 56

  
52 57
    /**
53 58
    *
54 59
    */
55 60
    public Polygon2D(Coordinate[] coordinates) {
56
        this();
57
        this.coordinates = new ArrayListCoordinateSequence(new ReadOnlyCoordinates(coordinates));
58
        vertex = new Point2D(this.coordinates.getX(0), this.coordinates.getX(0));
61
        super(coordinates);
59 62
    }
60 63

  
61 64
    /*
62 65
     * (non-Javadoc)
63 66
     *
64
     * @see org.gvsig.fmap.geom.primitive.OrientablePrimitive#addVertex(double,
65
     * double)
67
     * @see org.gvsig.fmap.geom.Geometry#cloneGeometry()
66 68
     */
67
    public void addVertex(double x, double y) {
68
        this.coordinates.add(new Point2D(x, y).getJTSCoordinate());
69
    public Geometry cloneGeometry() {
70
        return new Polygon2D((Coordinate[]) coordinates.clone());
69 71
    }
70 72

  
71 73
    /*
72 74
     * (non-Javadoc)
73 75
     *
74
     * @see org.gvsig.fmap.geom.primitive.OrientablePrimitive#addVertex(double,
75
     * double, double)
76
     * @see
77
     * org.gvsig.fmap.geom.primitive.Surface#setSurfaceAppearance(org.gvsig.
78
     * fmap.geom.primitive.SurfaceAppearance)
76 79
     */
77
    public void addVertex(double x, double y, double z) {
78
        this.addVertex(x, y);
80
    public void setSurfaceAppearance(SurfaceAppearance app) {
81
        // TODO Auto-generated method stub
82

  
79 83
    }
80 84

  
81 85
    /*
82 86
     * (non-Javadoc)
83 87
     *
84
     * @see org.gvsig.fmap.geom.Geometry#cloneGeometry()
88
     * @see org.gvsig.fmap.geom.primitive.Surface#getSurfaceAppearance()
85 89
     */
86
    public Geometry cloneGeometry() {
87
        return new Polygon2D((Coordinate[]) coordinates.clone());
90
    public SurfaceAppearance getSurfaceAppearance() {
91
        // TODO Auto-generated method stub
92
        return null;
88 93
    }
89 94

  
90 95
    /*
91 96
     * (non-Javadoc)
92 97
     *
98
     * @see org.gvsig.fmap.geom.primitive.Surface#getNumInteriorRings()
99
     */
100
    public int getNumInteriorRings() {
101
        return interiorRings.size();
102
    }
103

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

  
113
    /*
114
     * (non-Javadoc)
115
     *
93 116
     * @see
94
     * org.gvsig.fmap.geom.jts.primitive.curve.line.AbstractLine#fixPoint(org
95
     * .gvsig.fmap.geom.primitive.Point)
117
     * org.gvsig.fmap.geom.primitive.Surface#addInteriorRing(org.gvsig.fmap.
118
     * geom.primitive.Ring)
96 119
     */
97
    @Override
98
    protected Point fixPoint(Point point) {
99
        if (point instanceof Point2D) {
100
            return point;
101
        } else {
102
            return new Point2D(point.getX(), point.getY());
103
        }
120
    public void addInteriorRing(Ring ring) {
121
        interiorRings.add(ring);
104 122
    }
105 123

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

  
133
    /*
134
     * (non-Javadoc)
135
     *
136
     * @see
137
     * org.gvsig.fmap.geom.primitive.Surface#addInteriorRing(org.gvsig.fmap.
138
     * geom.primitive.Line)
139
     */
140
    public void addInteriorRing(Line ring) {
141
        interiorRings.add((Ring)ring); //FIXME: ?????
142
    }
143

  
106 144
}

Also available in: Unified diff