[cairo] Problem with CAIRO_EXTEND_REPEAT

Travis Griggs tgriggs at cincom.com
Tue Jul 24 12:12:53 PDT 2007


On Jul 23, 2007, at 4:57, Sikamikaniboots wrote:

> Hi
> I'm trying to use gtk printing in my app. It uses cairo to draw.
> I'd like to fill paths with different hatches. I'm using the code  
> below to create a little part of the hatch and to repeat it to fill  
> the path.
> The problem is that when I do it, there's a little space (a thin  
> and transparent line) between each repeat. For example, if I want  
> to repeat a completely black square (see the code below), it gives  
> me this result : http://img96.imageshack.us/img96/8747/ 
> cairopblmcw6.png
> I expected it to draw a completely black area. If I draw a line or  
> anything else instead of a black square, I get the same type of  
> result.
> This result is displayed in the preview window of gtk printing (in  
> fact in evince).
> Is there any way to suppress this line ?
> Thanks.
>
> The code :
>
> cairo_t * cr;
> cairo_surface_t *surface;
> surface = cairo_surface_create_similar(cairo_get_target 
> (m_cairo),CAIRO_CONTENT_COLOR_ALPHA,5,5);
> cr = cairo_create(surface);
> cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE);
> cairo_set_line_width(cr, 1);
> cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
> cairo_set_source_rgba(cr, redPS, greenPS, bluePS, alphaPS); //these  
> values give black color
> cairo_paint(cr);
> cairo_stroke (cr);
> cairo_destroy(cr);
> cairo_pattern_t * pattern = cairo_pattern_create_for_surface  
> (surface);
> cairo_surface_destroy(surface);
> cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
> cairo_set_source(m_cairo, pattern);
> //here i create a path in another cairo context (m_cairo)
> //and i fill it with the pattern:
> cairo_fill( m_cairo );
>

I just replicated this code (I used a simple rectangle for the path),  
using the VW/ST binding for Cairo running on Quartz. It looks fine.  
So that'd point at possible X issues, rather than Cairo issues?

Couple thoughts. You don't need the cairo_stroke, or even the  
linewidth/cap, since you're using paint which fills the whole clip area.

What happens if you turn ANTIALIAS back on? I would guess most/many  
of the Cairo cases leave AA on, so you may be in an area that doesn't  
get used much?

--
Travis Griggs
Objologist
"I choose. Therefore, I Am"


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.cairographics.org/archives/cairo/attachments/20070724/0dcb9269/attachment.html 


More information about the cairo mailing list