From 0b6b395ee6f16e42bf36e691c91af83fa95d97e1 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Fri, 1 Nov 2019 14:50:57 +0100 Subject: Improve clip LPE Fixes: https://gitlab.com/inkscape/inbox/issues/868 https://gitlab.com/inkscape/inbox/issues/867 https://gitlab.com/inkscape/inbox/issues/866 --- src/object/sp-item.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/object/sp-item.cpp') diff --git a/src/object/sp-item.cpp b/src/object/sp-item.cpp index d12d8e465..884bf6be4 100644 --- a/src/object/sp-item.cpp +++ b/src/object/sp-item.cpp @@ -791,7 +791,7 @@ Geom::OptRect SPItem::geometricBounds(Geom::Affine const &transform) const return bbox; } -Geom::OptRect SPItem::visualBounds(Geom::Affine const &transform) const +Geom::OptRect SPItem::visualBounds(Geom::Affine const &transform, bool wfilter, bool wclip, bool wmask) const { using Geom::X; using Geom::Y; @@ -800,7 +800,7 @@ Geom::OptRect SPItem::visualBounds(Geom::Affine const &transform) const SPFilter *filter = (style && style->filter.href) ? dynamic_cast(style->getFilter()) : nullptr; - if ( filter ) { + if (filter && wfilter) { // call the subclass method // CPPIFY //bbox = this->bbox(Geom::identity(), SPItem::VISUAL_BBOX); @@ -851,13 +851,13 @@ Geom::OptRect SPItem::visualBounds(Geom::Affine const &transform) const //bbox = this->bbox(transform, SPItem::VISUAL_BBOX); bbox = const_cast(this)->bbox(transform, SPItem::VISUAL_BBOX); } - if (clip_ref->getObject()) { + if (clip_ref->getObject() && wclip) { SPItem *ownerItem = dynamic_cast(clip_ref->getOwner()); g_assert(ownerItem != nullptr); ownerItem->bbox_valid = FALSE; // LP Bug 1349018 bbox.intersectWith(clip_ref->getObject()->geometricBounds(transform)); } - if (mask_ref->getObject()) { + if (mask_ref->getObject() && wmask) { bbox_valid = false; // LP Bug 1349018 bbox.intersectWith(mask_ref->getObject()->visualBounds(transform)); } -- cgit v1.2.3