/* * Created on 09/11/2004 */ package GeometryVisualization; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.geotools.geometry.iso.aggregate.MultiSurfaceImpl; import org.geotools.geometry.iso.coordinate.DirectPositionImpl; import org.geotools.geometry.iso.primitive.CurveImpl; import org.geotools.geometry.iso.primitive.PointImpl; import org.geotools.geometry.iso.primitive.RingImpl; import org.geotools.geometry.iso.primitive.SurfaceImpl; import org.geotools.geometry.iso.root.GeometryImpl; import org.opengis.spatialschema.geometry.Envelope; import org.opengis.spatialschema.geometry.primitive.Ring; import org.opengis.spatialschema.geometry.primitive.SurfaceBoundary; /** * @author Sanjay Jena * */ public class PaintGMObject { public static final int TYPE_POINT = 1; public static final int TYPE_LINES = 2; public static final int TYPE_LINESTRING = 3; /** * Paints an GM_Object * @param object */ public static void paint(GeometryImpl object) { PaintGMObject p = new PaintGMObject(); p.startPainting(object); } public PaintGMObject() { } public void startPainting(GeometryImpl object) { int object_x[] = null; int object_y[] = null; int object_type = 0; int scale = 3; /***** GM_Curve *****/ if (object instanceof CurveImpl) { Coords coordArray = getCoordsFromCurve((CurveImpl) object); object_x = coordArray.getXArray(); object_y = coordArray.getYArray(); object_type = PaintGMObject.TYPE_LINESTRING; /***** GM_Point *****/ } else if (object instanceof PointImpl) { object_x = new int[1]; object_y = new int[1]; DirectPositionImpl pos = (DirectPositionImpl) ((PointImpl) object).getPosition(); object_x[0] = (int) pos.getX(); object_y[0] = (int) pos.getY(); object_type = PaintGMObject.TYPE_POINT; } else if (object instanceof SurfaceImpl) { object_type = PaintGMObject.TYPE_LINES; SurfaceBoundary sb = ((SurfaceImpl) object).getBoundary(); Ring exterior = (RingImpl) sb.getExterior(); LineList coords = new LineList(); coords.addRingToCoords((RingImpl) exterior); List interiors = sb.getInteriors(); for (int i=0; i interiors = sb.getInteriors(); for (int i=0; i curves = ((RingImpl) object).getGenerators(); // Coords coordArray[] = new Coords[curves.size()]; // int numberPoints = 0; // /* Create Array with all Coords, each representing a Curve */ // for (int i=0; i triangles = ((TinImpl)object).getTriangles(); // object_x = new int[6*triangles.size()]; // object_y = new int[6*triangles.size()]; // int index=0; // for (int j=0; j dps = curve.asDirectPositions(); int xCoordsOut[] = new int[dps.size()]; int yCoordsOut[] = new int[dps.size()]; for (int j=0; j list = null; public LineList() { this.list = new ArrayList(); } public void add(int x1, int y1, int x2, int y2) { this.list.add(new Line(x1, y1, x2, y2)); } public Line getLine(int i) { return this.list.get(i); } public int getXFrom(int i) { return this.list.get(i).getX1(); } public int getXTo(int i) { return this.list.get(i).getX2(); } public int getYFrom(int i) { return this.list.get(i).getY1(); } public int getYTo(int i) { return this.list.get(i).getY2(); } public int size() { return this.list.size(); } public void addRingToCoords(RingImpl ring) { List dps = ring.asDirectPositions(); for (int j=0; j