1
0
Fork 0
mirror of https://github.com/ctruLua/ctruLua.git synced 2025-10-27 16:39:29 +00:00
ctruLua/source/color.c
2015-10-25 12:33:44 +01:00

95 lines
No EOL
2.1 KiB
C

/***
The `gfx.color` module
@module ctr.gfx.color
@usage local color = require("ctr.gfx.color")
*/
#include <sf2d.h>
#include <lua.h>
#include <lauxlib.h>
u32 color_default = RGBA8(255, 255, 255, 255);
u32 color_background = RGBA8(0, 0, 0, 255);
/***
Set a color as the default one.
@function setDefault
@tparam integer color the color to set as the default one.
*/
static int color_setDefault(lua_State *L) {
color_default = luaL_checkinteger(L, 1);
return 0;
}
/***
Return the default color.
@function getDefault
@treturn integer default color
*/
static int color_getDefault(lua_State *L) {
lua_pushinteger(L, color_default);
return 1;
}
/***
Set a color as the background one.
@function setBackground
@tparam integer color the color to set as the background one.
*/
static int color_setBackground(lua_State *L) {
color_background = luaL_checkinteger(L, 1);
sf2d_set_clear_color(color_background);
return 0;
}
/***
Return the background color.
@function getBackground
@treturn integer background color
*/
static int color_getBackground(lua_State *L) {
lua_pushinteger(L, color_background);
return 1;
}
/***
Return a color from red, green, blue and alpha values.
@function RGBA8
@tparam integer r the red value (0-255)
@tparam integer g the green value (0-255)
@tparam integer b the blue value (0-255)
@tparam[opt=255] integer a the alpha (opacity) value (0-255)
@treturn integer the color
*/
static int color_RGBA8(lua_State *L) {
int r = luaL_checkinteger(L, 1);
int g = luaL_checkinteger(L, 2);
int b = luaL_checkinteger(L, 3);
int a = luaL_optinteger(L, 4, 255);
lua_pushinteger(L, RGBA8(r, g, b, a));
return 1;
}
static const struct luaL_Reg color_lib[] = {
{ "setDefault", color_setDefault },
{ "getDefault", color_getDefault },
{ "setBackground", color_setBackground },
{ "getBackground", color_getBackground },
{ "RGBA8", color_RGBA8 },
{ NULL, NULL }
};
int luaopen_color_lib(lua_State *L) {
luaL_newlib(L, color_lib);
return 1;
}
void load_color_lib(lua_State *L) {
luaL_requiref(L, "ctr.gfx.color", luaopen_color_lib, false);
}