Author: Carlos Lopez <genet...@gmail.com> 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 Synfig-devl@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/synfig-devl