summaryrefslogtreecommitdiffstats
path: root/src/display/nr-arena-shape.cpp
diff options
context:
space:
mode:
authorHugo Rodrigues <me@hugorodrigues.com>2006-08-14 18:54:26 +0000
committerhaa_rodrigues <haa_rodrigues@users.sourceforge.net>2006-08-14 18:54:26 +0000
commitf8c49ad587d2fbb058a360b677c57692b45aaa08 (patch)
tree11948ac4cd95d72ae09c1911db7cceb6643b0399 /src/display/nr-arena-shape.cpp
parentinform user of progress during long-running simplify operations (diff)
downloadinkscape-f8c49ad587d2fbb058a360b677c57692b45aaa08.tar.gz
inkscape-f8c49ad587d2fbb058a360b677c57692b45aaa08.zip
Work on filters. spFilterPrimitive structure added. Blur slider updated. Fixed sp-object-repr.cpp typos
(bzr r1598)
Diffstat (limited to 'src/display/nr-arena-shape.cpp')
-rw-r--r--src/display/nr-arena-shape.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/display/nr-arena-shape.cpp b/src/display/nr-arena-shape.cpp
index 4653b5ce6..f9c203187 100644
--- a/src/display/nr-arena-shape.cpp
+++ b/src/display/nr-arena-shape.cpp
@@ -17,6 +17,8 @@
#include <display/nr-arena.h>
#include <display/nr-arena-shape.h>
#include "display/nr-filter.h"
+#include "display/nr-filter-gaussian.h"
+#include "display/nr-filter-types.h"
#include <libnr/n-art-bpath.h>
#include <libnr/nr-path.h>
#include <libnr/nr-pixops.h>
@@ -29,6 +31,8 @@
#include <style.h>
/* prefs-utils used for deciding, whether to run filtering test or not */
#include "prefs-utils.h"
+#include "sp-filter.h"
+#include "sp-gaussian-blur.h"
//int showRuns=0;
void nr_pixblock_render_shape_mask_or(NRPixBlock &m,Shape* theS);
@@ -1087,9 +1091,35 @@ nr_arena_shape_set_style(NRArenaShape *shape, SPStyle *style)
/* TODO: after SPStyle handles filters, get the correct filter
* from there. */
- //if (prefs_get_double_attribute("options.filtertest", "value", 0) != 0)
if (style->filter.set && style->filter.filter)
+ {
shape->filter = new NR::Filter();
+ shape->filter->set_x(style->filter.filter->x);
+ shape->filter->set_y(style->filter.filter->y);
+ shape->filter->set_width(style->filter.filter->width);
+ shape->filter->set_height(style->filter.filter->height);
+
+ //go through all SP filter primitives
+ for(int i=0; i<style->filter.filter->_primitive_count; i++)
+ {
+ SPFilterPrimitive *primitive = style->filter.filter->_primitives[i];
+ //if primitive is gaussianblur
+// if(SP_IS_GAUSSIANBLUR(primitive))
+ {
+ NR::FilterGaussian * gaussian = (NR::FilterGaussian *) shape->filter->add_primitive(NR::NR_FILTER_GAUSSIANBLUR);
+ SPGaussianBlur * spblur = SP_GAUSSIANBLUR(primitive);
+ float num = spblur->stdDeviation.getNumber();
+ if( num>=0.0 )
+ {
+ float optnum = spblur->stdDeviation.getOptNumber();
+ if( optnum>=0.0 )
+ gaussian->set_deviation((double) num, (double) optnum);
+ else
+ gaussian->set_deviation((double) num);
+ }
+ }
+ }
+ }
nr_arena_item_request_update(shape, NR_ARENA_ITEM_STATE_ALL, FALSE);
}