aboutsummaryrefslogtreecommitdiff
path: root/src/lua/graphics/luaopen_graphics.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-08-16 14:21:56 +0800
committerchai <chaifix@163.com>2018-08-16 14:21:56 +0800
commit8585c92b7d0744a1f1a39c872cf5096621161b6c (patch)
tree6aa02138f39f7b11ab17c7399064353092b8df0c /src/lua/graphics/luaopen_graphics.cpp
parentbe9b27dbf550093b555ab3087c11b38c89ab9fd0 (diff)
*update
Diffstat (limited to 'src/lua/graphics/luaopen_graphics.cpp')
-rw-r--r--src/lua/graphics/luaopen_graphics.cpp34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/lua/graphics/luaopen_graphics.cpp b/src/lua/graphics/luaopen_graphics.cpp
index 5b7f848..dc8c9a1 100644
--- a/src/lua/graphics/luaopen_graphics.cpp
+++ b/src/lua/graphics/luaopen_graphics.cpp
@@ -2,23 +2,17 @@
#include "libjin/jin.h"
#include "lua/luaopen_types.h"
#include "lua/embed/graphics.lua.h"
-#include "Canvas.h"
-#include "Color.h"
-#include "Font.h"
-#include "Image.h"
-#include "JSL.h"
-#include "graphics.h"
namespace jin
{
namespace lua
{
-
- using namespace lua::graphics;
- using jin::graphics::Window;
+ using namespace jin::graphics;
using jin::filesystem::Filesystem;
using jin::filesystem::Buffer;
+ typedef Texture Image;
+
/**
* jin.graphics context, storge some module
* shared variables.
@@ -87,8 +81,8 @@ namespace lua
fs->read(f, &b);
Proxy* proxy = (Proxy*)luax_newinstance(L, JIN_GRAPHICS_IMAGE, sizeof(Proxy));
- Image* img = Image::createImage(b.data, b.size);
- proxy->bind(img, JIN_GRAPHICS_IMAGE);
+ Image* img = Image::createTexture(b.data, b.size);
+ proxy->bind(new Ref<Image>(img), JIN_GRAPHICS_IMAGE);
return 1;
}
@@ -101,7 +95,7 @@ namespace lua
Proxy* proxy = (Proxy*)luax_newinstance(L, JIN_GRAPHICS_SHADER, sizeof(Proxy));
const char* program = luax_checkstring(L, 1);
JSLProgram* jsl = JSLProgram::createJSLProgram(program);
- proxy->bind(jsl, JIN_GRAPHICS_SHADER);
+ proxy->bind(new Ref<JSLProgram>(jsl), JIN_GRAPHICS_SHADER);
return 1;
}
@@ -115,7 +109,8 @@ namespace lua
int h = luax_checknumber(L, 2);
Proxy* proxy = (Proxy*)luax_newinstance(L, JIN_GRAPHICS_CANVAS, sizeof(Proxy));
Canvas* cvs = Canvas::createCanvas(w, h);
- proxy->bind(cvs, JIN_GRAPHICS_CANVAS);
+ Ref<Canvas>* ref = new Ref<Canvas>(cvs);
+ proxy->bind(ref, JIN_GRAPHICS_CANVAS);
return 1;
}
@@ -157,13 +152,13 @@ namespace lua
if (luax_istype(L, 1, JIN_GRAPHICS_IMAGE))
{
Proxy* proxy = (Proxy*)luax_toudata(L, 1);
- Image* tex = (Image*)proxy->object;
+ Image* tex = &*proxy->getRef<Image>();
tex->draw(x, y, sx, sy, r);
}
else if (luax_istype(L, 1, JIN_GRAPHICS_CANVAS))
{
Proxy* proxy = (Proxy*)luax_toudata(L, 1);
- Canvas* p = (Canvas*)proxy->object;
+ Canvas* p = &*proxy->getRef<Canvas>();
p->draw(x, y, sx, sy, r);
}
else
@@ -214,8 +209,8 @@ namespace lua
return 0;
}
Proxy* proxy = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_CANVAS);
- Canvas* c = (Canvas*)proxy->object;
- c->bind();
+ Ref<Canvas>& ref = proxy->getRef<Canvas>();
+ (*ref).bind();
return 0;
}
@@ -235,7 +230,7 @@ namespace lua
if (luax_istype(L, 1, JIN_GRAPHICS_SHADER))
{
Proxy* proxy = (Proxy*)luax_toudata(L, 1);
- JSLProgram* jsl = (JSLProgram*)proxy->object;
+ JSLProgram* jsl = &*proxy->getRef<JSLProgram>();
jsl->use();
}
else
@@ -412,7 +407,8 @@ namespace lua
fs->read(path, &b);
font->loadb((const unsigned char*)b.data);
}
- proxy->bind(font, JIN_GRAPHICS_FONT);
+ Ref<Font>* ref = new Ref<Font>(font);
+ proxy->bind(ref, JIN_GRAPHICS_FONT);
return 1;
}