diff options
| author | Jabiertxof <jtx@jtx> | 2016-12-26 09:14:15 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx> | 2016-12-26 09:14:15 +0000 |
| commit | ec04b9e4c0e94f38b56321ef073f9a8671a1a9a8 (patch) | |
| tree | e2b92e572c062e90b9eb45d23e52cb106fce1ae8 /src | |
| parent | [Bug #1574561] Italian translation update (win32 installer). (diff) | |
| download | inkscape-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.cpp | 10 | ||||
| -rw-r--r-- | src/live_effects/lpe-mirror_symmetry.cpp | 18 |
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( ¢er_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; } |
