diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2017-11-03 07:46:16 +0000 |
|---|---|---|
| committer | Tavmjong Bah <tavmjong@free.fr> | 2017-11-03 07:46:16 +0000 |
| commit | 9867b59558ccb8a9ff639aba73ed9de58d9825cc (patch) | |
| tree | d47f8b47df2e4e35620d3ddda66178f2eee9e18e /src/display | |
| parent | Don't use infinite rectangle for tile area as this leads to overflow/underflo... (diff) | |
| download | inkscape-9867b59558ccb8a9ff639aba73ed9de58d9825cc.tar.gz inkscape-9867b59558ccb8a9ff639aba73ed9de58d9825cc.zip | |
Set primitive filter area in feComposite and feMerge. Needed for tiling.
Diffstat (limited to 'src/display')
| -rw-r--r-- | src/display/nr-filter-composite.cpp | 3 | ||||
| -rw-r--r-- | src/display/nr-filter-merge.cpp | 3 |
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; |
