From 5ca97b274722c104c20be06095ae353e79bf7dbb Mon Sep 17 00:00:00 2001 From: Jabiertxof Date: Tue, 25 Apr 2017 00:49:21 +0200 Subject: Fix last commit bug on split LPE objects in rotate copies LPE (bzr r15640) --- src/live_effects/lpe-copy_rotate.cpp | 46 +++++++++++------------------------- 1 file changed, 14 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/live_effects/lpe-copy_rotate.cpp b/src/live_effects/lpe-copy_rotate.cpp index 3fda0576b..40dbb798e 100644 --- a/src/live_effects/lpe-copy_rotate.cpp +++ b/src/live_effects/lpe-copy_rotate.cpp @@ -138,41 +138,23 @@ LPECopyRotate::doAfterEffect (SPLPEItem const* lpeitem) Geom::Point line_start = origin + dir * Geom::Rotate(-(Geom::rad_from_deg(starting_angle))) * size_divider; Geom::Point line_end = origin + dir * Geom::Rotate(-(Geom::rad_from_deg(rotation_angle + starting_angle))) * size_divider; Geom::Affine m = Geom::Translate(-origin) * Geom::Rotate(-(Geom::rad_from_deg(starting_angle))); - Geom::Affine r = Geom::identity(); Geom::Point dir = unit_vector((Geom::Point)origin - Geom::middle_point(line_start,line_end)); - if (mirror_copies) { - r *= Geom::Rotate(Geom::Angle(dir)).inverse(); - r *= Geom::Scale(1, -1); - r *= Geom::Rotate(Geom::Angle(dir)); - } - if (fuse_paths) { - size_t rest = 0; - for (size_t i = 1; i < num_copies; ++i) { - Geom::Rotate rot(-(Geom::rad_from_deg(rotation_angle * i))); - Geom::Affine t; - if( rest%2 == 0) { - t = m * r * rot * Geom::Rotate(Geom::rad_from_deg(starting_angle)) * Geom::Translate(origin); - } else { - t = m * rot * Geom::Rotate(Geom::rad_from_deg(starting_angle)) * Geom::Translate(origin); - } - t *= sp_lpe_item->transform; - toItem(t, i-1, reset); - rest ++; + size_t rest = 0; + for (size_t i = 1; i < num_copies; ++i) { + Geom::Affine r = Geom::identity(); + if( rest%2 == 0 && mirror_copies) { + r *= Geom::Rotate(Geom::Angle(dir)).inverse(); + r *= Geom::Scale(1, -1); + r *= Geom::Rotate(Geom::Angle(dir)); } - } else { - size_t rest = 0; - for (size_t i = 1; i < num_copies; ++i) { - Geom::Rotate rot(-(Geom::rad_from_deg(rotation_angle * i))); - Geom::Affine t; - if( rest%2 == 0) { - t = m * r * rot * Geom::Rotate(Geom::rad_from_deg(starting_angle)) * Geom::Translate(origin); - } else { - t = m * rot * Geom::Rotate(Geom::rad_from_deg(starting_angle)) * Geom::Translate(origin); - } - t *= sp_lpe_item->transform; - toItem(t, i - 1, reset); - rest ++; + Geom::Rotate rot(-(Geom::rad_from_deg(rotation_angle * i))); + Geom::Affine t = m * r * rot * Geom::Rotate(Geom::rad_from_deg(starting_angle)) * Geom::Translate(origin); + if( rest%2 == 0 && mirror_copies) { + t = m * r * rot * Geom::Rotate(Geom::rad_from_deg(starting_angle)).inverse() * Geom::Translate(origin); } + t *= sp_lpe_item->transform; + toItem(t, i-1, reset); + rest ++; } reset = false; } else { -- cgit v1.2.3