poppler/CairoOutputDev.cc | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-)
New commits: commit 1422802f029483ad3e62a3a13e66b2d3990ac58f Author: Carlos Garcia Campos <[email protected]> Date: Tue Apr 6 12:32:12 2010 +0200 [cairo] Use current fill_opacity when drawing soft masked images Fixes GNOME Bug https://bugzilla.gnome.org/show_bug.cgi?id=614915 diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc index c433fdb..cf0b31c 100644 --- a/poppler/CairoOutputDev.cc +++ b/poppler/CairoOutputDev.cc @@ -2140,19 +2140,32 @@ void CairoOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *s cairo_matrix_scale (&maskMatrix, maskWidth, -maskHeight); cairo_pattern_set_matrix (maskPattern, &maskMatrix); - if (!printing) { + if (fill_opacity != 1.0) + cairo_push_group (cairo); + else cairo_save (cairo); - cairo_set_source (cairo, pattern); + + cairo_set_source (cairo, pattern); + if (!printing) { cairo_rectangle (cairo, 0., 0., MIN (width, maskWidth) / (double)width, MIN (height, maskHeight) / (double)height); cairo_clip (cairo); - cairo_mask (cairo, maskPattern); - cairo_restore (cairo); - } else { - cairo_set_source (cairo, pattern); - cairo_mask (cairo, maskPattern); } + cairo_mask (cairo, maskPattern); + + if (fill_opacity != 1.0) { + cairo_pop_group_to_source (cairo); + cairo_save (cairo); + if (!printing) { + cairo_rectangle (cairo, 0., 0., + MIN (width, maskWidth) / (double)width, + MIN (height, maskHeight) / (double)height); + cairo_clip (cairo); + } + cairo_paint_with_alpha (cairo, fill_opacity); + } + cairo_restore (cairo); if (cairo_shape) { cairo_save (cairo_shape); _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
