diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2016-12-20 12:03:44 +0000 |
|---|---|---|
| committer | jabiertxof <info@marker.es> | 2016-12-20 12:03:44 +0000 |
| commit | 3d61abda24d5b63539ef4c73470e7099fb5597af (patch) | |
| tree | 2f6f829704b8d7c06a9acde7efa269ce71f5d7b3 /src | |
| parent | Remove string from tip (diff) | |
| download | inkscape-3d61abda24d5b63539ef4c73470e7099fb5597af.tar.gz inkscape-3d61abda24d5b63539ef4c73470e7099fb5597af.zip | |
Fix undo incosistences in mirror LPE and in copy rotate LPE
(bzr r15340)
Diffstat (limited to 'src')
| -rw-r--r-- | src/live_effects/lpe-copy_rotate.cpp | 4 | ||||
| -rw-r--r-- | src/live_effects/lpe-mirror_symmetry.cpp | 23 |
2 files changed, 16 insertions, 11 deletions
diff --git a/src/live_effects/lpe-copy_rotate.cpp b/src/live_effects/lpe-copy_rotate.cpp index 72896c1ae..153be031e 100644 --- a/src/live_effects/lpe-copy_rotate.cpp +++ b/src/live_effects/lpe-copy_rotate.cpp @@ -113,7 +113,7 @@ LPECopyRotate::doOnApply(SPLPEItem const* lpeitem) A = Point(boundingbox_X.min(), boundingbox_Y.middle()); B = Point(boundingbox_X.middle(), boundingbox_Y.middle()); - origin.param_setValue(A); + origin.param_setValue(A, true); origin.param_update_default(A); dist_angle_handle = L2(B - A); dir = unit_vector(B - A); @@ -171,7 +171,7 @@ LPECopyRotate::doBeforeEffect (SPLPEItem const* lpeitem) start_pos = origin + dir * Rotate(-rad_from_deg(starting_angle)) * dist_angle_handle; rot_pos = origin + dir * Rotate(-rad_from_deg(rotation_angle+starting_angle)) * dist_angle_handle; if (near) { - starting_point.param_setValue(start_pos); + starting_point.param_setValue(start_pos, true); } previous_start_point = (Geom::Point)starting_point; if ( fuse_paths || copies_to_360 ) { diff --git a/src/live_effects/lpe-mirror_symmetry.cpp b/src/live_effects/lpe-mirror_symmetry.cpp index 624bdaf12..9a6fb05dd 100644 --- a/src/live_effects/lpe-mirror_symmetry.cpp +++ b/src/live_effects/lpe-mirror_symmetry.cpp @@ -103,6 +103,7 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem) { using namespace Geom; original_bbox(lpeitem); + //center_point->param_set_liveupdate(false); Point point_a(boundingbox_X.max(), boundingbox_Y.min()); Point point_b(boundingbox_X.max(), boundingbox_Y.max()); Point point_c(boundingbox_X.max(), boundingbox_Y.middle()); @@ -114,16 +115,20 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem) point_a = Geom::Point(center_point[X],boundingbox_Y.min()); point_b = Geom::Point(center_point[X],boundingbox_Y.max()); } - if (Geom::are_near((Geom::Point)start_point, (Geom::Point)end_point, 0.01)) { - start_point.param_setValue(point_a); - end_point.param_setValue(point_b); + if ((Geom::Point)start_point == (Geom::Point)end_point && (Geom::Point)start_point == Geom::Point(0,0)) { + start_point.param_setValue(point_a, true); + end_point.param_setValue(point_b, true); + previous_center = Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point); + center_point.param_setValue(previous_center, true); } if ( mode == MT_X || mode == MT_Y ) { start_point.param_setValue(point_a, true); end_point.param_setValue(point_b, true); } else if ( mode == MT_FREE) { - if(!are_near(previous_center,center_point, 0.01)) { - Geom::Point trans = center_point - previous_center; + if (are_near(previous_center, (Geom::Point)center_point, 0.01)) { + center_point.param_setValue(Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point), true); + } else { + Geom::Point trans = center_point - Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point); start_point.param_setValue(start_point * trans, true); end_point.param_setValue(end_point * trans, true); } @@ -150,10 +155,10 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem) end_point.param_setValue(ep, true); } } - previous_center = Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point); - if (!are_near(previous_center, center_point,0.01)) { - center_point.param_setValue(previous_center); + if (!are_near(previous_center, (Geom::Point)center_point, 0.01)) { + center_point.param_setValue(Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point), true); } + previous_center = center_point; } void @@ -181,7 +186,7 @@ LPEMirrorSymmetry::doOnApply (SPLPEItem const* lpeitem) start_point.param_update_default(point_a); end_point.param_setValue(point_b, true); end_point.param_update_default(point_b); - center_point.param_setValue(point_c); + center_point.param_setValue(point_c, true); previous_center = center_point; } |
