summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/objects.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-11-07 16:24:42 +0000
committerjabiertxof <info@marker.es>2016-11-07 16:24:42 +0000
commit8c2f0a0a6368e3df0cdeaa1cac732e7193d88b62 (patch)
tree3d2da9cc994da1e13620eda7d1509b25423ac347 /src/ui/dialog/objects.cpp
parentfix cursor on big endian systems (diff)
downloadinkscape-8c2f0a0a6368e3df0cdeaa1cac732e7193d88b62.tar.gz
inkscape-8c2f0a0a6368e3df0cdeaa1cac732e7193d88b62.zip
1639832 Blend and blur unspected results
Fixed bugs: - https://launchpad.net/bugs/1639832 (bzr r15222)
Diffstat (limited to 'src/ui/dialog/objects.cpp')
-rw-r--r--src/ui/dialog/objects.cpp9
1 files changed, 8 insertions, 1 deletions
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 {