From 6cc8cddfa878d0436918fcbcf6d38c0c150b9dd3 Mon Sep 17 00:00:00 2001 From: dooglus Date: Thu, 22 Mar 2007 18:46:09 +0000 Subject: [PATCH] Fix 1684240 (as it applies to spiral gradients): Spiral Gradient layers suffer from the same problem as linear gradients. git-svn-id: http://svn.voria.com/code@367 1f10aa63-cdf2-0310-b900-c93c546f37ac --- .../trunk/src/modules/mod_gradient/spiralgradient.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/synfig-core/trunk/src/modules/mod_gradient/spiralgradient.cpp b/synfig-core/trunk/src/modules/mod_gradient/spiralgradient.cpp index c94b6f6..0ff6346 100644 --- a/synfig-core/trunk/src/modules/mod_gradient/spiralgradient.cpp +++ b/synfig-core/trunk/src/modules/mod_gradient/spiralgradient.cpp @@ -151,14 +151,18 @@ SpiralGradient::color_func(const Point &pos, float supersample)const dist-=floor(dist); if(dist+supersample*0.5>1.0) { - Color pool(gradient(dist,supersample*0.5).premult_alpha()*(1.0-(dist-supersample*0.5))); - pool+=gradient((dist+supersample*0.5)-1.0,supersample*0.5).premult_alpha()*((dist+supersample*0.5)-1.0); + float left(supersample*0.5-(dist-1.0)); + float right(supersample*0.5+(dist-1.0)); + Color pool(gradient(1.0-(left*0.5),left).premult_alpha()*left/supersample); + pool+=gradient(right*0.5,right).premult_alpha()*right/supersample; return pool.demult_alpha(); } if(dist-supersample*0.5<0.0) { - Color pool(gradient(dist,supersample*0.5).premult_alpha()*(dist+supersample*0.5)); - pool+=gradient(1.0-(dist-supersample*0.5),supersample*0.5).premult_alpha()*(-(dist-supersample*0.5)); + float left(supersample*0.5-dist); + float right(supersample*0.5+dist); + Color pool(gradient(right*0.5,right).premult_alpha()*right/supersample); + pool+=gradient(1.0-left*0.5,left).premult_alpha()*left/supersample; return pool.demult_alpha(); } -- 2.7.4