diff options
author | chai <chaifix@163.com> | 2018-08-16 14:21:56 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-08-16 14:21:56 +0800 |
commit | 8585c92b7d0744a1f1a39c872cf5096621161b6c (patch) | |
tree | 6aa02138f39f7b11ab17c7399064353092b8df0c /src/lua/graphics/luaopen_graphics.cpp | |
parent | be9b27dbf550093b555ab3087c11b38c89ab9fd0 (diff) |
*update
Diffstat (limited to 'src/lua/graphics/luaopen_graphics.cpp')
-rw-r--r-- | src/lua/graphics/luaopen_graphics.cpp | 34 |
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; } |