<div dir="ltr"><br><br><div class="gmail_quote">On Thu, Jul 24, 2008 at 1:01 PM, Mohan Parthasarathy <<a href="mailto:suruti94@gmail.com">suruti94@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"> <div class="gmail_quote"><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><br>
>         for a single composite operation to the destination picture in<br>
>         order to<br>
>         actually render the glyphs. Without a mask format, each glyph<br>
>         is used as<br>
>         a mask for a composite operation to the destination picture<br>
>         directly.<br>
><br>
>         The result should be visually identical unless the mask format<br>
>         is<br>
>         different from any of the glyphs or the glyphs overlap.<br>
><br>
> Thanks for the explanation. Do we know how this is done in practice ?<br>
> I am trying to understand the sequence of operations<br>
><br>
> 1) The client adds glyphs to the server<br>
> 2) The client calls CompositeGlyph with a non-null format<br>
> 3) The client calls CompositeGlyph with a null-format and a<br>
> destination picture<br>
><br>
> Is (2) and (3) done separately or just (3) is done ?<br>
<br>
</div>I'm not sure I understand. (2) needs a destination as well, so (2) and<br>
(3) should be essentially identical, with the caveats I mentioned above.<br>
<div></div></blockquote></div><div><br>Ah!, when non-null maskFormat is passed, the first composite operation the Mask<br>is the destination. But then the second composite operation needs a destination<br>also. I am understanding slightly better after reading your mail again and the code<br>

again :-)<br><br>What i am trying to understand is what exactly happens<br>when i need to display characters on my xterm ? I can see that glyphs are<br>added to the Xserver. Later a Composite operation is called by the client.<br>

As the maskFormat argument can be null, i am wondering what cases it<br>is null and what cases it is not null. Initially, i thought you always need to<br>composite Glyph with Mask and then composite to the destination which<br>

means maskFormat will always be non-null. Obviously, this is not the case.<br>So, to render characters on my xterm, i can just send src, dst and glyph with a<br>null mask. Is this sufficient ? What cases would require me to pass a non-null<br>

mask ? What am i missing ?</div></div></div></blockquote><div> </div><div>Sorry to reply to my own mail.. Looking at Xft, i figured that when the font files<br>are loaded, font->format is initialized using XRenderFindStandardFormat. This<br>
is what is used for mask later XRenderCompositeString. It is possible that<br>the format can be null if is Older font. This can explain when the mask can be<br>null and when it is not null.<br><br>Does that make sense ?<br>
<br>thanks<br>mohan<br><br><br> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div><br>thanks<br>
<font color="#888888">mohan<br></font></div><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><br>
<br>
>         > I searched around in Xft and server side to see where this<br>
>         code is<br>
>         > implemented. I can see that in libXrender, maskFormat<br>
>         getting set to<br>
>         > None or the id. So, it has to be on the server side Perhaps,<br>
>         i am<br>
>         > missing something very obvious.. Can someone point me to<br>
>         this code ?<br>
><br>
><br>
>         miGlyphs() in render/glyph.c or exaGlyphs() in<br>
>         exa/exa_glyphs.c .<br>
><br>
> I sort of figured that out working backwards from exaCompositeRects -><br>
> exaGlyphstoMask...<br>
> But could not find out when the mask is set to null or not-null.<br>
<br>
</div>I think it's simply NULL if the client passes None as maskFormat<br>
parameter to XRenderCompositeString/Text*() and non-NULL otherwise.<br>
<font color="#888888"><br>
<br>
--<br>
</font><div><div></div><div>Earthling Michel Dänzer           |          <a href="http://tungstengraphics.com" target="_blank">http://tungstengraphics.com</a><br>
Libre software enthusiast         |          Debian, X and DRI developer<br>
<br>
</div></div></blockquote></div></div><br></div>
</blockquote></div><br></div>