Code

Merge from trunk.
[inkscape.git] / src / sp-filter.h
index 68f7f0a1c4a7ed777befbd8e27b57e967df5ea1c..45586f1fbcefe852c335aa358af12b00881c2c9f 100644 (file)
@@ -7,17 +7,23 @@
 /*
  * Authors:
  *   Hugo Rodrigues <haa.rodrigues@gmail.com>
+ *   Niko Kiirala <niko@kiirala.com>
  *
- * Copyright (C) 2006 Hugo Rodrigues
+ * Copyright (C) 2006,2007 Authors
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
  */
 
+#include <map>
+
+#include <gtkmm.h>
+
 #include "number-opt-number.h"
 #include "sp-object.h"
 #include "sp-filter-units.h"
 #include "sp-filter-fns.h"
 #include "svg/svg-length.h"
+#include "display/nr-filter.h"
 
 /* Filter base class */
 
@@ -28,6 +34,10 @@ struct SPFilterReference;
 class SPFilter;
 class SPFilterClass;
 
+struct ltstr {
+    bool operator()(const char* s1, const char* s2) const;
+};
+
 struct SPFilter : public SPObject {
 
     /** filterUnits attribute */
@@ -48,17 +58,47 @@ struct SPFilter : public SPObject {
     NumberOptNumber filterRes;
     /** HREF attribute */
     SPFilterReference *href;
+    sigc::connection modified_connection;
 
-       int _primitive_count;
-       int _primitive_table_size;
-       SPFilterPrimitive ** _primitives;
+    Inkscape::Filters::Filter *_renderer;
+
+    std::map<gchar *, int, ltstr>* _image_name;
+    int _image_number_next;
 };
 
 struct SPFilterClass {
     SPObjectClass parent_class;
 };
 
+/*
+ * Initializes the given Inkscape::Filters::Filter object as a renderer for this
+ * SPFilter object.
+ */
+void sp_filter_build_renderer(SPFilter *sp_filter, Inkscape::Filters::Filter *nr_filter);
+
+/*
+ * Returns the number of filter primitives in this SPFilter object.
+ */
+int sp_filter_primitive_count(SPFilter *filter);
+
+/**
+ * Returns a slot number for given image name, or -1 for unknown name.
+ */
+int sp_filter_get_image_name(SPFilter *filter, gchar const *name);
+/**
+ * Returns slot number for given image name, even if it's unknown.
+ */
+int sp_filter_set_image_name(SPFilter *filter, gchar const *name);
+/**
+ * Finds image name based on it's slot number. Returns 0 for unknown slot
+ * numbers.
+ */
+gchar const *sp_filter_name_for_image(SPFilter const *filter, int const image);
 
+/*
+ * Returns a result image name that is not in use inside this filter.
+ */
+Glib::ustring sp_filter_get_new_result_name(SPFilter *filter);
 
 #endif /* !SP_FILTER_H_SEEN */
 
@@ -71,4 +111,4 @@ struct SPFilterClass {
   fill-column:99
   End:
 */
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :