From 8c2f0a0a6368e3df0cdeaa1cac732e7193d88b62 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Mon, 7 Nov 2016 17:24:42 +0100 Subject: 1639832 Blend and blur unspected results Fixed bugs: - https://launchpad.net/bugs/1639832 (bzr r15222) --- src/ui/dialog/objects.cpp | 9 ++++++++- src/ui/widget/filter-effect-chooser.cpp | 4 ---- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src/ui') diff --git a/src/ui/dialog/objects.cpp b/src/ui/dialog/objects.cpp index 09ffc9c4c..446af4ccb 100644 --- a/src/ui/dialog/objects.cpp +++ b/src/ui/dialog/objects.cpp @@ -1512,11 +1512,18 @@ void ObjectsPanel::_blendChangedIter(const Gtk::TreeIter& iter, Glib::ustring bl if (SP_IS_GAUSSIANBLUR(&primitive)) { Geom::OptRect bbox = item->bounds(SPItem::GEOMETRIC_BBOX); if (bbox) { - radius = SP_GAUSSIANBLUR(&primitive)->stdDeviation.getNumber(); + double perimeter = bbox->dimensions()[Geom::X] + bbox->dimensions()[Geom::Y]; // fixme: this is only half the perimeter, is that correct? + radius = _fe_blur.get_blur_value() * perimeter / 400; } } } } + if (radius != 0) { + // The modify function expects radius to be in display pixels. + Geom::Affine i2d (item->i2dt_affine()); + double expansion = i2d.descrim(); + radius *= expansion; + } SPFilter *filter = new_filter_simple_from_item(_document, item, blendmode.c_str(), radius); sp_style_set_property_url(item, "filter", filter, false); } else { diff --git a/src/ui/widget/filter-effect-chooser.cpp b/src/ui/widget/filter-effect-chooser.cpp index ae2f3e7c2..eace494ed 100644 --- a/src/ui/widget/filter-effect-chooser.cpp +++ b/src/ui/widget/filter-effect-chooser.cpp @@ -51,10 +51,6 @@ sigc::signal& SimpleFilterModifier::signal_blend_blur_changed() const Glib::ustring SimpleFilterModifier::get_blend_mode() { - if (!(_flags & BLEND)) { - return "normal"; - } - const Util::EnumData *d = _blend.get_active_data(); if (d) { return _blend.get_active_data()->key; -- cgit v1.2.3