<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Thanks for the replies. I ended up reading the data file twice, stroking
 and filling the polygons first pass, and applying the labels the second
 pass, as shown in a simplified form by Arjen. It was somewhat 
inconvenient, but not a big deal. I already knew that was a possible 
solution. <br><br>It's a big data file, which I would rather not read twice. But
 it's still fast enough. It would even be possible to split the 
data file into two data files: one with the points, the other with the 
labels. But I'll only do that if ever a speed problem. <br>
<br>
The reason I posted was to understand cairo better, to clarify if cairo has the luxury of 
automatically keeping the text in the foreground. I appreciate Benjamin 
explaining why this is not the case. I can live without the 
luxury. <br>
<br>
Daniel</div><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font size="2" face="Tahoma"><b><span style="font-weight: bold;"></span></b></font>If you code is like this:<div><br></div><div><font class="Apple-style-span" face="'courier new', monospace">for (x = something with A and B)</font></div><div><font class="Apple-style-span" face="'courier new', monospace">{</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">&nbsp;&nbsp; &nbsp;my_draw_polygon(x);</font></div><div><font class="Apple-style-span" face="'courier new', monospace">&nbsp;&nbsp; &nbsp;my_draw_label(x);</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">}</font></div><div><br></div><div>Change it to:</div><div><br><div><font class="Apple-style-span" face="'courier new', monospace">for (x = </font><i><font class="Apple-style-span" face="'courier new', monospace">something with A and B</font></i><font class="Apple-style-span" face="'courier new', monospace">)</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">{</font></div><div><font class="Apple-style-span" face="'courier new', monospace">&nbsp;&nbsp; &nbsp;my_draw_polygon(x);</font></div><div><font class="Apple-style-span" face="'courier new', monospace">}</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">for (x = </font><i><font class="Apple-style-span" face="'courier new', monospace">something with A and B</font></i><font class="Apple-style-span" face="'courier new', monospace">)</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">{</font></div><div><font class="Apple-style-span" face="'courier new', monospace">&nbsp;&nbsp; &nbsp;my_draw_label(x);</font></div><div><font class="Apple-style-span" face="'courier new', monospace">}</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div>Groeten, Arjen</div><div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi,<br>
<br>
I make the path for polygon A, stroke it, fill with red, and apply "Long Label<br>
A" &nbsp;using pango. Next, I stroke polygon B, fill with blue, and apply "Label B".<br>
Everything is &nbsp;great, expect the polygon B fill overlaps and hides part of "Long<br>
Label A" text.<br>
<br>
<br>
-----------------------<br>
| Long Label A &nbsp; &nbsp; &nbsp; &nbsp;|<br>
| &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; Label B |<br>
-----------------------<br>
 &nbsp; &nbsp; A &nbsp; &nbsp; &nbsp; &nbsp; B<br>
<br>
How do I always keep the text in the z-order foreground? I already know about<br>
decreasing &nbsp;font size and making the labels appear on multiple lines to prevent<br>
overlaps. I'm looking for something to use when overlap cannot be prevented. I<br>
tried using alpha channel, so the label can show through, but &nbsp;I lose too much<br>
intensity for both text and fill colors.<br>
<br>
<br>
In other words, is there a way to tell cairo / pango "I want this text to always<br>
be &nbsp;foreground", or "I want this fill to always be background".<br>
<br>
If not, is it possible (or advisable) to write the polygons to one context (I<br>
guess), write the text to another context (or whatever), and then overlay the<br>
text over the polygons? If this is feasible, could someone sketch out the key<br>
functions to use.<br>
<br>
Perhaps I will end up doing all the polygons first, and then doing all the<br>
labels. It's just &nbsp;inconvenient, since I get all the data for one polygon, its<br>
label and the label &nbsp;positioning, then get all the data for the next polygon,<br>
etc.<br>
<br>
<br>
I'm not saying the default behavior (fill overlays previous text) is wrong. I'm<br>
just hoping I can override it. I looked &nbsp;through the cairo and pango docs and<br>
past postings and couldn't find the answer.<br>
<br>
<br>
Thanks,<br>
Daniel<br>
<font color="#888888">--<br>
cairo mailing list<br>
<a rel="nofollow" ymailto="mailto:cairo@cairographics.org" target="_blank" href="mailto:cairo@cairographics.org">cairo@cairographics.org</a><br><span>
<a target="_blank" href="http://lists.cairographics.org/mailman/listinfo/cairo">http://lists.cairographics.org/mailman/listinfo/cairo</a></span><br><br>
</font></blockquote></div></div>
<meta http-equiv="x-dns-prefetch-control" content="on"></div></div></blockquote>
</div></body></html>