summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-06-02 17:29:54 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-06-02 17:29:54 +0000
commit53ff3799d1f7c05cfa7f1384eb39b5105c29f9ab (patch)
treeb651a8e8c24b87139cefedcc044fa17866fc0fd0 /src
parentupdate to trunk (diff)
downloadinkscape-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.cpp27
-rw-r--r--src/live_effects/lpe-copy_rotate.h2
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);