Author: Carlos Lopez <genet...@gmail.com>
Date:   Tue Jan  3 19:44:07 2012 +0100

Add function to calculate the magnitude of a gradient

---

 synfig-core/src/synfig/gradient.cpp |   13 +++++++++++++
 synfig-core/src/synfig/gradient.h   |    2 ++
 2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/synfig-core/src/synfig/gradient.cpp 
b/synfig-core/src/synfig/gradient.cpp
index 00f67b0..8e9ab47 100644
--- a/synfig-core/src/synfig/gradient.cpp
+++ b/synfig-core/src/synfig/gradient.cpp
@@ -290,6 +290,19 @@ synfig::Gradient::operator/=(const float    &rhs)
        return *this;
 }
 
+Real
+synfig::Gradient::mag()const
+{
+       Real ret(0);
+       for (const_iterator iter = cpoints.begin(); iter!=cpoints.end(); iter++)
+               {
+                       Real cm=(*iter).color.get_y();
+                       ret+=cm*cm;
+               }
+       ret=sqrt(ret);
+       return ret;
+}
+
 Color
 synfig::Gradient::operator()(const Real &x,float supersample)const
 {
diff --git a/synfig-core/src/synfig/gradient.h 
b/synfig-core/src/synfig/gradient.h
index fdba3df..74bec5a 100644
--- a/synfig-core/src/synfig/gradient.h
+++ b/synfig-core/src/synfig/gradient.h
@@ -114,6 +114,8 @@ public:
 
        Color operator()(const Real &x, float supersample=0)const;
 
+       Real mag()const;
+
        //! Returns the iterator of the CPoint closest to \a x
        iterator proximity(const Real &x);
 


------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to