summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabiertxof <jtx@jtx>2016-12-26 09:14:15 +0000
committerJabiertxof <jtx@jtx>2016-12-26 09:14:15 +0000
commitec04b9e4c0e94f38b56321ef073f9a8671a1a9a8 (patch)
treee2b92e572c062e90b9eb45d23e52cb106fce1ae8 /src
parent[Bug #1574561] Italian translation update (win32 installer). (diff)
downloadinkscape-ec04b9e4c0e94f38b56321ef073f9a8671a1a9a8.tar.gz
inkscape-ec04b9e4c0e94f38b56321ef073f9a8671a1a9a8.zip
Fixes bug #1652465 on mirror and copy rotate LPE.
Fixed bugs: - https://launchpad.net/bugs/1652465 (bzr r15356)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-copy_rotate.cpp10
-rw-r--r--src/live_effects/lpe-mirror_symmetry.cpp18
2 files changed, 11 insertions, 17 deletions
diff --git a/src/live_effects/lpe-copy_rotate.cpp b/src/live_effects/lpe-copy_rotate.cpp
index 153be031e..3dd35696a 100644
--- a/src/live_effects/lpe-copy_rotate.cpp
+++ b/src/live_effects/lpe-copy_rotate.cpp
@@ -50,8 +50,6 @@ LPECopyRotate::LPECopyRotate(LivePathEffectObject *lpeobject) :
{
show_orig_path = true;
_provides_knotholder_entities = true;
- apply_to_clippath_and_mask = true;
-
// register all your parameters here, so Inkscape knows which parameters this effect has:
registerParameter(&copies_to_360);
registerParameter(&fuse_paths);
@@ -63,6 +61,7 @@ LPECopyRotate::LPECopyRotate(LivePathEffectObject *lpeobject) :
num_copies.param_make_integer(true);
num_copies.param_set_range(0, 1000);
+ apply_to_clippath_and_mask = true;
}
LPECopyRotate::~LPECopyRotate()
@@ -170,17 +169,14 @@ 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) {
+ near = Geom::are_near(start_pos, (Geom::Point)starting_point, 0.01);
+ if (!near) {
starting_point.param_setValue(start_pos, true);
}
previous_start_point = (Geom::Point)starting_point;
if ( fuse_paths || copies_to_360 ) {
rot_pos = origin;
}
-
- SPLPEItem * item = const_cast<SPLPEItem*>(lpeitem);
- item->apply_to_clippath(item);
- item->apply_to_mask(item);
}
void
diff --git a/src/live_effects/lpe-mirror_symmetry.cpp b/src/live_effects/lpe-mirror_symmetry.cpp
index 5b405e3ac..f7881fb2e 100644
--- a/src/live_effects/lpe-mirror_symmetry.cpp
+++ b/src/live_effects/lpe-mirror_symmetry.cpp
@@ -55,8 +55,8 @@ LPEMirrorSymmetry::LPEMirrorSymmetry(LivePathEffectObject *lpeobject) :
registerParameter( &start_point);
registerParameter( &end_point);
registerParameter( &center_point);
- apply_to_clippath_and_mask = true;
previous_center = Geom::Point(0,0);
+ apply_to_clippath_and_mask = true;
}
LPEMirrorSymmetry::~LPEMirrorSymmetry()
@@ -115,16 +115,19 @@ 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::Point)start_point == (Geom::Point)end_point && (Geom::Point)start_point == Geom::Point(0,0)) {
+ if ((Geom::Point)start_point == (Geom::Point)end_point) {
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);
+ return;
}
if ( mode == MT_X || mode == MT_Y ) {
- start_point.param_setValue(point_a, true);
- end_point.param_setValue(point_b, true);
- center_point.param_setValue(Geom::middle_point(point_a, point_b), true);
+ if (!are_near(previous_center, (Geom::Point)center_point, 0.01)) {
+ start_point.param_setValue(point_a, true);
+ end_point.param_setValue(point_b, true);
+ center_point.param_setValue(Geom::middle_point(point_a, point_b), true);
+ }
} else if ( mode == MT_FREE) {
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);
@@ -141,7 +144,6 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem)
Geom::Point ep = Geom::Point(document->getWidth().value("px")/2.0, document->getHeight().value("px")) * transform;
end_point.param_setValue(ep, true);
center_point.param_setValue(Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point), true);
- previous_center = center_point;
} else { //horizontal page
SPDocument * document = SP_ACTIVE_DOCUMENT;
Geom::Affine transform = i2anc_affine(SP_OBJECT(lpeitem), NULL).inverse();
@@ -150,10 +152,6 @@ LPEMirrorSymmetry::doBeforeEffect (SPLPEItem const* lpeitem)
Geom::Point ep = Geom::Point(document->getWidth().value("px"), document->getHeight().value("px")/2.0) * transform;
end_point.param_setValue(ep, true);
center_point.param_setValue(Geom::middle_point((Geom::Point)start_point, (Geom::Point)end_point), true);
- previous_center = center_point;
- }
- 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;
}