summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabiertxof <jtx@jtx>2017-04-24 22:49:21 +0000
committerJabiertxof <jtx@jtx>2017-04-24 22:49:21 +0000
commit5ca97b274722c104c20be06095ae353e79bf7dbb (patch)
tree46d19b768d3f46283f2598105ecf74ee0d3c02cd /src
parentImprove rotate copies LPE to allow mirror copy with and without fuse (diff)
downloadinkscape-5ca97b274722c104c20be06095ae353e79bf7dbb.tar.gz
inkscape-5ca97b274722c104c20be06095ae353e79bf7dbb.zip
Fix last commit bug on split LPE objects in rotate copies LPE
(bzr r15640)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-copy_rotate.cpp46
1 files changed, 14 insertions, 32 deletions
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 {