From b7875c361f6a4f07897960b3cb30f2ab28cf3e67 Mon Sep 17 00:00:00 2001 From: Přemysl Janouch Date: Fri, 11 Feb 2011 23:21:04 +0100 Subject: Update the symbol library, add trivial text API. --- liblogdiag/ld-lua.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'liblogdiag') diff --git a/liblogdiag/ld-lua.c b/liblogdiag/ld-lua.c index 522ecec..d16f327 100644 --- a/liblogdiag/ld-lua.c +++ b/liblogdiag/ld-lua.c @@ -111,6 +111,7 @@ static int ld_lua_cairo_fill (lua_State *L); static int ld_lua_cairo_fill_preserve (lua_State *L); static int ld_lua_cairo_clip (lua_State *L); static int ld_lua_cairo_clip_preserve (lua_State *L); +static int ld_lua_cairo_show_text (lua_State *L); static luaL_Reg ld_lua_logdiag_lib[] = @@ -142,6 +143,7 @@ static luaL_Reg ld_lua_cairo_table[] = {"fill_preserve", ld_lua_cairo_fill_preserve}, {"clip", ld_lua_cairo_clip}, {"clip_preserve", ld_lua_cairo_clip_preserve}, + {"show_text", ld_lua_cairo_show_text}, {NULL, NULL} }; @@ -807,3 +809,34 @@ LD_LUA_CAIRO_BEGIN (arc_negative) cairo_arc_negative (data->cr, xc, yc, radius, angle1, angle2); LD_LUA_CAIRO_END (0) +LD_LUA_CAIRO_BEGIN (show_text) + const char *text; + GtkStyle *style; + PangoLayout *layout; + int width, height; + double x, y; + + data = lua_touserdata (L, lua_upvalueindex (1)); + text = luaL_checkstring (L, 1); + + layout = pango_cairo_create_layout (data->cr); + pango_layout_set_text (layout, text, -1); + + style = gtk_style_new (); + pango_font_description_set_size (style->font_desc, 1 * PANGO_SCALE); + pango_layout_set_font_description (layout, style->font_desc); + g_object_unref (style); + + pango_layout_get_size (layout, &width, &height); + cairo_get_current_point (data->cr, &x, &y); + x -= (double) width / PANGO_SCALE / 2; + y -= (double) height / PANGO_SCALE / 2; + + cairo_save (data->cr); + cairo_move_to (data->cr, x, y); + pango_cairo_show_layout (data->cr, layout); + cairo_restore (data->cr); + + g_object_unref (layout); +LD_LUA_CAIRO_END (0) + -- cgit v1.2.3-70-g09d2