Pango + Cairo + Xcb
- From: "Matthew Allen" <fret memecode com>
- To: <gtk-i18n-list gnome org>
- Subject: Pango + Cairo + Xcb
- Date: Thu, 11 Dec 2008 8:53:40 +1100
Hi,
I'm writing a backend for a widget set using Pango + Cairo + Xcb. And I've got some text showing up on the screen but I think I still have some misconceptions about how things should be done.
First I'm starting with this in my singleton font engine class:
Map = pango_cairo_font_map_get_default();
Ctx = pange_cairo_font_map_create_context((PangoCairoFontMap*)Map);
Then to load a font I do:
Desc = pango_font_description_new();
pango_font_description_set_family(...);
pango_font_description_set_size(...);
Hnd = pango_font_map_load_font(Map, Ctx, Desc);
pango_font_description_free(Desc);
That 'Hnd' is stored in a font object. Thats then passed to a "DisplayString" class which maps to a pango layout, which draws a peice of text on the screen. So in there I do:
Layout = pango_layout_new(Ctx);
pango_layout_set_text(Layout, ...);
pango_layout_get_size(Layout, ...);
But it also has a Draw method to put that layout on screen:
Surface = cairo_xcb_surface_create(...);
Cr = cairo_create(Surface);
cairo_set_source_rgb(Cr, ...);
pango_cairo_show_layout(Cr, Layout);
cairo_destroy(Cr);
cairo_surface_destroy(Surface);
However I suspect the load font call should be somewhere else, because when I load several fonts I can't draw with the first one anymore... the last one is cached. So should I be doing the load font just before drawing? Is it an expensive call time wise?
Are these calls in the right order?
Maybe I have to select the font into the context before drawing with it?
Thanks for any comments or direction you can provide.
--
Matthew Allen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]