diff options
author | RazrFalcon <razrfalcon@gmail.com> | 2018-12-08 22:30:37 +0200 |
---|---|---|
committer | RazrFalcon <razrfalcon@gmail.com> | 2018-12-08 22:30:37 +0200 |
commit | 8eaf4cb4a3abdf8af59b420ea9589c8350fff7c1 (patch) | |
tree | bcf44fe761b25a2561e3a36b54541224e5d25ff2 /src | |
parent | 5698bd2e4f83aa2fb63f84c359eb4f8cea8e2256 (diff) |
Fixed filter region calculation.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend_utils/filter.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/backend_utils/filter.rs b/src/backend_utils/filter.rs index dfc6c9d..bc27255 100644 --- a/src/backend_utils/filter.rs +++ b/src/backend_utils/filter.rs @@ -527,24 +527,24 @@ fn calc_region( ts: &usvg::Transform, canvas_rect: ScreenRect, ) -> Result<ScreenRect, Error> { - let region = if filter.units == usvg::Units::ObjectBoundingBox { + let path = utils::rect_to_path(filter.rect); + + let region_ts = if filter.units == usvg::Units::ObjectBoundingBox { // Not 0.0, because bbox min size is 1x1. // See utils::path_bbox(). if bbox.width.fuzzy_eq(&1.0) || bbox.height.fuzzy_eq(&1.0) { return Err(Error::ZeroSizedObject); } - Rect::new( - bbox.x + bbox.width * filter.rect.x, - bbox.y + bbox.height * filter.rect.y, - bbox.width * filter.rect.width, - bbox.height * filter.rect.height, - ) + let mut ts2 = ts.clone(); + ts2.append(&usvg::Transform::from_bbox(bbox)); + ts2 } else { - filter.rect + *ts }; - let region = region.transform(*ts).to_screen_rect().fit_to_rect(canvas_rect); + let region = utils::path_bbox(&path, None, ®ion_ts); + let region = region.to_screen_rect().fit_to_rect(canvas_rect); if region.width == 0 || region.height == 0 { return Err(Error::InvalidRegion); |