From 8585c92b7d0744a1f1a39c872cf5096621161b6c Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 16 Aug 2018 14:21:56 +0800 Subject: *update --- src/lua/graphics/luaopen_graphics.cpp | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'src/lua/graphics/luaopen_graphics.cpp') 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(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(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* ref = new Ref(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(); 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(); 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& ref = proxy->getRef(); + (*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(); 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* ref = new Ref(font); + proxy->bind(ref, JIN_GRAPHICS_FONT); return 1; } -- cgit v1.1-26-g67d0