Export cairo_{get,set}_line_width to Lua symbols.
This commit is contained in:
parent
25f1186000
commit
c4b8f092b7
38
src/ld-lua.c
38
src/ld-lua.c
@ -2,7 +2,7 @@
|
||||
* ld-lua.c
|
||||
*
|
||||
* This file is a part of logdiag.
|
||||
* Copyright Přemysl Janouch 2010. All rights reserved.
|
||||
* Copyright Přemysl Janouch 2010 - 2011. All rights reserved.
|
||||
*
|
||||
* See the file LICENSE for licensing information.
|
||||
*
|
||||
@ -92,6 +92,9 @@ static gchar *get_translation (lua_State *L, int index);
|
||||
static gboolean read_symbol_area (lua_State *L, int index, LdSymbolArea *area);
|
||||
|
||||
static void push_cairo_object (lua_State *L, cairo_t *cr);
|
||||
static gdouble get_cairo_scale (cairo_t *cr);
|
||||
static int ld_lua_cairo_get_line_width (lua_State *L);
|
||||
static int ld_lua_cairo_set_line_width (lua_State *L);
|
||||
static int ld_lua_cairo_move_to (lua_State *L);
|
||||
static int ld_lua_cairo_line_to (lua_State *L);
|
||||
static int ld_lua_cairo_stroke (lua_State *L);
|
||||
@ -108,6 +111,8 @@ static luaL_Reg ld_lua_logdiag_lib[] =
|
||||
|
||||
static luaL_Reg ld_lua_cairo_table[] =
|
||||
{
|
||||
{"get_line_width", ld_lua_cairo_get_line_width},
|
||||
{"set_line_width", ld_lua_cairo_set_line_width},
|
||||
{"move_to", ld_lua_cairo_move_to},
|
||||
{"line_to", ld_lua_cairo_line_to},
|
||||
{"stroke", ld_lua_cairo_stroke},
|
||||
@ -557,9 +562,40 @@ push_cairo_object (lua_State *L, cairo_t *cr)
|
||||
}
|
||||
}
|
||||
|
||||
static gdouble
|
||||
get_cairo_scale (cairo_t *cr)
|
||||
{
|
||||
double dx = 1, dy = 0;
|
||||
|
||||
cairo_user_to_device_distance (cr, &dx, &dy);
|
||||
return dx;
|
||||
}
|
||||
|
||||
/* TODO: More functions. Possibly put it into another file
|
||||
* and generate it automatically.
|
||||
*/
|
||||
static int
|
||||
ld_lua_cairo_get_line_width (lua_State *L)
|
||||
{
|
||||
cairo_t *cr;
|
||||
|
||||
cr = lua_touserdata (L, lua_upvalueindex (1));
|
||||
lua_pushnumber (L, cairo_get_line_width (cr) * get_cairo_scale (cr));
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
ld_lua_cairo_set_line_width (lua_State *L)
|
||||
{
|
||||
cairo_t *cr;
|
||||
lua_Number width;
|
||||
|
||||
cr = lua_touserdata (L, lua_upvalueindex (1));
|
||||
width = luaL_checknumber (L, 1);
|
||||
cairo_set_line_width (cr, width / get_cairo_scale (cr));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ld_lua_cairo_move_to (lua_State *L)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user