Browse Source

Table support for setBackgroundColor (bug #113)

Bart van Strien 14 years ago
parent
commit
cee1a95b82
1 changed files with 20 additions and 3 deletions
  1. 20 3
      src/modules/graphics/opengl/wrap_Graphics.cpp

+ 20 - 3
src/modules/graphics/opengl/wrap_Graphics.cpp

@@ -389,9 +389,26 @@ namespace opengl
 	int w_setBackgroundColor(lua_State * L)
 	{
 		Color c;
-		c.r = (unsigned char)luaL_checkint(L, 1);
-		c.g = (unsigned char)luaL_checkint(L, 2);
-		c.b = (unsigned char)luaL_checkint(L, 3);
+		if (lua_istable(L, 1)) {
+			lua_pushinteger(L, 1);
+			lua_gettable(L, -2);
+			c.r = (unsigned char)luaL_checkint(L, -1);
+			lua_pop(L, 1);
+			lua_pushinteger(L, 2);
+			lua_gettable(L, -2);
+			c.g = (unsigned char)luaL_checkint(L, -1);
+			lua_pop(L, 1);
+			lua_pushinteger(L, 3);
+			lua_gettable(L, -2);
+			c.b = (unsigned char)luaL_checkint(L, -1);
+			lua_pop(L, 1);
+		}
+		else
+		{
+			c.r = (unsigned char)luaL_checkint(L, 1);
+			c.g = (unsigned char)luaL_checkint(L, 2);
+			c.b = (unsigned char)luaL_checkint(L, 3);
+		}
 		c.a = 255;
 		instance->setBackgroundColor(c);
 		return 0;