summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-12-20 12:23:52 +0000
committerjabiertxof <info@marker.es>2016-12-20 12:23:52 +0000
commite83f76ab50e22337a01466f73476e61b19f440ec (patch)
tree22386197658764684b59e1acb430fe29ed5ea71c /src
parentUpdate to trunk (diff)
parentFix undo incosistences in mirror LPE and in copy rotate LPE (diff)
downloadinkscape-e83f76ab50e22337a01466f73476e61b19f440ec.tar.gz
inkscape-e83f76ab50e22337a01466f73476e61b19f440ec.zip
Update to trunk
(bzr r15295.1.33)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-copy_rotate.cpp4
-rw-r--r--src/live_effects/lpe-mirror_symmetry.cpp24
2 files changed, 16 insertions, 12 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 95a05c319..ae036c3dc 100644
--- a/src/live_effects/lpe-mirror_symmetry.cpp
+++ b/src/live_effects/lpe-mirror_symmetry.cpp
@@ -156,6 +156,7 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem)
SPDocument * document = SP_ACTIVE_DOCUMENT;
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());
if (mode == MT_Y) {
@@ -166,16 +167,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);
end_point.param_setValue(point_b);
} 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);
}
@@ -200,11 +205,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
@@ -464,7 +468,7 @@ LPEMirrorSymmetry::doOnApply (SPLPEItem const* lpeitem)
start_point.param_update_default(point_a);
end_point.param_setValue(point_b);
end_point.param_update_default(point_b);
- center_point.param_setValue(point_c);
+ center_point.param_setValue(point_c, true);
previous_center = center_point;
SPLPEItem * splpeitem = const_cast<SPLPEItem *>(lpeitem);
if (!lpeitem->hasPathEffectOfType(this->effectType(), false) ){ //first applied not ready yet