Author: Carlos Lopez <[email protected]>
Date: Wed Jan 4 18:29:21 2012 +0100
Suit a better way to calculate gradient magnitude
---
synfig-core/src/synfig/gradient.cpp | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/synfig-core/src/synfig/gradient.cpp
b/synfig-core/src/synfig/gradient.cpp
index 8e9ab47..340a59f 100644
--- a/synfig-core/src/synfig/gradient.cpp
+++ b/synfig-core/src/synfig/gradient.cpp
@@ -293,12 +293,21 @@ synfig::Gradient::operator/=(const float &rhs)
Real
synfig::Gradient::mag()const
{
- Real ret(0);
- for (const_iterator iter = cpoints.begin(); iter!=cpoints.end(); iter++)
+ Real ret(0), cm, prev_pos;
+ const_iterator iter, next;
+ if(!cpoints.size())
+ return 0.0;
+ next=cpoints.begin();
+ iter=next++;
+ prev_pos=0.0;
+ for (; next!=cpoints.end(); iter++, next++)
{
- Real cm=(*iter).color.get_y();
+ cm=iter->color.get_y()*((next->pos-iter->pos)/2 -
prev_pos) ;
ret+=cm*cm;
+ prev_pos = (next->pos-iter->pos)/2;
}
+ cm=next->color.get_y()*(1.0 - prev_pos);
+ ret+=cm*cm;
ret=sqrt(ret);
return ret;
}
------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual
desktops for less than the cost of PCs and save 60% on VDI infrastructure
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl