author | Francesco Abbate <francesco.bbt@gmail.com> | 2011年12月18日 17:01:37 +0100 |
---|---|---|
committer | Francesco Abbate <francesco.bbt@gmail.com> | 2011年12月18日 17:01:37 +0100 |
commit | 5f093983d4e62111c97436bbb2ce7bf433d1fe7b (patch) | |
tree | 97f2f5d7579c0e0d0de0e28fe87bc814593ee892 /agg-plot/agg-parse-trans.cpp | |
parent | ee563973094a8235631d5208bd672f8cbbe15fdc (diff) | |
download | gsl-shell-5f093983d4e62111c97436bbb2ce7bf433d1fe7b.tar.gz |
-rw-r--r-- | agg-plot/agg-parse-trans.cpp | 23 |
diff --git a/agg-plot/agg-parse-trans.cpp b/agg-plot/agg-parse-trans.cpp index 4ae1cdbc..47ccdbe5 100644 --- a/agg-plot/agg-parse-trans.cpp +++ b/agg-plot/agg-parse-trans.cpp @@ -91,11 +91,24 @@ sg_object* build_curve (lua_State *L, int specindex, sg_object* src) sg_object* build_marker (lua_State *L, int specindex, sg_object* src) { - double size = mlua_named_optnumber (L, specindex, "size", 3.0); - const char *sym_name = mlua_named_optstring (L, specindex, "mark", "circle"); - sg_object* sym = new_marker_symbol(sym_name); - trans::marker* m = new trans::marker(src, size, sym); - return m; + double size = mlua_named_optnumber(L, specindex, "size", 3.0); + + lua_getfield(L, specindex, "mark"); + const char *sym_name = lua_tostring(L, -1); + + sg_object *sym; + if (!sym_name && gs_is_userdata(L, -1, GS_DRAW_SCALABLE)) + { + sg_object* obj = (sg_object*) lua_touserdata(L, -1); + sym = new trans::scaling_a(obj); + } + else + { + sym = new_marker_symbol(sym_name ? sym_name : "circle"); + } + lua_pop(L, 1); + + return new trans::marker(src, size, sym); } sg_object* build_dash (lua_State *L, int specindex, sg_object* src) |