X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_gradient%2Fcurvegradient.cpp;fp=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_gradient%2Fcurvegradient.cpp;h=2dde6972fd9d82ea632344f5747ae079f4480e1e;hb=bbd3d78ea6f405a5fb6808ba8d018568315572d6;hp=7d48f05f55a6ee4d9fd698020111ae56db81b363;hpb=2eaa4571bf99d6426b7a6f88add4119d0f8ce71b;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_gradient/curvegradient.cpp b/synfig-core/trunk/src/modules/mod_gradient/curvegradient.cpp index 7d48f05..2dde697 100644 --- a/synfig-core/trunk/src/modules/mod_gradient/curvegradient.cpp +++ b/synfig-core/trunk/src/modules/mod_gradient/curvegradient.cpp @@ -285,18 +285,18 @@ CurveGradient::color_func(const Point &point_, int quality, float supersample)co else if(quality<=2)search_iterations=10; else if(quality<=4)search_iterations=8; */ - if(!perpendicular) + if(perpendicular) + { + if(quality>7) + search_iterations=4; + } + else { if(quality<=6)search_iterations=7; else if(quality<=7)search_iterations=6; else if(quality<=8)search_iterations=5; else search_iterations=4; } - else - { - if(quality>7) - search_iterations=4; - } // Figure out the closest point on the curve if (fast) @@ -304,8 +304,8 @@ CurveGradient::color_func(const Point &point_, int quality, float supersample)co // Calculate our values - p1=curve(t); - tangent=deriv(t).norm(); + p1=curve(t); // the closest point on the curve + tangent=deriv(t).norm(); // the unit tangent at that point if(perpendicular) { @@ -314,22 +314,11 @@ CurveGradient::color_func(const Point &point_, int quality, float supersample)co tangent=-tangent.perp(); } else - { + // the width of the bline at the closest point on the curve thickness=(next->get_width()-iter->get_width())*t+iter->get_width(); - } - //} } - if(!perpendicular) - { - diff=tangent.perp()*thickness*width; - p1-=diff*0.5; - const Real mag(diff.inv_mag()); - supersample=supersample*mag; - diff*=mag*mag; - dist=((point_-offset)*diff-p1*diff); - } - else + if(perpendicular) { if(quality>7) { @@ -350,6 +339,15 @@ CurveGradient::color_func(const Point &point_, int quality, float supersample)co dist=((point_-offset)*diff-p1*diff); } } + else + { + diff=tangent.perp()*thickness*width; + p1-=diff*0.5; + const Real mag(diff.inv_mag()); + supersample=supersample*mag; + diff*=mag*mag; + dist=((point_-offset)*diff-p1*diff); + } if(loop) dist-=floor(dist);