diff options
| author | Niko Kiirala <niko@kiirala.com> | 2007-05-21 09:39:52 +0000 |
|---|---|---|
| committer | kiirala <kiirala@users.sourceforge.net> | 2007-05-21 09:39:52 +0000 |
| commit | 2ac98237319c51ceb2a25d5a4821ef6afc0beb6e (patch) | |
| tree | 8ff0e8ad21cae00d3ff85127285f6279d2872dfe /src/sp-filter.cpp | |
| parent | committed patch 1629798 (diff) | |
| download | inkscape-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.cpp | 33 |
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: |
