[cairo] mask repeat

Bertram Felgenhauer bertram.felgenhauer at googlemail.com
Fri Feb 29 03:39:55 PST 2008


Antoine Azar wrote:
> Hey guys,
> 
> I'm testing extend_pad set for a mask, but trying first to hit the 
> case where the mask is repeating. I wrote a code sample that copies a 
> source surface onto a dest through a mask, but I can't seem to get 
> the mask to repeat. How should I do that? Setting the repeat for a 
> source is easy with cairo_pattern_set_extend (cairo_get_source (cr), 
> CAIRO_EXTEND_REPEAT);, but I can't find a cairo_get_mask() or 
> equivalent. Is it possible at all in Cairo?

How about this Python example?

   import cairo

   # prepare mask as pattern
   tmp = cairo.ImageSurface(cairo.FORMAT_A8, 16, 16)
   cr2 = cairo.Context(tmp)
   cr2.set_source_rgba(0, 0, 0, 0.5)
   cr2.rectangle(2, 2, 9, 9)
   cr2.fill()
   cr2.rectangle(5, 5, 9, 9)
   cr2.fill()

   pat = cairo.SurfacePattern(tmp)
   pat.set_extend(cairo.EXTEND_REPEAT)

   # paint using prepared mask
   dst = cairo.ImageSurface(cairo.FORMAT_RGB24, 32, 32)
   cr = cairo.Context(dst)
   cr.set_source_rgb(1, 1, 1)
   cr.mask(pat)

   dst.write_to_png('repeat-mask.png')

HTH,

Bertram


More information about the cairo mailing list