Author: Carlos Lopez <[email protected]>
Date: Wed Aug 15 17:53:34 2012 +0200
Linear Gradient: fix loop and zigzag options in Cairo render.
---
.../src/modules/mod_gradient/lineargradient.cpp | 31 +++++++-------------
1 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/synfig-core/src/modules/mod_gradient/lineargradient.cpp
b/synfig-core/src/modules/mod_gradient/lineargradient.cpp
index 19cd65c..b4afb4a 100644
--- a/synfig-core/src/modules/mod_gradient/lineargradient.cpp
+++ b/synfig-core/src/modules/mod_gradient/lineargradient.cpp
@@ -325,6 +325,8 @@ bool
LinearGradient::compile_gradient(cairo_pattern_t* pattern, Gradient
mygradient)const
{
bool cpoints_all_opaque=true;
+ float a,r,g,b;
+ Gradient::CPoint cp;
Gradient::const_iterator iter;
mygradient.sort();
if(zigzag)
@@ -332,26 +334,21 @@ LinearGradient::compile_gradient(cairo_pattern_t*
pattern, Gradient mygradient)c
Gradient zgradient;
for(iter=mygradient.begin();iter!=mygradient.end(); iter++)
{
- Gradient::CPoint cp=*iter;
+ cp=*iter;
cp.pos=cp.pos/2;
zgradient.push_back(cp);
}
for(iter=mygradient.begin();iter!=mygradient.end(); iter++)
{
- Gradient::CPoint cp=*iter;
+ cp=*iter;
cp.pos=1.0-cp.pos/2;
zgradient.push_back(cp);
}
mygradient=zgradient;
}
+ mygradient.sort();
if(loop)
{
- Gradient::CPoint cp=*(--mygradient.end());
- float a=cp.color.get_a();
- float r=cp.color.get_r();
- float g=cp.color.get_g();
- float b=cp.color.get_b();
- cairo_pattern_add_color_stop_rgba(pattern, 0.0, r, g, b, a);
cp=*mygradient.begin();
a=cp.color.get_a();
r=cp.color.get_r();
@@ -361,23 +358,17 @@ LinearGradient::compile_gradient(cairo_pattern_t*
pattern, Gradient mygradient)c
}
for(iter=mygradient.begin();iter!=mygradient.end(); iter++)
{
- Gradient::CPoint cp=*iter;
- float a=cp.color.get_a();
- float r=cp.color.get_r();
- float g=cp.color.get_g();
- float b=cp.color.get_b();
+ cp=*iter;
+ a=cp.color.get_a();
+ r=cp.color.get_r();
+ g=cp.color.get_g();
+ b=cp.color.get_b();
cairo_pattern_add_color_stop_rgba(pattern, cp.pos, r, g, b, a);
if(a!=1.0) cpoints_all_opaque=false;
}
if(loop)
{
- Gradient::CPoint cp=*(--mygradient.end());
- float a=cp.color.get_a();
- float r=cp.color.get_r();
- float g=cp.color.get_g();
- float b=cp.color.get_b();
- cairo_pattern_add_color_stop_rgba(pattern, 1.0, r, g, b, a);
- cp=*mygradient.begin();
+ cp=*(--mygradient.end());
a=cp.color.get_a();
r=cp.color.get_r();
g=cp.color.get_g();
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl