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/Polygon3D.java

View differences:

Polygon3D.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;
31
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line3D;
28 32
import org.gvsig.fmap.geom.jts.primitive.point.Point3D;
29 33
import org.gvsig.fmap.geom.jts.primitive.point.Point3DM;
30
import org.gvsig.fmap.geom.jts.utils.ArrayListCoordinateSequence;
31
import org.gvsig.fmap.geom.jts.utils.ReadOnlyCoordinates;
34
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
35
import org.gvsig.fmap.geom.jts.util.ReadOnlyCoordinates;
36
import org.gvsig.fmap.geom.primitive.Line;
32 37
import org.gvsig.fmap.geom.primitive.Point;
38
import org.gvsig.fmap.geom.primitive.Polygon;
39
import org.gvsig.fmap.geom.primitive.Ring;
40
import org.gvsig.fmap.geom.primitive.SurfaceAppearance;
33 41

  
34 42

  
35 43

  
......
37 45
 * @author fdiaz
38 46
 *
39 47
 */
40
public class Polygon3D extends AbstractPolygon {
48
public class Polygon3D extends Line3D implements Polygon {
41 49

  
42 50
    /**
43 51
     *
44 52
     */
45 53
    private static final long serialVersionUID = 5748137753517288500L;
46 54

  
55
    List<Ring> interiorRings = new ArrayList<Ring>();
56

  
47 57
    /**
48 58
     * @param subtype
49 59
     */
50 60
    protected Polygon3D() {
51
        super(Geometry.SUBTYPES.GEOM3D);
61
        super();
52 62
    }
53 63

  
54 64
    /**
55 65
    *
56 66
    */
57 67
    public Polygon3D(Coordinate[] coordinates) {
58
        this();
59
        this.coordinates = new ArrayListCoordinateSequence(new ReadOnlyCoordinates(coordinates));
60
        vertex = new Point3D(this.coordinates.get(0));
68
        super(coordinates);
61 69
    }
62 70

  
71
    /* (non-Javadoc)
72
     * @see org.gvsig.fmap.geom.Geometry#cloneGeometry()
73
     */
74
    public Geometry cloneGeometry() {
75
        return new Polygon3D((Coordinate[]) coordinates.clone());
76
    }
63 77

  
64 78
    /* (non-Javadoc)
65
     * @see org.gvsig.fmap.geom.primitive.OrientablePrimitive#addVertex(double, double)
79
     * @see org.gvsig.fmap.geom.primitive.Surface#setSurfaceAppearance(org.gvsig.fmap.geom.primitive.SurfaceAppearance)
66 80
     */
67
    public void addVertex(double x, double y) {
68
        this.addVertex(x, y, 0);
81
    public void setSurfaceAppearance(SurfaceAppearance app) {
82
        // TODO Auto-generated method stub
83

  
69 84
    }
70 85

  
71 86
    /* (non-Javadoc)
72
     * @see org.gvsig.fmap.geom.primitive.OrientablePrimitive#addVertex(double, double, double)
87
     * @see org.gvsig.fmap.geom.primitive.Surface#getSurfaceAppearance()
73 88
     */
74
    public void addVertex(double x, double y, double z) {
75
        this.coordinates.add(new Point3D(x, y, z).getJTSCoordinate());
89
    public SurfaceAppearance getSurfaceAppearance() {
90
        // TODO Auto-generated method stub
91
        return null;
76 92
    }
77 93

  
78 94
    /* (non-Javadoc)
79
     * @see org.gvsig.fmap.geom.Geometry#cloneGeometry()
95
     * @see org.gvsig.fmap.geom.primitive.Surface#getNumInteriorRings()
80 96
     */
81
    public Geometry cloneGeometry() {
82
        return new Polygon3D((Coordinate[]) coordinates.clone());
97
    public int getNumInteriorRings() {
98
        return this.interiorRings.size();
83 99
    }
84 100

  
85 101
    /* (non-Javadoc)
86
     * @see org.gvsig.fmap.geom.jts.primitive.curve.line.AbstractLine#fixPoint(org.gvsig.fmap.geom.primitive.Point)
102
     * @see org.gvsig.fmap.geom.primitive.Surface#getInteriorRing(int)
87 103
     */
88
    @Override
89
    protected Point fixPoint(Point point) {
90
        if (point instanceof Point3D) {
91
            return point;
92
        } else if (point instanceof Point3DM) {
93
            return new Point3D(point.getX(), point.getY(), ((Point3DM) point).getM());
94
        } else {
95
            return new Point3D(point.getX(), point.getY(), 0);
96
        }
104
    public Ring getInteriorRing(int index) {
105
        return interiorRings.get(index);
97 106
    }
107

  
108
    /* (non-Javadoc)
109
     * @see org.gvsig.fmap.geom.primitive.Surface#addInteriorRing(org.gvsig.fmap.geom.primitive.Ring)
110
     */
111
    public void addInteriorRing(Ring ring) {
112
        interiorRings.add(ring);
113
    }
114

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

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

Also available in: Unified diff