X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ffileio.cpp;fp=src%2Ffileio.cpp;h=ad303f469cdcb0713a9afcb4e67533c1b428c3f3;hb=3c890e51a9763ffcee49e15753453a7da248272b;hp=3ce447040014fe9ea7e53bb5d4be90bda16f0521;hpb=41644f6a841b45cb6f1f7a96c93fd550f67a7974;p=architektonas diff --git a/src/fileio.cpp b/src/fileio.cpp index 3ce4470..ad303f4 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -410,6 +410,20 @@ if (errno) fscanf(file, "(%lf,%lf) %lf, %lf, %lf", &p.x, &p.y, &r, &a1, &a2); obj = (Object *)new Arc(p, r, a1, a2); } + else if (strcmp(buffer, "POLYLINE") == 0) + { + long int size; + obj = (Object *)new Polyline(); + fscanf(file, "(%li)", &size); + fscanf(file, " (%i, %f, %i)\n", &obj->color, &obj->thickness, &obj->style); + + for(int i=0; ip[0].x, &po->p[0].y, &po->length); + ((Polyline *)obj)->Add(po); + } + } else if (strcmp(buffer, "TEXT") == 0) { Point p; @@ -448,7 +462,7 @@ if (errno) { obj->layer = foundLayer; - if (extended && (obj->type != OTContainer)) + if (extended && (obj->type != OTContainer) && (obj->type != OTPolyline)) { fscanf(file, " (%i, %f, %i)\n", &obj->color, &obj->thickness, &obj->style); } @@ -466,20 +480,31 @@ if (errno) switch (obj->type) { case OTLine: - fprintf(file, "LINE %i (%lf,%lf) (%lf,%lf)", obj->layer, obj->p[0].x, obj->p[0].y, obj->p[1].x, obj->p[1].y); + fprintf(file, "LINE %i (%.16lf,%.16lf) (%.16lf,%.16lf)", obj->layer, obj->p[0].x, obj->p[0].y, obj->p[1].x, obj->p[1].y); break; case OTCircle: - fprintf(file, "CIRCLE %i (%lf,%lf) %lf", obj->layer, obj->p[0].x, obj->p[0].y, obj->radius[0]); + fprintf(file, "CIRCLE %i (%.16lf,%.16lf) %.16lf", obj->layer, obj->p[0].x, obj->p[0].y, obj->radius[0]); break; case OTEllipse: break; case OTArc: - fprintf(file, "ARC %i (%lf,%lf) %lf, %lf, %lf", obj->layer, obj->p[0].x, obj->p[0].y, obj->radius[0], obj->angle[0], obj->angle[1]); + fprintf(file, "ARC %i (%.16lf,%.16lf) %.16lf, %.16lf, %.16lf", obj->layer, obj->p[0].x, obj->p[0].y, obj->radius[0], obj->angle[0], obj->angle[1]); break; - case OTPolygon: + case OTPolyline: + { + Polyline * p = (Polyline *)obj; + fprintf(file, "POLYLINE %i (%li)", p->layer, p->points.size()); + fprintf(file, " (%i, %f, %i)\n", obj->color, obj->thickness, obj->style); + + for(VPVectorIter i=p->points.begin(); i!=p->points.end(); i++) + { + Object * po = (Object *)(*i); + fprintf(file, "(%.16lf,%.16lf,%.16lf)\n", po->p[0].x, po->p[0].y, po->length); + } + } break; case OTDimension: - fprintf(file, "DIMENSION %i (%lf,%lf) (%lf,%lf) %i %lf", obj->layer, obj->p[0].x, obj->p[0].y, obj->p[1].x, obj->p[1].y, ((Dimension *)obj)->subtype, ((Dimension *)obj)->offset); + fprintf(file, "DIMENSION %i (%.16lf,%.16lf) (%.16lf,%.16lf) %i %lf", obj->layer, obj->p[0].x, obj->p[0].y, obj->p[1].x, obj->p[1].y, ((Dimension *)obj)->subtype, ((Dimension *)obj)->offset); break; case OTSpline: break; @@ -507,7 +532,7 @@ if (errno) break; } - if (obj->type != OTContainer) + if ((obj->type != OTContainer) && (obj->type != OTPolyline)) fprintf(file, " (%i, %f, %i)\n", obj->color, obj->thickness, obj->style); return true;