[PATCH] gl: Properly prepare the source when compositing glyphs with a mask.

Martin Robinson <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Date: Fri, 11 Nov 2011 14:25:56 -0800
Subject: [PATCH] gl: Properly prepare the source when compositing glyphs with
 a mask.

After the architecture rewrite, glyph compositing via a mask was
disabled. This change reinstates that.
---
 src/cairo-gl-glyphs.c |   22 +++++++++++++---------
 1 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/cairo-gl-glyphs.c b/src/cairo-gl-glyphs.c
index 2324922..484f028 100644
--- a/src/cairo-gl-glyphs.c
+++ b/src/cairo-gl-glyphs.c
@@ -349,10 +349,10 @@ render_glyphs (cairo_gl_surface_t *dst,
 }
 
 static cairo_int_status_t
-render_glyphs_via_mask (cairo_gl_surface_t	*dst,
-			   cairo_operator_t	 op,
-			   const cairo_surface_t	*source,
-			   cairo_composite_glyphs_info_t *info)
+render_glyphs_via_mask (cairo_gl_surface_t *dst,
+			cairo_operator_t  op,
+			cairo_surface_t *source,
+			cairo_composite_glyphs_info_t *info)
 {
     cairo_surface_t *mask;
     cairo_status_t status;
@@ -377,19 +377,23 @@ render_glyphs_via_mask (cairo_gl_surface_t	*dst,
 			    &_cairo_pattern_white.base, NULL,
 			    info, &has_component_alpha);
     if (likely (status == CAIRO_STATUS_SUCCESS)) {
-	/* XXX composite */
-#if 0
 	cairo_surface_pattern_t mask_pattern;
-        mask->is_clear = FALSE;
+	cairo_surface_pattern_t source_pattern;
+
+	mask->is_clear = FALSE;
 	_cairo_pattern_init_for_surface (&mask_pattern, mask);
 	mask_pattern.base.has_component_alpha = has_component_alpha;
+
 	cairo_matrix_init_translate (&mask_pattern.base.matrix,
 		                     -info->extents.x, -info->extents.y);
+
+	_cairo_pattern_init_for_surface (&source_pattern, source);
 	status = _cairo_surface_mask (&dst->base, op,
-		                      source, &mask_pattern.base,
+		                      &source_pattern.base, &mask_pattern.base,
 				      NULL);
+
 	_cairo_pattern_fini (&mask_pattern.base);
-#endif
+	_cairo_pattern_fini (&source_pattern.base);
     } else {
 	for (i = 0; i < info->num_glyphs; i++) {
 	    info->glyphs[i].x += info->extents.x;
-- 
1.7.5.4

--
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.