Code

r11769@tres: ted | 2006-05-06 09:09:59 -0700
[inkscape.git] / src / extension / system.cpp
index 34855cd4e6e401455a14194d127646cd488f126f..81bf3075e2cf204a315f0c116331876a465004de 100644 (file)
 #include "input.h"
 #include "output.h"
 #include "effect.h"
+#include "patheffect.h"
 #include "print.h"
 #include "implementation/script.h"
+#include "implementation/xslt.h"
 /* #include "implementation/plugin.h" */
 
 namespace Inkscape {
@@ -325,6 +327,7 @@ build_from_reprdoc(Inkscape::XML::Document *doc, Implementation::Implementation
 {
     enum {
         MODULE_EXTENSION,
+        MODULE_XSLT,
         /* MODULE_PLUGIN, */
         MODULE_UNKNOWN_IMP
     } module_implementation_type = MODULE_UNKNOWN_IMP;
@@ -333,6 +336,7 @@ build_from_reprdoc(Inkscape::XML::Document *doc, Implementation::Implementation
         MODULE_OUTPUT,
         MODULE_FILTER,
         MODULE_PRINT,
+        MODULE_PATH_EFFECT,
         MODULE_UNKNOWN_FUNC
     } module_functional_type = MODULE_UNKNOWN_FUNC;
 
@@ -359,8 +363,12 @@ build_from_reprdoc(Inkscape::XML::Document *doc, Implementation::Implementation
             module_functional_type = MODULE_FILTER;
         } else if (!strcmp(element_name, "print")) {
             module_functional_type = MODULE_PRINT;
+        } else if (!strcmp(element_name, "path-effect")) {
+            module_functional_type = MODULE_PATH_EFFECT;
         } else if (!strcmp(element_name, "script")) {
             module_implementation_type = MODULE_EXTENSION;
+        } else if (!strcmp(element_name, "xslt")) {
+            module_implementation_type = MODULE_XSLT;
 #if 0
         } else if (!strcmp(element_name, "plugin")) {
             module_implementation_type = MODULE_PLUGIN;
@@ -380,6 +388,11 @@ build_from_reprdoc(Inkscape::XML::Document *doc, Implementation::Implementation
                 imp = static_cast<Implementation::Implementation *>(script);
                 break;
             }
+            case MODULE_XSLT: {
+                Implementation::XSLT *xslt = new Implementation::XSLT();
+                imp = static_cast<Implementation::Implementation *>(xslt);
+                break;
+            }
 #if 0
             case MODULE_PLUGIN: {
                 Implementation::Plugin *plugin = new Implementation::Plugin();
@@ -414,6 +427,10 @@ build_from_reprdoc(Inkscape::XML::Document *doc, Implementation::Implementation
             module = new Print(repr, imp);
             break;
         }
+        case MODULE_PATH_EFFECT: {
+            module = new PathEffect(repr, imp);
+            break;
+        }
         default: {
             break;
         }
@@ -437,8 +454,9 @@ build_from_file(gchar const *filename)
        DTD in general for this stuff */
     Inkscape::XML::Document *doc = sp_repr_read_file(filename, NULL);
     Extension *ext = build_from_reprdoc(doc, NULL);
-    Inkscape::GC::release(doc);
-    if (ext == NULL)
+    if (ext != NULL)
+        Inkscape::GC::release(doc);
+    else
         g_warning("Unable to create extension from definition file %s.\n", filename);
     return ext;
 }