diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2015-06-02 17:29:54 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2015-06-02 17:29:54 +0000 |
| commit | 53ff3799d1f7c05cfa7f1384eb39b5105c29f9ab (patch) | |
| tree | b651a8e8c24b87139cefedcc044fa17866fc0fd0 /src | |
| parent | update to trunk (diff) | |
| download | inkscape-53ff3799d1f7c05cfa7f1384eb39b5105c29f9ab.tar.gz inkscape-53ff3799d1f7c05cfa7f1384eb39b5105c29f9ab.zip | |
opening kaleidscope
(bzr r13708.1.30)
Diffstat (limited to 'src')
| -rw-r--r-- | src/live_effects/lpe-copy_rotate.cpp | 27 | ||||
| -rw-r--r-- | src/live_effects/lpe-copy_rotate.h | 2 |
2 files changed, 14 insertions, 15 deletions
diff --git a/src/live_effects/lpe-copy_rotate.cpp b/src/live_effects/lpe-copy_rotate.cpp index c119ca02e..f9d1bffee 100644 --- a/src/live_effects/lpe-copy_rotate.cpp +++ b/src/live_effects/lpe-copy_rotate.cpp @@ -237,9 +237,9 @@ LPECopyRotate::split_extreme(std::vector<Geom::Path> &path_on,Geom::Path divider position = pointInTriangle(side_checker, divider_extreme.initialPoint(), divider_extreme[0].finalPoint(), divider_extreme[1].finalPoint()); } if(position == 1) { - Geom::Path start = Geom::Path(divider_extreme.at(0)); - start.appendNew<Geom::LineSegment>(divider_extreme.at(1)); - if(!are_near(nearest_point(portion_original.initialPoint(),start),portion_original.initialPoint())){ + Geom::Path start = Geom::Path(divider_extreme.pointAt(0)); + start.appendNew<Geom::LineSegment>(divider_extreme.pointAt(1)); + if(!are_near(start.pointAt(nearest_point(portion_original.initialPoint(),start)),portion_original.initialPoint())){ portion_original.reverse(); } tmp_path.push_back(portion_original); @@ -253,9 +253,9 @@ LPECopyRotate::split_extreme(std::vector<Geom::Path> &path_on,Geom::Path divider } if(cs.size() > 0 && position == 1) { Geom::Path portion_original = original.portion(time_start, original.size()); - Geom::Path start = Geom::Path(divider_extreme.at(0)); - start.appendNew<Geom::LineSegment>(divider_extreme.at(1)); - if(!are_near(nearest_point(portion_original.initialPoint(),start),portion_original.initialPoint())){ + Geom::Path start = Geom::Path(divider_extreme.pointAt(0)); + start.appendNew<Geom::LineSegment>(divider_extreme.pointAt(1)); + if(!are_near(start.pointAt(nearest_point(portion_original.initialPoint(),start)),portion_original.initialPoint())){ portion_original.reverse(); } if (!original.closed()) { @@ -279,7 +279,7 @@ LPECopyRotate::split_extreme(std::vector<Geom::Path> &path_on,Geom::Path divider } void -LPECopyRotate::setKaleidoscope(std::vector<Geom::Path> &path_on, Geom::Path divider, Geom::Path divider_extreme, double size_divider) +LPECopyRotate::setKaleidoscope(std::vector<Geom::Path> &path_on, Geom::Path divider, Geom::Path divider_start, Geom::Path divider_end, double size_divider) { std::vector<Geom::Path> path_on_start = path_on; split(path_on,divider); @@ -347,18 +347,17 @@ LPECopyRotate::setKaleidoscope(std::vector<Geom::Path> &path_on, Geom::Path divi tmp_path_helper[0] = tmp_path_helper[0].reverse(); } else { if(rotation_angle * num_copies != 360){ - split_start(path_on_start,divider_extreme); + split_extreme(path_on_start,divider_start); for (Geom::PathVector::const_iterator path_it_start = path_on_start.begin(); path_it_start != path_on_start.end(); ++path_it_start) { Geom::Path original_start = *path_it_start; if (path_it->empty()) { continue; } - std::vector<Geom::Path> tmp_path_helper; - if(tmp_path_helper.size() > 0 && Geom::are_near(append_path.initialPoint(),path_it_start[0].initialPoint())) { - path_it_start.reverse(); - path_it_start.append(append_path); - append_path = path_it_start; + if(Geom::are_near(append_path.initialPoint(),original_start.initialPoint())) { + original_start.reverse(); } + original_start.append(append_path); + append_path = original_start; } } tmp_path_helper.push_back(append_path); @@ -428,7 +427,7 @@ LPECopyRotate::doEffect_pwd2 (Geom::Piecewise<Geom::D2<Geom::SBasis> > const & p original.close(true); } tmp_path.push_back(original); - setKaleidoscope(tmp_path,divider, divider_extreme, size_divider); + setKaleidoscope(tmp_path,divider, divider_start, divider_end, size_divider); path_out.insert(path_out.end(), tmp_path.begin(), tmp_path.end()); tmp_path.clear(); } diff --git a/src/live_effects/lpe-copy_rotate.h b/src/live_effects/lpe-copy_rotate.h index 638f8a413..e16d3ceee 100644 --- a/src/live_effects/lpe-copy_rotate.h +++ b/src/live_effects/lpe-copy_rotate.h @@ -38,7 +38,7 @@ public: virtual void doBeforeEffect (SPLPEItem const* lpeitem); - virtual void setKaleidoscope(std::vector<Geom::Path> &path_in, Geom::Path divider, Geom::Path extreme, double sizeDivider); + virtual void setKaleidoscope(std::vector<Geom::Path> &path_in, Geom::Path divider, Geom::Path divider_start, Geom::Path divider_end, double sizeDivider); virtual bool pointInTriangle(Geom::Point p, Geom::Point p0, Geom::Point p1, Geom::Point p2); |
