summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-01-25 00:17:20 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-01-25 00:17:20 +0000
commita1459b1d322111fe54879a23bcae277cb797494e (patch)
treece8e6602e6eaf9c8c59d55d0f9877155e57bc69f /src
parentKaleidoscope check (diff)
parentTranslations. Reverting Slovak translation file due to build errors (see Bug ... (diff)
downloadinkscape-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.cpp35
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();
}