gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog backend/render_handler_agg_style.h


From: Udo Giacomozzi
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler_agg_style.h
Date: Wed, 28 May 2008 11:17:52 +0000

CVSROOT:        /cvsroot/gnash
Module name:    gnash
Changes by:     Udo Giacomozzi <udog>   08/05/28 11:17:52

Modified files:
        .              : ChangeLog 
        backend        : render_handler_agg_style.h 

Log message:
        backend/render_handler_agg_style.h: fix a bug with alpha-gradients 
(fixes bug #23365)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6739&r2=1.6740
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg_style.h?cvsroot=gnash&r1=1.30&r2=1.31

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/gnash/gnash/ChangeLog,v
retrieving revision 1.6739
retrieving revision 1.6740
diff -u -b -r1.6739 -r1.6740
--- ChangeLog   28 May 2008 10:27:44 -0000      1.6739
+++ ChangeLog   28 May 2008 11:17:49 -0000      1.6740
@@ -1,3 +1,8 @@
+2008-05-28 Udo Giacomozzi <address@hidden>
+
+       * backend/render_handler_agg_style.h: fix a bug with alpha-gradients
+         (fixes bug #23365)    
+
 2008-05-28 Benjamin Wolsey <address@hidden>
 
        * plugin/win32/plugin.cpp: fix build.

Index: backend/render_handler_agg_style.h
===================================================================
RCS file: /cvsroot/gnash/gnash/backend/render_handler_agg_style.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- backend/render_handler_agg_style.h  19 Feb 2008 19:20:47 -0000      1.30
+++ backend/render_handler_agg_style.h  28 May 2008 11:17:51 -0000      1.31
@@ -207,7 +207,8 @@
     m_span_interpolator(m_tr),
     m_gradient_func(),
     m_gradient_adaptor(m_gradient_func),
-    m_sg(m_span_interpolator, m_gradient_adaptor, m_gradient_lut, 0, 
norm_size) 
+    m_sg(m_span_interpolator, m_gradient_adaptor, m_gradient_lut, 0, 
norm_size),
+    m_need_premultiply(false)
   {
   
     m_is_solid = false;
@@ -231,7 +232,10 @@
       trans_color.m_a = trans_color.m_a>127 ? 127 : trans_color.m_a;
 #endif    
       
-      m_gradient_lut.add_color(gr.m_ratio/255.0, 
agg::rgba8_pre(trans_color.m_r, 
+      if (trans_color.m_a < 255) 
+        m_need_premultiply=true;    
+      
+      m_gradient_lut.add_color(gr.m_ratio/255.0, agg::rgba8(trans_color.m_r, 
         trans_color.m_g, trans_color.m_b, trans_color.m_a));
         
     } // for
@@ -249,6 +253,10 @@
   void generate_span(color_type* span, int x, int y, unsigned len) 
   {
     m_sg.generate(span, x, y, len);
+    
+    if (m_need_premultiply)
+      while (len--)
+        (span++)->premultiply();
   }
   
   // Provide access to our gradient adaptor to allow re-initialization of
@@ -285,6 +293,9 @@
   // Span generator
   sg_type m_sg;  
 
+  // premultiplication necessary?
+  bool m_need_premultiply;
+  
 }; // agg_style_gradient
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]