Code

string fixes from bug 1516157
[inkscape.git] / src / extension / patheffect.cpp
index 80815c5d08508700eeea21a650234affcf6b86a2..e45d0b25504950b68e4f52e8373ee7945c174c8d 100644 (file)
@@ -7,7 +7,11 @@
  * Released under GNU GPL, read the file 'COPYING' for more information
  */
 
+#include "document-private.h"
+#include "sp-object.h"
+
 #include "patheffect.h"
+#include "db.h"
 
 namespace Inkscape {
 namespace Extension {
@@ -23,11 +27,53 @@ PathEffect::~PathEffect (void)
 
 }
 
-gchar *
-PathEffect::processPath (gchar * path_data, gchar * pressure, gchar * tilt)
+void
+PathEffect::processPath (SPDocument * doc, Inkscape::XML::Node * path, Inkscape::XML::Node * def)
+{
+
+
+}
+
+void
+PathEffect::processPathEffects (SPDocument * doc, Inkscape::XML::Node * path)
 {
+    gchar const * patheffectlist = path->attribute("inkscape:path-effects");
+    if (patheffectlist == NULL)
+        return;
+
+    gchar ** patheffects = g_strsplit(patheffectlist, ";", 128);
+    Inkscape::XML::Node * defs = SP_OBJECT_REPR(SP_DOCUMENT_DEFS(doc));
+
+    for (int i = 0; patheffects[i] != NULL && i < 128; i++) {
+        gchar * patheffect = patheffects[i];
+
+        // This is weird, they should all be references... but anyway
+        if (patheffect[0] != '#') continue;
+
+        Inkscape::XML::Node * prefs = sp_repr_lookup_child(defs, "id", &(patheffect[1]));
+        if (prefs == NULL) {
+
+            continue;
+        }
+
+        gchar const * ext_id = prefs->attribute("extension");
+        if (ext_id == NULL) {
+
+            continue;
+        }
+
+        Inkscape::Extension::PathEffect * peffect;
+        peffect = dynamic_cast<Inkscape::Extension::PathEffect *>(Inkscape::Extension::db.get(ext_id));
+        if (peffect != NULL) {
+
+            continue;
+        }
 
+        peffect->processPath(doc, path, prefs);
+    }
 
+    g_strfreev(patheffects);
+    return;
 }