summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2017-11-03 07:46:16 +0000
committerTavmjong Bah <tavmjong@free.fr>2017-11-03 07:46:16 +0000
commit9867b59558ccb8a9ff639aba73ed9de58d9825cc (patch)
treed47f8b47df2e4e35620d3ddda66178f2eee9e18e /src
parentDon't use infinite rectangle for tile area as this leads to overflow/underflo... (diff)
downloadinkscape-9867b59558ccb8a9ff639aba73ed9de58d9825cc.tar.gz
inkscape-9867b59558ccb8a9ff639aba73ed9de58d9825cc.zip
Set primitive filter area in feComposite and feMerge. Needed for tiling.
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-filter-composite.cpp3
-rw-r--r--src/display/nr-filter-merge.cpp3
2 files changed, 6 insertions, 0 deletions
diff --git a/src/display/nr-filter-composite.cpp b/src/display/nr-filter-composite.cpp
index dc5e4278f..04f81f857 100644
--- a/src/display/nr-filter-composite.cpp
+++ b/src/display/nr-filter-composite.cpp
@@ -79,6 +79,9 @@ void FilterComposite::render_cairo(FilterSlot &slot)
cairo_surface_t *out = ink_cairo_surface_create_output(input1, input2);
set_cairo_surface_ci(out, ci_fp );
+ Geom::Rect vp = filter_primitive_area( slot.get_units() );
+ slot.set_primitive_area(_output, vp); // Needed for tiling
+
if (op == COMPOSITE_ARITHMETIC) {
ink_cairo_surface_blend(input1, input2, out, ComposeArithmetic(k1, k2, k3, k4));
} else {
diff --git a/src/display/nr-filter-merge.cpp b/src/display/nr-filter-merge.cpp
index 2b9a24f25..fc2ce408f 100644
--- a/src/display/nr-filter-merge.cpp
+++ b/src/display/nr-filter-merge.cpp
@@ -38,6 +38,9 @@ void FilterMerge::render_cairo(FilterSlot &slot)
ci_fp = (SPColorInterpolation)_style->color_interpolation_filters.computed;
}
+ Geom::Rect vp = filter_primitive_area( slot.get_units() );
+ slot.set_primitive_area(_output, vp); // Needed for tiling
+
// output is RGBA if at least one input is RGBA
bool rgba32 = false;
cairo_surface_t *out = NULL;