From: Johan Engelen Date: Sun, 29 Aug 2010 16:33:10 +0000 (+0200) Subject: fix bug where bbox is calculated wrong for paths with markers when the path has a... X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=a7a0c024688ba27858e079e084a550075d28f192;p=inkscape.git fix bug where bbox is calculated wrong for paths with markers when the path has a transform applied. the transform was applied twice (sp_shape_marker_get_transform_at_start already takes care of rotation and translation, and scale is taken care of by item_outline call within item_outline_add_marker) --- diff --git a/src/splivarot.cpp b/src/splivarot.cpp index db9f72975..2b7da7f8a 100644 --- a/src/splivarot.cpp +++ b/src/splivarot.cpp @@ -626,8 +626,7 @@ void sp_selected_path_outline_add_marker( SPObject *marker_object, Geom::Matrix static void item_outline_add_marker( SPObject const *marker_object, Geom::Matrix marker_transform, - Geom::Scale stroke_scale, Geom::Matrix transform, - Geom::PathVector* pathv_in ) + Geom::Scale stroke_scale, Geom::PathVector* pathv_in ) { SPMarker* marker = SP_MARKER (marker_object); SPItem* marker_item = sp_item_first_item_child(SP_OBJECT(marker_object)); @@ -637,7 +636,7 @@ void item_outline_add_marker( SPObject const *marker_object, Geom::Matrix marker tr = stroke_scale * tr; } // total marker transform - tr = marker_item->transform * marker->c2p * tr * transform; + tr = marker_item->transform * marker->c2p * tr; Geom::PathVector* marker_pathv = item_outline(marker_item); @@ -792,7 +791,7 @@ Geom::PathVector* item_outline(SPItem const *item) if ( SPObject *marker_obj = shape->marker[i] ) { Geom::Matrix const m (sp_shape_marker_get_transform_at_start(pathv.front().front())); item_outline_add_marker( marker_obj, m, - Geom::Scale(i_style->stroke_width.computed), transform, + Geom::Scale(i_style->stroke_width.computed), ret_pathv ); } } @@ -807,7 +806,7 @@ Geom::PathVector* item_outline(SPItem const *item) { Geom::Matrix const m (sp_shape_marker_get_transform_at_start(path_it->front())); item_outline_add_marker( midmarker_obj, m, - Geom::Scale(i_style->stroke_width.computed), transform, + Geom::Scale(i_style->stroke_width.computed), ret_pathv ); } // MID position @@ -822,7 +821,7 @@ Geom::PathVector* item_outline(SPItem const *item) */ Geom::Matrix const m (sp_shape_marker_get_transform(*curve_it1, *curve_it2)); item_outline_add_marker( midmarker_obj, m, - Geom::Scale(i_style->stroke_width.computed), transform, + Geom::Scale(i_style->stroke_width.computed), ret_pathv); ++curve_it1; @@ -834,7 +833,7 @@ Geom::PathVector* item_outline(SPItem const *item) Geom::Curve const &lastcurve = path_it->back_default(); Geom::Matrix const m = sp_shape_marker_get_transform_at_end(lastcurve); item_outline_add_marker( midmarker_obj, m, - Geom::Scale(i_style->stroke_width.computed), transform, + Geom::Scale(i_style->stroke_width.computed), ret_pathv ); } } @@ -853,7 +852,7 @@ Geom::PathVector* item_outline(SPItem const *item) Geom::Matrix const m = sp_shape_marker_get_transform_at_end(lastcurve); item_outline_add_marker( marker_obj, m, - Geom::Scale(i_style->stroke_width.computed), transform, + Geom::Scale(i_style->stroke_width.computed), ret_pathv ); } }