X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ffileio.cpp;h=8058a41d490aba1d0e7b79847e8067326fb61a3c;hb=10cf4c797bed05831e976068b7504908279dc997;hp=3ce447040014fe9ea7e53bb5d4be90bda16f0521;hpb=41644f6a841b45cb6f1f7a96c93fd550f67a7974;p=architektonas diff --git a/src/fileio.cpp b/src/fileio.cpp index 3ce4470..8058a41 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -410,6 +410,26 @@ 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; + std::vector pts; + uint32_t color; + float thickness; + int style; + + fscanf(file, "(%li)", &size); + fscanf(file, " (%i, %f, %i)\n", &color, &thickness, &style); + + for(int i=0; ilayer = 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 +486,30 @@ 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(long unsigned int i=0; ipoints.size(); i++) + { + fprintf(file, "(%.16lf,%.16lf,%.16lf)\n", p->points[i].x, p->points[i].y, p->points[i].b); + } + } 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 +537,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;