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