summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter/array.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/live_effects/parameter/array.cpp')
-rw-r--r--src/live_effects/parameter/array.cpp50
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 */