Author: Carlos Lopez <genet...@gmail.com>
Date:   Wed Apr 17 07:05:04 2013 +0200

Fix blend method DIVIDE for CairoColor.

---

 synfig-core/src/synfig/color.cpp |   28 ++++++++++++----------------
 1 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/synfig-core/src/synfig/color.cpp b/synfig-core/src/synfig/color.cpp
index 086901e..8e47c98 100644
--- a/synfig-core/src/synfig/color.cpp
+++ b/synfig-core/src/synfig/color.cpp
@@ -672,9 +672,6 @@ blendfunc_DIFFERENCE(CairoColor &a, CairoColor &b, float 
amount)
        return CairoColor(rc, gc, bc, ac);
 }
 
-
-
-
 template <class C>
 static C
 blendfunc_MULTIPLY(C &a,C &b,float amount)
@@ -748,28 +745,27 @@ blendfunc_DIVIDE(CairoColor &a, CairoColor &b, float 
amount)
        bb=b.get_b();
        ab=b.get_a();
        
-       float alpha=amount*aa/255.0;
-       float ahpla=1.0-alpha;
+       const float alpha=amount*aa/255.0;
+       const float ahpla=1.0-alpha;
        
-       if(ab==0)
-               return CairoColor();
+       if(alpha<COLOR_EPSILON)
+               return b;
        
        ac=ab;
-       
        if(ra==0)
-               rc=255;
+               rc=rb;
        else
-               rc=(rb*alpha*aa)/ra + ahpla*rb;
-
+               rc=rb*(alpha*255)/(ra) + ahpla*rb;
+               
        if(ga==0)
-               gc=255;
+               gc=gb;
        else
-               gc=(gb*alpha*aa)/ga + ahpla*gb;
-
+               gc=gb*(alpha*255)/(ga) + ahpla*gb;
+               
        if(ba==0)
-               bc=255;
+               bc=bb;
        else
-               bc=(bb*alpha*aa)/ba + ahpla*bb;
+               bc=bb*(alpha*255)/(ba) + ahpla*bb;
                
        return CairoColor(rc, gc, bc, ac);
 }


------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to