gnash-commit
[Top][All Lists]
Advanced

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

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


From: zou lunkai
Subject: Re: [Gnash-commit] gnash ChangeLog backend/render_handler_agg_style.h
Date: Wed, 28 May 2008 21:31:43 +0800

> +    m_need_premultiply(false)

Shouldn't the span color always need to be premultiplied?

> +      if (trans_color.m_a < 255)
> +        m_need_premultiply=true;

This is an just optimization to avoid some unnecessary
'premultiplication' when alpha is 255, right?

BTW, there is also an 'm_force_premultiply' in agg_style_bitmap, which
seems to be always 'false'. Do we really need that, too?

--zou



On 5/28/08, Udo Giacomozzi <address@hidden> wrote:> 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
>
>
>
>
> _______________________________________________
> Gnash-commit mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/gnash-commit
>




reply via email to

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