Statistics
| Revision:

gvsig-vectorediting / org.gvsig.vectorediting / trunk / org.gvsig.vectorediting / org.gvsig.vectorediting.lib / org.gvsig.vectorediting.lib.prov / org.gvsig.vectorediting.lib.prov.stretch / src / main / java / org / gvsig / vectorediting / lib / prov / stretch / operation / StretchOperationUtils.java @ 2616

History | View | Annotate | Download (2.47 KB)

1
package org.gvsig.vectorediting.lib.prov.stretch.operation;
2

    
3

    
4
import java.util.HashMap;
5
import java.util.Map;
6
import org.gvsig.fmap.geom.Geometry;
7
import org.gvsig.fmap.geom.primitive.Arc;
8
import org.gvsig.fmap.geom.primitive.Circle;
9
import org.gvsig.fmap.geom.primitive.Curve;
10
import org.gvsig.fmap.geom.primitive.Ellipse;
11
import org.gvsig.fmap.geom.primitive.EllipticArc;
12
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
13
import org.gvsig.fmap.geom.primitive.Point;
14
import org.gvsig.fmap.geom.primitive.Primitive;
15
import org.gvsig.fmap.geom.primitive.Spline;
16
import org.gvsig.fmap.geom.primitive.Surface;
17
import org.slf4j.Logger;
18
import org.slf4j.LoggerFactory;
19

    
20

    
21
public class StretchOperationUtils {
22

    
23
    private static final Logger LOGGER = LoggerFactory.getLogger(StretchOperationUtils.class);
24

    
25
    private static final Map<Integer, StretchOperation> operations = new HashMap<Integer, StretchOperation>();
26

    
27
    private StretchOperationUtils() {
28
    }
29

    
30
    public static void register(StretchOperation operation, int geometryType){
31
        operations.put(geometryType, operation);
32
    }
33

    
34
    public static StretchOperation getOperation(Primitive geom) {
35
        Integer type = geom.getGeometryType().getType();
36

    
37
        if(isPolygon(geom)){
38
            type = Geometry.TYPES.POLYGON;
39
        } else if(isLine(geom)){
40
            type = Geometry.TYPES.LINE;
41
        }
42
        StretchOperation operation = operations.get(type);
43

    
44
        return operation;
45
    }
46

    
47
    private static boolean isPolygon(Geometry geometry) {
48

    
49
        if(!(geometry instanceof Surface)){
50
            return false;
51
        }
52
        if (geometry instanceof Ellipse) {
53
            return false;
54
        }
55
        if (geometry instanceof EllipticArc) {
56
            return false;
57
        }
58
        if (geometry instanceof Circle) {
59
            return false;
60
        }
61
        return true;
62
    }
63

    
64
    private static boolean isLine(Geometry geometry) {
65

    
66
        if(!(geometry instanceof Curve)){
67
            return false;
68
        }
69
        if (geometry instanceof Arc) {
70
            return false;
71
        }
72
        if (geometry instanceof Spline) {
73
            return false;
74
        }
75
        return true;
76
    }
77

    
78
    public static void setVertex(OrientablePrimitive geom, int index, Point p) {
79
        Point point = geom.getVertex(index);
80
        int min = p.getDimension() < point.getDimension()?p.getDimension():point.getDimension();
81
        for(int i=0; i<min; i++){
82
            point.setCoordinateAt(i, p.getCoordinateAt(i));
83
        }
84
    }
85

    
86
}