diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2015-01-25 00:17:20 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2015-01-25 00:17:20 +0000 |
| commit | a1459b1d322111fe54879a23bcae277cb797494e (patch) | |
| tree | ce8e6602e6eaf9c8c59d55d0f9877155e57bc69f /src | |
| parent | Kaleidoscope check (diff) | |
| parent | Translations. Reverting Slovak translation file due to build errors (see Bug ... (diff) | |
| download | inkscape-a1459b1d322111fe54879a23bcae277cb797494e.tar.gz inkscape-a1459b1d322111fe54879a23bcae277cb797494e.zip | |
Added kaleidoscope mode
(bzr r13708.1.17)
Diffstat (limited to 'src')
| -rw-r--r-- | src/live_effects/lpe-copy_rotate.cpp | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/src/live_effects/lpe-copy_rotate.cpp b/src/live_effects/lpe-copy_rotate.cpp index 6c16c6194..9b576c315 100644 --- a/src/live_effects/lpe-copy_rotate.cpp +++ b/src/live_effects/lpe-copy_rotate.cpp @@ -5,7 +5,7 @@ * Authors: * Maximilian Albert <maximilian.albert@gmail.com> * Johan Engelen <j.b.c.engelen@alumnus.utwente.nl> - * + * Jabiertxo Arraiza Cenoz <jabier.arraiza@marker.es> * Copyright (C) Authors 2007-2012 * * Released under GNU GPL, read the file 'COPYING' for more information @@ -233,12 +233,36 @@ LPECopyRotate::setKaleidoscope(std::vector<Geom::Path> &path_on, Geom::Path divi appendPath = original; } appendPath *= m; - if(i != 0 && tmp_path2.size() > 0 && Geom::are_near(tmp_path2[tmp_path2.size()-1].finalPoint(),appendPath.finalPoint())){ - tmp_path2[tmp_path2.size()-1].append(appendPath.reverse()); + if(i != 0 && tmp_path2.size() > 0 &&( Geom::are_near(tmp_path2[tmp_path2.size()-1].finalPoint(),appendPath.finalPoint()))){ + Geom::Path tmpAppend = appendPath.reverse(); + tmpAppend.setInitial(tmp_path2[tmp_path2.size()-1].finalPoint()); + tmp_path2[tmp_path2.size()-1].append(tmpAppend); } else if(i != 0 && tmp_path2.size() > 0 && Geom::are_near(tmp_path2[tmp_path2.size()-1].initialPoint(),appendPath.initialPoint())){ + Geom::Path tmpAppend = appendPath; + tmp_path2[tmp_path2.size()-1] = tmp_path2[tmp_path2.size()-1].reverse(); + tmpAppend.setInitial(tmp_path2[tmp_path2.size()-1].finalPoint()); + tmp_path2[tmp_path2.size()-1].append(tmpAppend); tmp_path2[tmp_path2.size()-1] = tmp_path2[tmp_path2.size()-1].reverse(); - tmp_path2[tmp_path2.size()-1].append(appendPath); + } else if(i != 0 && tmp_path2.size() > 0 && Geom::are_near(tmp_path2[tmp_path2.size()-1].finalPoint(),appendPath.initialPoint())){ + Geom::Path tmpAppend = appendPath; + tmpAppend.setInitial(tmp_path2[tmp_path2.size()-1].finalPoint()); + tmp_path2[tmp_path2.size()-1].append(tmpAppend); + } else if(i != 0 && tmp_path2.size() > 0 && Geom::are_near(tmp_path2[tmp_path2.size()-1].initialPoint(),appendPath.finalPoint())){ + Geom::Path tmpAppend = appendPath.reverse(); tmp_path2[tmp_path2.size()-1] = tmp_path2[tmp_path2.size()-1].reverse(); + tmpAppend.setInitial(tmp_path2[tmp_path2.size()-1].finalPoint()); + tmp_path2[tmp_path2.size()-1].append(tmpAppend); + tmp_path2[tmp_path2.size()-1] = tmp_path2[tmp_path2.size()-1].reverse(); + } else if(i != 0 && tmp_path2.size() > 0 && Geom::are_near(tmp_path2[0].finalPoint(),appendPath.finalPoint())){ + Geom::Path tmpAppend = appendPath.reverse(); + tmpAppend.setInitial(tmp_path2[0].finalPoint()); + tmp_path2[0].append(tmpAppend); + } else if(i != 0 && tmp_path2.size() > 0 && Geom::are_near(tmp_path2[0].initialPoint(),appendPath.initialPoint())){ + Geom::Path tmpAppend = appendPath; + tmp_path2[0] = tmp_path2[0].reverse(); + tmpAppend.setInitial(tmp_path2[0].finalPoint()); + tmp_path2[0].append(tmpAppend); + tmp_path2[0] = tmp_path2[0].reverse(); } else { tmp_path2.push_back(appendPath); } @@ -246,6 +270,9 @@ LPECopyRotate::setKaleidoscope(std::vector<Geom::Path> &path_on, Geom::Path divi tmp_path2[tmp_path2.size()-1].close(); } } + if(tmp_path2.size() > 0 && Geom::are_near(tmp_path2[0].finalPoint(),tmp_path2[0].initialPoint())){ + tmp_path2[0].close(); + } tmp_path.insert(tmp_path.end(), tmp_path2.begin(), tmp_path2.end()); tmp_path2.clear(); } |
