38 lines
744 B
C++
38 lines
744 B
C++
#include "Surface.h"
|
|
#include "LuaHelper.h"
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
inline Surface::Surface(SDL_Surface* s) : surf(s, SDL_FreeSurface)
|
|
{
|
|
|
|
}
|
|
|
|
inline int Surface::close(lua_State* L)
|
|
{
|
|
cout << "In Surface::close" << endl;
|
|
auto p = (Surface*)luaL_checkudata(L, 1, "surface");
|
|
p->~Surface();
|
|
return 0;
|
|
}
|
|
|
|
int Surface::create(lua_State* L, SDL_Surface* s)
|
|
{
|
|
cout << "In Surface::create" << endl;
|
|
auto p = new (lua_newuserdata(L, sizeof(Surface))) Surface(s);
|
|
if (luaL_newmetatable(L, "surface"))
|
|
{
|
|
// GC
|
|
lua_pushcfunction(L, close);
|
|
lua_setfield(L, -2, "__gc");
|
|
|
|
// Fields
|
|
lua_newtable(L);
|
|
settype("surface");
|
|
setfn(close, "close");
|
|
lua_setfield(L, -2, "__index");
|
|
}
|
|
lua_setmetatable(L, -2);
|
|
return 1;
|
|
}
|