diff options
Diffstat (limited to 'src/live_effects/parameter/array.cpp')
| -rw-r--r-- | src/live_effects/parameter/array.cpp | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/src/live_effects/parameter/array.cpp b/src/live_effects/parameter/array.cpp index 1b8f742da..e8a1b9532 100644 --- a/src/live_effects/parameter/array.cpp +++ b/src/live_effects/parameter/array.cpp @@ -6,8 +6,7 @@ #include "live_effects/parameter/array.h" -#include "svg/svg.h" -#include "svg/stringstream.h" +#include "helper-fns.h" #include <2geom/coord.h> #include <2geom/point.h> @@ -48,6 +47,53 @@ ArrayParam<Geom::Point>::readsvg(const gchar * str) } return Geom::Point(Geom::infinity(),Geom::infinity()); } +//TODO: move maybe to svg-lenght.cpp +unsigned int +sp_svg_satellite_read_d(gchar const *str, Geom::Satellite *sat){ + if (!str) { + return 0; + } + gchar ** strarray = g_strsplit(str, "*", 0); + if(strarray[9] && !strarray[10]){ + sat->setSatelliteType(strarray[0]); + sat->setIsTime(strncmp(strarray[1],"1",1) == 0); + sat->setIsClosing(strncmp(strarray[2],"1",1) == 0); + sat->setIsStart(strncmp(strarray[3],"1",1) == 0); + sat->setActive(strncmp(strarray[4],"1",1) == 0); + sat->setHasMirror(strncmp(strarray[5],"1",1) == 0); + sat->setHidden(strncmp(strarray[6],"1",1) == 0); + double amount,angle; + float stepsTmp; + sp_svg_number_read_d(strarray[7], &amount); + sp_svg_number_read_d(strarray[8], &angle); + sp_svg_number_read_f(strarray[9], &stepsTmp); + unsigned int steps = (unsigned int)stepsTmp; + sat->setAmount(amount); + sat->setAngle(angle); + sat->setSteps(steps); + g_strfreev (strarray); + return 1; + } + g_strfreev (strarray); + return 0; +} + +template <> +std::pair<unsigned int, Geom::Satellite> +ArrayParam<std::pair<unsigned int, Geom::Satellite> >::readsvg(const gchar * str) +{ + gchar ** strarray = g_strsplit(str, ",", 2); + double index; + std::pair<unsigned int, Geom::Satellite> result; + unsigned int success = (int)sp_svg_number_read_d(strarray[0], &index); + Geom::Satellite sat; + success += sp_svg_satellite_read_d(strarray[1], &sat); + g_strfreev (strarray); + if (success == 2) { + return std::make_pair(index, sat); + } + return std::make_pair((int)Geom::infinity(),sat); +} } /* namespace LivePathEffect */ |
