mirror of
https://github.com/minetest/minetest.git
synced 2024-11-19 22:23:46 +01:00
Add colorspec_to_table to the Lua API
This commit is contained in:
parent
c54f5a2137
commit
f9c0354af1
@ -5655,6 +5655,10 @@ Utilities
|
||||
* `minetest.colorspec_to_bytes(colorspec)`: Converts a ColorSpec to a raw
|
||||
string of four bytes in an RGBA layout, returned as a string.
|
||||
* `colorspec`: The ColorSpec to convert
|
||||
* `minetest.colorspec_to_table(colorspec)`: Converts a ColorSpec into RGBA table
|
||||
form. If the ColorSpec is invalid, returns `nil`. You can use this to parse
|
||||
ColorStrings.
|
||||
* `colorspec`: The ColorSpec to convert
|
||||
* `minetest.encode_png(width, height, data, [compression])`: Encode a PNG
|
||||
image and return it in string form.
|
||||
* `width`: Width of the image
|
||||
|
17
games/devtest/mods/unittests/color.lua
Normal file
17
games/devtest/mods/unittests/color.lua
Normal file
@ -0,0 +1,17 @@
|
||||
local function assert_colors_equal(c1, c2)
|
||||
if type(c1) == "table" and type(c2) == "table" then
|
||||
assert(c1.r == c2.r and c1.g == c2.g and c1.b == c2.b and c1.a == c2.a)
|
||||
else
|
||||
assert(c1 == c2)
|
||||
end
|
||||
end
|
||||
|
||||
local function test_color_conversion()
|
||||
assert_colors_equal(core.colorspec_to_table("#fff"), {r = 255, g = 255, b = 255, a = 255})
|
||||
assert_colors_equal(core.colorspec_to_table(0xFF00FF00), {r = 0, g = 255, b = 0, a = 255})
|
||||
assert_colors_equal(core.colorspec_to_table("#00000000"), {r = 0, g = 0, b = 0, a = 0})
|
||||
assert_colors_equal(core.colorspec_to_table("green"), {r = 0, g = 128, b = 0, a = 255})
|
||||
assert_colors_equal(core.colorspec_to_table("gren"), nil)
|
||||
end
|
||||
|
||||
unittests.register("test_color_conversion", test_color_conversion)
|
@ -187,6 +187,7 @@ dofile(modpath .. "/raycast.lua")
|
||||
dofile(modpath .. "/inventory.lua")
|
||||
dofile(modpath .. "/load_time.lua")
|
||||
dofile(modpath .. "/on_shutdown.lua")
|
||||
dofile(modpath .. "/color.lua")
|
||||
|
||||
--------------
|
||||
|
||||
|
@ -626,6 +626,20 @@ int ModApiUtil::l_colorspec_to_bytes(lua_State *L)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// colorspec_to_table(colorspec)
|
||||
int ModApiUtil::l_colorspec_to_table(lua_State *L)
|
||||
{
|
||||
NO_MAP_LOCK_REQUIRED;
|
||||
|
||||
video::SColor color(0);
|
||||
if (read_color(L, 1, &color)) {
|
||||
push_ARGB8(L, color);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// encode_png(w, h, data, level)
|
||||
int ModApiUtil::l_encode_png(lua_State *L)
|
||||
{
|
||||
@ -726,6 +740,7 @@ void ModApiUtil::Initialize(lua_State *L, int top)
|
||||
API_FCT(sha256);
|
||||
API_FCT(colorspec_to_colorstring);
|
||||
API_FCT(colorspec_to_bytes);
|
||||
API_FCT(colorspec_to_table);
|
||||
|
||||
API_FCT(encode_png);
|
||||
|
||||
@ -761,6 +776,7 @@ void ModApiUtil::InitializeClient(lua_State *L, int top)
|
||||
API_FCT(sha256);
|
||||
API_FCT(colorspec_to_colorstring);
|
||||
API_FCT(colorspec_to_bytes);
|
||||
API_FCT(colorspec_to_table);
|
||||
|
||||
API_FCT(get_last_run_mod);
|
||||
API_FCT(set_last_run_mod);
|
||||
@ -805,6 +821,7 @@ void ModApiUtil::InitializeAsync(lua_State *L, int top)
|
||||
API_FCT(sha256);
|
||||
API_FCT(colorspec_to_colorstring);
|
||||
API_FCT(colorspec_to_bytes);
|
||||
API_FCT(colorspec_to_table);
|
||||
|
||||
API_FCT(encode_png);
|
||||
|
||||
|
@ -122,6 +122,9 @@ private:
|
||||
// colorspec_to_bytes(colorspec)
|
||||
static int l_colorspec_to_bytes(lua_State *L);
|
||||
|
||||
// colorspec_to_table(colorspec)
|
||||
static int l_colorspec_to_table(lua_State *L);
|
||||
|
||||
// encode_png(w, h, data, level)
|
||||
static int l_encode_png(lua_State *L);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user