static int l_surface_set_clip(lua_State *L) { THRenderTarget* pCanvas = luaT_testuserdata<THRenderTarget>(L); THClipRect rcClip; rcClip.x = static_cast<THClipRect::xy_t>(luaL_checkinteger(L, 2)); rcClip.y = static_cast<THClipRect::xy_t>(luaL_checkinteger(L, 3)); rcClip.w = static_cast<THClipRect::wh_t>(luaL_checkinteger(L, 4)); rcClip.h = static_cast<THClipRect::wh_t>(luaL_checkinteger(L, 5)); if(lua_toboolean(L, 6) != 0) { THClipRect rcExistingClip; pCanvas->getClipRect(&rcExistingClip); IntersectTHClipRect(rcClip, rcExistingClip); } pCanvas->setClipRect(&rcClip); lua_settop(L, 1); return 1; }