diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2011-02-11 23:21:04 +0100 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2011-02-12 18:26:15 +0100 |
commit | b7875c361f6a4f07897960b3cb30f2ab28cf3e67 (patch) | |
tree | 09bda59673b02cb1f8ae3b344f8cf6eab8556738 /liblogdiag | |
parent | 299ce010bd8f2f5a65e4fa5a033a122b318b8c83 (diff) | |
download | logdiag-b7875c361f6a4f07897960b3cb30f2ab28cf3e67.tar.gz logdiag-b7875c361f6a4f07897960b3cb30f2ab28cf3e67.tar.xz logdiag-b7875c361f6a4f07897960b3cb30f2ab28cf3e67.zip |
Update the symbol library, add trivial text API.
Diffstat (limited to 'liblogdiag')
-rw-r--r-- | liblogdiag/ld-lua.c | 33 |
1 files changed, 33 insertions, 0 deletions
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) + |