curvedraw

view src/curvefile.cc @ 6:6e980fddbf3b

curve export
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 18 Dec 2015 07:07:19 +0200
parents
children 8bf96e11ed1f
line source
1 #include <stdlib.h>
2 #include "curvefile.h"
4 static bool save_curve(FILE *fp, const Curve *curve);
6 bool save_curves(const char *fname, const Curve * const *curves, int count)
7 {
8 FILE *fp = fopen(fname, "wb");
9 if(!fp) return false;
11 bool res = save_curves(fp, curves, count);
12 fclose(fp);
13 return res;
14 }
16 bool save_curves(FILE *fp, const Curve * const *curves, int count)
17 {
18 fprintf(stderr, "GCURVES\ncount %d\n", count);
20 for(int i=0; i<count; i++) {
21 if(!save_curve(fp, curves[i])) {
22 return false;
23 }
24 }
25 return true;
26 }
28 static const char *curve_type_str(CurveType type)
29 {
30 switch(type) {
31 case CURVE_LINEAR:
32 return "polyline";
33 case CURVE_HERMITE:
34 return "hermite";
35 case CURVE_BSPLINE:
36 return "bspline";
37 }
38 abort();
39 }
41 static bool save_curve(FILE *fp, const Curve *curve)
42 {
43 fprintf(fp, "curve {\n");
44 fprintf(fp, " type %s\n", curve_type_str(curve->get_type()));
45 fprintf(fp, " cpcount %d\n", curve->size());
46 for(int i=0; i<curve->size(); i++) {
47 Vector3 cp = curve->get_homo_point(i);
48 fprintf(fp, " cp %g %g %g\n", cp.x, cp.y, cp.z);
49 }
50 fprintf(fp, "}\n");
51 return true;
52 }
54 Curve **load_curves(const char *fname, int *countret)
55 {
56 FILE *fp = fopen(fname, "rb");
57 if(!fp) return false;
59 Curve **res = load_curves(fp, countret);
60 fclose(fp);
61 return res;
62 }
64 Curve **load_curves(FILE *fp, int *countret)
65 {
66 return 0; // TODO
67 }