From c8e647eb39cdab2055c14b37de3a681a20524188 Mon Sep 17 00:00:00 2001 From: johanengelen Date: Mon, 16 Jun 2008 21:25:19 +0000 Subject: [PATCH] use 2geom method to calc boundingbox of shape --- src/helper/geom.cpp | 7 +++++++ src/helper/geom.h | 1 + src/sp-shape.cpp | 14 +++++++------- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/helper/geom.cpp b/src/helper/geom.cpp index 3917218bb..8a32386fc 100644 --- a/src/helper/geom.cpp +++ b/src/helper/geom.cpp @@ -11,6 +11,8 @@ * Released under GNU GPL */ +#include "helper/geom.h" + #include <2geom/pathvector.h> #include <2geom/transforms.h> @@ -20,6 +22,11 @@ bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) return Geom::bounds_fast(pv * t); } +Geom::Rect +bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) +{ + return Geom::bounds_exact(pv * t); +} /* Local Variables: diff --git a/src/helper/geom.h b/src/helper/geom.h index fbc3f2c00..d7548756a 100644 --- a/src/helper/geom.h +++ b/src/helper/geom.h @@ -15,6 +15,7 @@ #include <2geom/forward.h> Geom::Rect bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); +Geom::Rect bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); #endif // INKSCAPE_HELPER_GEOM_H diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp index 4ae2a98f8..efed9209b 100644 --- a/src/sp-shape.cpp +++ b/src/sp-shape.cpp @@ -21,6 +21,8 @@ #include #include #include +#include <2geom/rect.h> +#include "helper/geom.h" #include #include @@ -637,14 +639,12 @@ static void sp_shape_bbox(SPItem const *item, NRRect *bbox, NR::Matrix const &tr if (shape->curve) { NRRect cbbox; - const_NRBPath bp; - - bp.path = SP_CURVE_BPATH (shape->curve); - - cbbox.x0 = cbbox.y0 = NR_HUGE; - cbbox.x1 = cbbox.y1 = -NR_HUGE; - nr_path_matrix_bbox_union(&bp, transform, &cbbox); + Geom::Rect geombbox = bounds_exact_transformed(shape->curve->get_pathvector(), to_2geom(transform)); + cbbox.x0 = geombbox[0][0]; + cbbox.y0 = geombbox[1][0]; + cbbox.x1 = geombbox[0][1]; + cbbox.y1 = geombbox[1][1]; if ((SPItem::BBoxType) flags != SPItem::GEOMETRIC_BBOX) { -- 2.30.2