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