|
@@ -244,34 +244,37 @@ bool writeShapeDescription(FILE *output, const Shape &shape) {
|
|
|
default:;
|
|
|
}
|
|
|
}
|
|
|
- if (const LinearSegment *e = dynamic_cast<const LinearSegment *>(&**edge)) {
|
|
|
- fprintf(output, "\t");
|
|
|
- writeCoord(output, e->p[0]);
|
|
|
- fprintf(output, ";\n");
|
|
|
- if (colorCode)
|
|
|
- fprintf(output, "\t\t%c;\n", colorCode);
|
|
|
- }
|
|
|
- if (const QuadraticSegment *e = dynamic_cast<const QuadraticSegment *>(&**edge)) {
|
|
|
- fprintf(output, "\t");
|
|
|
- writeCoord(output, e->p[0]);
|
|
|
- fprintf(output, ";\n\t\t");
|
|
|
- if (colorCode)
|
|
|
- fprintf(output, "%c", colorCode);
|
|
|
- fprintf(output, "(");
|
|
|
- writeCoord(output, e->p[1]);
|
|
|
- fprintf(output, ");\n");
|
|
|
- }
|
|
|
- if (const CubicSegment *e = dynamic_cast<const CubicSegment *>(&**edge)) {
|
|
|
- fprintf(output, "\t");
|
|
|
- writeCoord(output, e->p[0]);
|
|
|
- fprintf(output, ";\n\t\t");
|
|
|
- if (colorCode)
|
|
|
- fprintf(output, "%c", colorCode);
|
|
|
- fprintf(output, "(");
|
|
|
- writeCoord(output, e->p[1]);
|
|
|
- fprintf(output, "; ");
|
|
|
- writeCoord(output, e->p[2]);
|
|
|
- fprintf(output, ");\n");
|
|
|
+ const Point2 *p = (*edge)->controlPoints();
|
|
|
+ switch ((*edge)->type()) {
|
|
|
+ case (int) LinearSegment::EDGE_TYPE:
|
|
|
+ fprintf(output, "\t");
|
|
|
+ writeCoord(output, p[0]);
|
|
|
+ fprintf(output, ";\n");
|
|
|
+ if (colorCode)
|
|
|
+ fprintf(output, "\t\t%c;\n", colorCode);
|
|
|
+ break;
|
|
|
+ case (int) QuadraticSegment::EDGE_TYPE:
|
|
|
+ fprintf(output, "\t");
|
|
|
+ writeCoord(output, p[0]);
|
|
|
+ fprintf(output, ";\n\t\t");
|
|
|
+ if (colorCode)
|
|
|
+ fprintf(output, "%c", colorCode);
|
|
|
+ fprintf(output, "(");
|
|
|
+ writeCoord(output, p[1]);
|
|
|
+ fprintf(output, ");\n");
|
|
|
+ break;
|
|
|
+ case (int) CubicSegment::EDGE_TYPE:
|
|
|
+ fprintf(output, "\t");
|
|
|
+ writeCoord(output, p[0]);
|
|
|
+ fprintf(output, ";\n\t\t");
|
|
|
+ if (colorCode)
|
|
|
+ fprintf(output, "%c", colorCode);
|
|
|
+ fprintf(output, "(");
|
|
|
+ writeCoord(output, p[1]);
|
|
|
+ fprintf(output, "; ");
|
|
|
+ writeCoord(output, p[2]);
|
|
|
+ fprintf(output, ");\n");
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
fprintf(output, "\t#\n");
|