summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJF Barraud <jf.barraud@gmail.com>2008-09-17 22:38:48 +0000
committerjfbarraud <jfbarraud@users.sourceforge.net>2008-09-17 22:38:48 +0000
commite132eee26eb4f3327424d8aa388ad7fa10217063 (patch)
tree2c099e1a44cfc06c313266ce54dacbdd1ec160e7 /src
parentFix minor breakage in grid preferences caused by pref refactoring. (diff)
downloadinkscape-e132eee26eb4f3327424d8aa388ad7fa10217063.tar.gz
inkscape-e132eee26eb4f3327424d8aa388ad7fa10217063.zip
lpe-vonkoch: added checkbox to restrict to (orientation preserving or not) similarity transforms.
(bzr r6832)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-vonkoch.cpp7
-rw-r--r--src/live_effects/lpe-vonkoch.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/live_effects/lpe-vonkoch.cpp b/src/live_effects/lpe-vonkoch.cpp
index bc86e4daa..5c77801c8 100644
--- a/src/live_effects/lpe-vonkoch.cpp
+++ b/src/live_effects/lpe-vonkoch.cpp
@@ -50,12 +50,14 @@ LPEVonKoch::LPEVonKoch(LivePathEffectObject *lpeobject) :
generator(_("Generating path"), _("Path whos segments define the fractal"), "generator", &wr, this, "M0,0 L3,0 M0,1 L1,1 M 2,1 L3,1"),
drawall(_("Draw all generations"), _("If unchecked, draw only the last generation"), "drawall", &wr, this, true),
reftype(_("Reference"), _("Generating path segments define transforms in reference to bbox or last segment"), "reftype", VonKochRefTypeConverter, &wr, this, VKREF_BBOX),
+ similar_only(_("Use uniform scale/rotation only"), _("If off, 2segments component of generating path can be used to define a general rtansform. If on, they only affect the orientation preserving/reversing of the transform."), "similar_only", &wr, this, false),
maxComplexity(_("Max complexity"), _("Disable effect if the output is too complex"), "maxComplexity", &wr, this, 1000)
{
registerParameter( dynamic_cast<Parameter *>(&generator) );
registerParameter( dynamic_cast<Parameter *>(&nbgenerations) );
registerParameter( dynamic_cast<Parameter *>(&drawall) );
registerParameter( dynamic_cast<Parameter *>(&reftype) );
+ registerParameter( dynamic_cast<Parameter *>(&similar_only) );
registerParameter( dynamic_cast<Parameter *>(&maxComplexity) );
nbgenerations.param_make_integer();
@@ -107,6 +109,11 @@ LPEVonKoch::doEffect_path (std::vector<Geom::Path> const & path_in)
Point p = generating_path[i].pointAt(1);
Point u = generating_path[i].pointAt(2)-p;
Point v = p-generating_path[i].pointAt(0);
+ if (similar_only){
+ int sign = (u[X]*v[Y]-u[Y]*v[X]>=0?1:-1);
+ v[X] = -u[Y]*sign;
+ v[Y] = u[X]*sign;
+ }
m = Matrix(u[X], u[Y],v[X], v[Y], p[X], p[Y]);
m = m0*m;
transforms.push_back(m);
diff --git a/src/live_effects/lpe-vonkoch.h b/src/live_effects/lpe-vonkoch.h
index 4909b8730..8b7d0c62e 100644
--- a/src/live_effects/lpe-vonkoch.h
+++ b/src/live_effects/lpe-vonkoch.h
@@ -52,6 +52,7 @@ public:
private:
ScalarParam nbgenerations;
VonKochPathParam generator;
+ BoolParam similar_only;
BoolParam drawall;
EnumParam<VonKochRefType> reftype;
ScalarParam maxComplexity;