[Top][All Lists]
[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
>