# HG changeset patch # User John Tsiombikas # Date 1450415239 -7200 # Node ID 6e980fddbf3b962145d377cc9ce131dabc5175b6 # Parent 2b7ae76c173fd2eb1fcd0c7cd3eda91d7723d0b8 curve export diff -r 2b7ae76c173f -r 6e980fddbf3b curvedraw.vcxproj --- a/curvedraw.vcxproj Fri Dec 18 03:47:10 2015 +0200 +++ b/curvedraw.vcxproj Fri Dec 18 07:07:19 2015 +0200 @@ -82,12 +82,14 @@ + + diff -r 2b7ae76c173f -r 6e980fddbf3b curvedraw.vcxproj.filters --- a/curvedraw.vcxproj.filters Fri Dec 18 03:47:10 2015 +0200 +++ b/curvedraw.vcxproj.filters Fri Dec 18 07:07:19 2015 +0200 @@ -19,6 +19,9 @@ src + + src + @@ -33,5 +36,8 @@ src + + src + \ No newline at end of file diff -r 2b7ae76c173f -r 6e980fddbf3b src/app.cc --- a/src/app.cc Fri Dec 18 03:47:10 2015 +0200 +++ b/src/app.cc Fri Dec 18 07:07:19 2015 +0200 @@ -7,6 +7,7 @@ #include "app.h" #include "curve.h" #include "widgets.h" +#include "curvefile.h" enum SnapMode { SNAP_NONE, @@ -252,6 +253,15 @@ post_redisplay(); } break; + + case 'e': + case 'E': + // TODO: GUI for filename at least + if(!save_curves(stdout, &curves[0], (int)curves.size())) { + fprintf(stderr, "failed to export curves\n"); + } + printf("exported %d curves\n", (int)curves.size()); + break; } } diff -r 2b7ae76c173f -r 6e980fddbf3b src/curvefile.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/curvefile.cc Fri Dec 18 07:07:19 2015 +0200 @@ -0,0 +1,68 @@ +#include +#include "curvefile.h" + +static bool save_curve(FILE *fp, const Curve *curve); + +bool save_curves(const char *fname, const Curve * const *curves, int count) +{ + FILE *fp = fopen(fname, "wb"); + if(!fp) return false; + + bool res = save_curves(fp, curves, count); + fclose(fp); + return res; +} + +bool save_curves(FILE *fp, const Curve * const *curves, int count) +{ + fprintf(stderr, "GCURVES\ncount %d\n", count); + + for(int i=0; iget_type())); + fprintf(fp, " cpcount %d\n", curve->size()); + for(int i=0; isize(); i++) { + Vector3 cp = curve->get_homo_point(i); + fprintf(fp, " cp %g %g %g\n", cp.x, cp.y, cp.z); + } + fprintf(fp, "}\n"); + return true; +} + +Curve **load_curves(const char *fname, int *countret) +{ + FILE *fp = fopen(fname, "rb"); + if(!fp) return false; + + Curve **res = load_curves(fp, countret); + fclose(fp); + return res; +} + +Curve **load_curves(FILE *fp, int *countret) +{ + return 0; // TODO +} + diff -r 2b7ae76c173f -r 6e980fddbf3b src/curvefile.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/curvefile.h Fri Dec 18 07:07:19 2015 +0200 @@ -0,0 +1,13 @@ +#ifndef CURVEFILE_H_ +#define CURVEFILE_H_ + +#include +#include "curve.h" + +bool save_curves(const char *fname, const Curve * const *curves, int count); +bool save_curves(FILE *fp, const Curve * const *curves, int count); + +Curve **load_curves(const char *fname, int *countret); +Curve **load_curves(FILE *fp, int *countret); + +#endif // CURVEFILE_H_ \ No newline at end of file