Tidying.
[synfig.git] / synfig-core / trunk / src / synfig / color.cpp
index 576b212..1fa133c 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -78,9 +79,16 @@ Color::real2hex(ColorReal c)
 }
 
 void
-Color::set_hex(String& hex)
+Color::set_hex(String& str)
 {
        value_type r, g, b;
+       String hex;
+
+       // use just the hex characters
+       for (String::const_iterator iter = str.begin(); iter != str.end(); iter++)
+               if (isxdigit(*iter))
+                       hex.push_back(*iter);
+
        try
        {
                if (hex.size() == 1)
@@ -384,7 +392,7 @@ blendfunc_DIVIDE(Color &a,Color &b,float amount)
        // We add COLOR_EPSILON in order to avoid a divide-by-zero condition.
        // This causes DIVIDE to bias toward positive values, but the effect is
        // really negligible. There is a reason why we use COLOR_EPSILON--we
-       // want the change to be imperceptable.
+       // want the change to be imperceptible.
 
        b.set_r(((b.get_r()/(a.get_r()+COLOR_EPSILON))-b.get_r())*(amount)+b.get_r());
        b.set_g(((b.get_g()/(a.get_g()+COLOR_EPSILON))-b.get_g())*(amount)+b.get_g());
@@ -428,7 +436,7 @@ blendfunc_LUMINANCE(Color &a,Color &b,float amount)
 static Color
 blendfunc_BEHIND(Color &a,Color &b,float amount)
 {
-       if(a.get_a()==0)a.set_a(COLOR_EPSILON);         //!< \hack
+       if(a.get_a()==0)a.set_a(COLOR_EPSILON);         //!< \todo this is a hack
        a.set_a(a.get_a()*amount);
        return blendfunc_COMPOSITE(b,a,1.0);
 }