private GCElement pAddCircle(int layer, int datatype, GeoLibPoint center, double radius) { GCElement e = new(); GeoLibPoint[] points = e.ellipse(center, radius, GCSetup.circularDefault); e = new GCPolygon(points, layer, datatype); return e; }
private void pAddBox(GeoLibPoint[] points, int layer, int datatype) { GCElement e; if (points.Length != 5) { e = new GCPolygon(points, layer, datatype); pAddElement(e); return; } if (points[0] != points[4]) { e = new GCPolygon(points, layer, datatype); pAddElement(e); return; } int x2, y2; GeoLibPoint p = points[0]; int x1 = p.X; int y1 = p.Y; p = points[1]; if (p.X < x1) { x2 = x1; x1 = p.X; } else { x2 = p.X; } if (p.Y < y1) { y2 = y1; y1 = p.Y; } else { y2 = p.Y; } for (int i = 2; i < 4; i++) { p = points[i]; if (p.X < x1) { x1 = p.X; } if (p.X > x2) { x2 = p.X; } if (p.Y < y1) { y1 = p.Y; } if (p.Y > y2) { y2 = p.Y; } } bool b = true; for (int i = 0; i < 4; i++) { p = points[i]; if (p.X != x1 && p.X != x2) { b = false; } if (p.Y != y1 && p.Y != y2) { b = false; } } switch (b) { case true: e = new GCBox(x1, y1, x2 - x1 + 1, y2 - y1 + 1, layer, datatype); pAddElement(e); break; default: e = new GCPolygon(points, layer, datatype); pAddElement(e); break; } }
private void pAddPolygon(GeoLibPoint[] points, int layer, int datatype) { GCElement e = new GCPolygon(points, layer, datatype); pAddElement(e); }