gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/agg-plot
diff options
context:
space:
mode:
Diffstat (limited to 'agg-plot')
-rw-r--r--agg-plot/agg-parse-trans.cpp 23
-rw-r--r--agg-plot/trans.h 1
2 files changed, 19 insertions, 5 deletions
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)
diff --git a/agg-plot/trans.h b/agg-plot/trans.h
index c7585c67..340659f7 100644
--- a/agg-plot/trans.h
+++ b/agg-plot/trans.h
@@ -21,6 +21,7 @@
struct trans {
typedef sg_object_scaling<manage_owner> scaling;
+ typedef sg_object_scaling<manage_not_owner> scaling_a;
typedef agg::conv_stroke<sg_object> conv_stroke;
generated by cgit v1.2.3 (git 2.25.1) at 2025年10月03日 15:04:34 +0000

AltStyle によって変換されたページ (->オリジナル) /