summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRazrFalcon <razrfalcon@gmail.com>2018-12-08 22:30:37 +0200
committerRazrFalcon <razrfalcon@gmail.com>2018-12-08 22:30:37 +0200
commit8eaf4cb4a3abdf8af59b420ea9589c8350fff7c1 (patch)
treebcf44fe761b25a2561e3a36b54541224e5d25ff2 /src
parent5698bd2e4f83aa2fb63f84c359eb4f8cea8e2256 (diff)
Fixed filter region calculation.
Diffstat (limited to 'src')
-rw-r--r--src/backend_utils/filter.rs18
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, &region_ts);
+ let region = region.to_screen_rect().fit_to_rect(canvas_rect);
if region.width == 0 || region.height == 0 {
return Err(Error::InvalidRegion);