[cairo] Using Cairo and Pango to scroll text on video

robertk54 at aol.com robertk54 at aol.com
Fri May 11 05:53:38 PDT 2012





>>>>Another workaround is to prerender the text to a similar surface
>>>>(cairo_surface_create_similar) and paint that intermediate surface to
>>>>the destination surface with the correct offset.
>>>
>>> Would using the latter method prevent me from using semi-transparent text
>>> and / or backgrounds?
>>
>>It would not if you pass CAIRO_CONTENT_COLOR_ALPHA to the function, see
>>http://cairographics.org/manual/cairo-cairo-surface-t.html#cairo-surface-create-similar
>>
>>Prerendering the text is much faster that having to render the text
>>again in every frame. It's only really a reasonable shortcut when the
>>text is only translated and perhaps rotated, but not zoomed though.



>>I would love to pre-render the text but I think my use case makes it a bit more complex.  
>>The video frame is a fixed size ARGB surface which makes sense.  However, the text can 
>>be any size and often much wider than the video image.  I imagine this prevents me from being 
>>able to use 'create similar' since this would be using the video frame's surface, no?  I guess 
>>I could create a new ARGB image surface using the text dimensions?



>I have done this before using cairo and pango, basically a ticker bar on a N width screen with smooth scrolling. My approach was something like this:

>Make a text rendering surface 2 * N + C, C = 16 or such.

>do {
>Render text in the off screen part of the surface (which is now the rightmost half of the surface).
>Composite that surface from X=0 at X=0 to your main surface.
>Composite that surface from X=2 at X=0 to your main surface (assuming your step size = 2 pixels).
>When you reach X = 2N render in the offscreen part of the text render surface (which is now the leftmost half of the surface).
>} while (true);

It looks like you are pre-rendering the text in chunks and updating the chunks as the text scrolls.  Is there a way to render the entire text to a cairo surface whole?  As far as I can see one needs a cairo surface before creating the pango layout.  However, in my case, I do not know the dimensions of the cairo surface needed until after I start working in pango.


Thanks again,
Bob
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20120511/fc83be47/attachment.htm>


More information about the cairo mailing list