summaryrefslogtreecommitdiffstats
path: root/src/sp-filter.cpp
diff options
context:
space:
mode:
authorNiko Kiirala <niko@kiirala.com>2007-05-21 09:39:52 +0000
committerkiirala <kiirala@users.sourceforge.net>2007-05-21 09:39:52 +0000
commit2ac98237319c51ceb2a25d5a4821ef6afc0beb6e (patch)
tree8ff0e8ad21cae00d3ff85127285f6279d2872dfe /src/sp-filter.cpp
parentcommitted patch 1629798 (diff)
downloadinkscape-2ac98237319c51ceb2a25d5a4821ef6afc0beb6e.tar.gz
inkscape-2ac98237319c51ceb2a25d5a4821ef6afc0beb6e.zip
Refactoring work for filter effects renderer initialization
(bzr r3035)
Diffstat (limited to 'src/sp-filter.cpp')
-rw-r--r--src/sp-filter.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp
index a27dfd124..ac0d3d29e 100644
--- a/src/sp-filter.cpp
+++ b/src/sp-filter.cpp
@@ -6,8 +6,9 @@
/*
* 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
*/
@@ -26,6 +27,7 @@
#define SP_MACROS_SILENT
#include "macros.h"
+#include "display/nr-filter.cpp"
/* Filter base class */
@@ -106,6 +108,7 @@ sp_filter_init(SPFilter *filter)
filter->_primitives = new SPFilterPrimitive*[1];
filter->_primitives[0] = NULL;
+ filter->_renderer = NULL;
}
/**
@@ -422,6 +425,34 @@ sp_filter_remove_child(SPObject *object, Inkscape::XML::Node *child)
*/
}
+void sp_filter_build_renderer(SPFilter *sp_filter, NR::Filter *nr_filter)
+{
+ g_assert(sp_filter != NULL);
+ g_assert(nr_filter != NULL);
+
+ sp_filter->_renderer = nr_filter;
+
+ nr_filter->set_x(sp_filter->x);
+ nr_filter->set_y(sp_filter->y);
+ nr_filter->set_width(sp_filter->width);
+ nr_filter->set_height(sp_filter->height);
+
+ nr_filter->clear_primitives();
+ for (int i = 0 ; i < sp_filter->_primitive_count ; i++) {
+ SPFilterPrimitive *primitive = sp_filter->_primitives[i];
+ g_assert(primitive != NULL);
+ if (((SPFilterPrimitiveClass*) G_OBJECT_GET_CLASS(primitive))->build_renderer) {
+ ((SPFilterPrimitiveClass *) G_OBJECT_GET_CLASS(primitive))->build_renderer(primitive, nr_filter);
+ } else {
+ g_warning("Cannot build filter renderer: missing builder");
+ }
+ }
+}
+
+int sp_filter_primitive_count(SPFilter *filter) {
+ g_assert(filter != NULL);
+ return filter->_primitive_count;
+}
/*
Local Variables: