gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/agg-plot/lua-draw.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'agg-plot/lua-draw.cpp')
-rw-r--r--agg-plot/lua-draw.cpp 46
1 files changed, 46 insertions, 0 deletions
diff --git a/agg-plot/lua-draw.cpp b/agg-plot/lua-draw.cpp
index d812d7ea..7f0b294b 100644
--- a/agg-plot/lua-draw.cpp
+++ b/agg-plot/lua-draw.cpp
@@ -45,6 +45,9 @@ static int agg_text_set_point (lua_State *L);
static int agg_text_rotate (lua_State *L);
static int agg_rgba_free (lua_State *L);
+static int agg_rgba_set (lua_State *L);
+static int agg_rgba_invert (lua_State *L);
+static int agg_rgba_dup (lua_State *L);
static void path_cmd (my::path *p, int cmd, struct cmd_call_stack *stack);
@@ -74,6 +77,9 @@ static const struct luaL_Reg agg_path_methods[] = {
static const struct luaL_Reg rgba_methods[] = {
{"__gc", agg_rgba_free},
+ {"set", agg_rgba_set },
+ {"invert", agg_rgba_invert },
+ {"dup", agg_rgba_dup },
{NULL, NULL}
};
@@ -321,6 +327,46 @@ agg_rgb_new (lua_State *L)
}
int
+agg_rgba_set (lua_State *L)
+{
+ agg::rgba8 *c = gs_check_userdata (L, 1, GS_RGBA_COLOR);
+ double r, g, b, a;
+
+ r = luaL_checknumber (L, 2);
+ g = luaL_checknumber (L, 3);
+ b = luaL_checknumber (L, 4);
+ if (lua_gettop (L) > 4)
+ a = luaL_checknumber (L, 5);
+ else
+ a = 1.0;
+
+ c->r = r;
+ c->g = g;
+ c->b = b;
+ c->a = a;
+
+ return 0;
+}
+
+int
+agg_rgba_invert (lua_State *L)
+{
+ agg::rgba8 *c = gs_check_userdata (L, 1, GS_RGBA_COLOR);
+ c->r = 1 - r;
+ c->g = 1 - g;
+ c->b = 1 - b;
+ return 0;
+}
+
+int
+agg_rgba_dup (lua_State *L)
+{
+ agg::rgba8 *src = gs_check_userdata (L, 1, GS_RGBA_COLOR);
+ agg::rgba8 *dst = new(L, GS_RGBA_COLOR) agg::rgba8(*src);
+ return 1;
+}
+
+int
agg_rgba_free (lua_State *L)
{
typedef agg::rgba8 rgba_t;
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月14日 17:37:01 +0000

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