diff options
Diffstat (limited to 'src/lua/modules/graphics/je_lua_graphics.cpp')
-rw-r--r-- | src/lua/modules/graphics/je_lua_graphics.cpp | 109 |
1 files changed, 60 insertions, 49 deletions
diff --git a/src/lua/modules/graphics/je_lua_graphics.cpp b/src/lua/modules/graphics/je_lua_graphics.cpp index 6b84651..c535216 100644 --- a/src/lua/modules/graphics/je_lua_graphics.cpp +++ b/src/lua/modules/graphics/je_lua_graphics.cpp @@ -3,9 +3,20 @@ #include "libjin/jin.h" #include "lua/modules/luax.h" -#include "lua/modules/types.h" + #include "lua/common/je_lua_common.h" + +#include "je_lua_canvas.h" +#include "je_lua_sprite.h" #include "je_lua_spritesheet.h" +#include "je_lua_bitmap.h" +#include "je_lua_ttf.h" +#include "je_lua_ttf_data.h" +#include "je_lua_texture.h" +#include "je_lua_shader.h" +#include "je_lua_text.h" +#include "je_lua_texture_font.h" +#include "je_lua_page.h" using namespace std; using namespace JinEngine; @@ -165,8 +176,8 @@ namespace JinEngine return 1; } } - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_BITMAP); - proxy->bind(new Shared<Bitmap>(bitmap, JIN_GRAPHICS_BITMAP)); + Proxy* proxy = luax_newinstance(L, Jin_Lua_Bitmap); + proxy->bind(new Shared<Bitmap>(bitmap, Jin_Lua_Bitmap)); return 1; } @@ -174,9 +185,9 @@ namespace JinEngine LUA_IMPLEMENT int l_newTexture(lua_State* L) { Texture* texture = nullptr; - if (luax_istype(L, 1, JIN_GRAPHICS_BITMAP)) + if (luax_istype(L, 1, Jin_Lua_Bitmap)) { - Proxy* p = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_BITMAP); + Proxy* p = (Proxy*)luax_checktype(L, 1, Jin_Lua_Bitmap); Shared<Bitmap>& refBitmap = p->getShared<Bitmap>(); Bitmap* bitmap = refBitmap.getObject(); texture = Texture::createTexture(bitmap); @@ -186,8 +197,8 @@ namespace JinEngine const char* path = luax_checkstring(L, 1); texture = Texture::createTexture(path); } - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_TEXTURE); - proxy->bind(new Shared<Texture>(texture, JIN_GRAPHICS_TEXTURE)); + Proxy* proxy = luax_newinstance(L, Jin_Lua_Texture); + proxy->bind(new Shared<Texture>(texture, Jin_Lua_Texture)); return 1; } @@ -201,8 +212,8 @@ namespace JinEngine luax_pushnil(L); return 1; } - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_SHADER); - proxy->bind(new Shared<Shader>(jsl, JIN_GRAPHICS_SHADER)); + Proxy* proxy = luax_newinstance(L, Jin_Lua_Shader); + proxy->bind(new Shared<Shader>(jsl, Jin_Lua_Shader)); return 1; } @@ -225,8 +236,8 @@ namespace JinEngine luax_pushnil(L); return 1; } - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_SHADER); - proxy->bind(new Shared<Shader>(jsl, JIN_GRAPHICS_SHADER)); + Proxy* proxy = luax_newinstance(L, Jin_Lua_Shader); + proxy->bind(new Shared<Shader>(jsl, Jin_Lua_Shader)); return 1; } @@ -234,9 +245,9 @@ namespace JinEngine { int w = luax_checknumber(L, 1); int h = luax_checknumber(L, 2); - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_CANVAS); + Proxy* proxy = luax_newinstance(L, Jin_Lua_Canvas); Canvas* cvs = Canvas::createCanvas(w, h); - proxy->bind(new Shared<Canvas>(cvs, JIN_GRAPHICS_CANVAS)); + proxy->bind(new Shared<Canvas>(cvs, Jin_Lua_Canvas)); return 1; } @@ -274,7 +285,7 @@ namespace JinEngine LUA_IMPLEMENT void l_draw_texture(lua_State* L) { - if (!luax_istype(L, 1, JIN_GRAPHICS_TEXTURE)) + if (!luax_istype(L, 1, Jin_Lua_Texture)) return; int x = luax_optnumber(L, 2, 0); int y = luax_optnumber(L, 3, 0); @@ -290,7 +301,7 @@ namespace JinEngine LUA_IMPLEMENT void l_draw_canvas(lua_State* L) { - if (!luax_istype(L, 1, JIN_GRAPHICS_CANVAS)) + if (!luax_istype(L, 1, Jin_Lua_Canvas)) return; int x = luax_optnumber(L, 2, 0); int y = luax_optnumber(L, 3, 0); @@ -307,7 +318,7 @@ namespace JinEngine /* jin.graphics.draw(text, font, x, y) */ LUA_IMPLEMENT void l_draw_text(lua_State* L) { - if (!luax_istype(L, 1, JIN_GRAPHICS_TEXT)) + if (!luax_istype(L, 1, Jin_Lua_Text)) return; Proxy* p = (Proxy*)luax_toudata(L, 1); Text* text = p->getObject<Text>(); @@ -316,12 +327,12 @@ namespace JinEngine int spacing = luax_optnumber(L, 6, 0); Font* font = nullptr; Proxy* p2 = (Proxy*)luax_toudata(L, 2); - if (luax_istype(L, 2, JIN_GRAPHICS_TEXTUREFONT)) + if (luax_istype(L, 2, Jin_Lua_TextureFont)) { TextureFont* tf = p2->getObject<TextureFont>(); font = tf; } - else if (luax_istype(L, 2, JIN_GRAPHICS_TTF)) + else if (luax_istype(L, 2, Jin_Lua_TTF)) { TTF* ttf = p2->getObject<TTF>(); font = ttf; @@ -337,7 +348,7 @@ namespace JinEngine /* jin.graphics.draw(page, x, y) */ LUA_IMPLEMENT void l_draw_page(lua_State* L) { - if (!luax_istype(L, 1, JIN_GRAPHICS_PAGE)) + if (!luax_istype(L, 1, Jin_Lua_Page)) return; int x = luax_optnumber(L, 2, 0); int y = luax_optnumber(L, 3, 0); @@ -349,13 +360,13 @@ namespace JinEngine LUA_IMPLEMENT int l_draw(lua_State* L) { - if (luax_istype(L, 1, JIN_GRAPHICS_TEXTURE)) + if (luax_istype(L, 1, Jin_Lua_Texture)) l_draw_texture(L); - else if (luax_istype(L, 1, JIN_GRAPHICS_CANVAS)) + else if (luax_istype(L, 1, Jin_Lua_Canvas)) l_draw_canvas(L); - else if (luax_istype(L, 1, JIN_GRAPHICS_TEXT)) + else if (luax_istype(L, 1, Jin_Lua_Text)) l_draw_text(L); - else if (luax_istype(L, 1, JIN_GRAPHICS_PAGE)) + else if (luax_istype(L, 1, Jin_Lua_Page)) l_draw_page(L); else { @@ -387,13 +398,13 @@ namespace JinEngine float ox = luax_optnumber(L, 8, 0); float oy = luax_optnumber(L, 9, 0); - if (luax_istype(L, 1, JIN_GRAPHICS_TEXTURE)) + if (luax_istype(L, 1, Jin_Lua_Texture)) { Proxy* proxy = (Proxy*)luax_toudata(L, 1); Shared<Texture>& tex = proxy->getShared<Texture>(); tex->render(q, x, y, sx, sy, r, ox, oy); } - else if (luax_istype(L, 1, JIN_GRAPHICS_CANVAS)) + else if (luax_istype(L, 1, Jin_Lua_Canvas)) { Proxy* proxy = (Proxy*)luax_toudata(L, 1); Shared<Canvas>& p = proxy->getShared<Canvas>(); @@ -459,7 +470,7 @@ namespace JinEngine Canvas::unbind(); return 0; } - Proxy* proxy = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_CANVAS); + Proxy* proxy = (Proxy*)luax_checktype(L, 1, Jin_Lua_Canvas); Shared<Canvas>& shared = proxy->getShared<Canvas>(); Canvas::bind(shared.getObject()); return 0; @@ -478,9 +489,9 @@ namespace JinEngine Shader::unuse(); return 0; } - if (luax_istype(L, 1, JIN_GRAPHICS_SHADER)) + if (luax_istype(L, 1, Jin_Lua_Shader)) { - Proxy* proxy = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_SHADER); + Proxy* proxy = (Proxy*)luax_checktype(L, 1, Jin_Lua_Shader); Shared<Shader>& jsl = proxy->getShared<Shader>(); jsl->use(); } @@ -617,7 +628,7 @@ namespace JinEngine LUA_IMPLEMENT int l_newTTFData(lua_State* L) { - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_TTFDATA); + Proxy* proxy = luax_newinstance(L, Jin_Lua_TTFData); TTFData* fd = nullptr; { const char* path = luax_checkstring(L, 1); @@ -632,7 +643,7 @@ namespace JinEngine fs->read(path, b); fd = TTFData::createTTFData(&b, b.size()); } - proxy->bind(new Shared<TTFData>(fd, JIN_GRAPHICS_TTFDATA)); + proxy->bind(new Shared<TTFData>(fd, Jin_Lua_TTFData)); return 1; } @@ -655,30 +666,30 @@ namespace JinEngine unsigned length; const char* data = luax_checklstring(L, 1, &length); Text* text = new Text(encode, data, length); - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_TEXT); - proxy->bind(new Shared<Text>(text, JIN_GRAPHICS_TEXT)); + Proxy* proxy = luax_newinstance(L, Jin_Lua_Text); + proxy->bind(new Shared<Text>(text, Jin_Lua_Text)); return 1; } LUA_IMPLEMENT int l_newSprite(lua_State* L) { - Proxy* p = luax_newinstance(L, JIN_GRAPHICS_SPRITE); - p->bind(new Shared<Sprite>(new Sprite(), JIN_GRAPHICS_SPRITE)); + Proxy* p = luax_newinstance(L, Jin_Lua_Sprite); + p->bind(new Shared<Sprite>(new Sprite(), Jin_Lua_Sprite)); return 1; } LUA_IMPLEMENT int l_newSpriteSheet(lua_State* L) { Proxy* pxyGraphic = nullptr; - if (luax_istype(L, 1, JIN_GRAPHICS_TEXTURE)) - pxyGraphic = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_TEXTURE); - else if(luax_istype(L, 1, JIN_GRAPHICS_CANVAS)) - pxyGraphic = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_CANVAS); + if (luax_istype(L, 1, Jin_Lua_Texture)) + pxyGraphic = (Proxy*)luax_checktype(L, 1, Jin_Lua_Texture); + else if(luax_istype(L, 1, Jin_Lua_Canvas)) + pxyGraphic = (Proxy*)luax_checktype(L, 1, Jin_Lua_Canvas); if (pxyGraphic != nullptr) { - Proxy* pxySSheet = luax_newinstance(L, JIN_GRAPHICS_SPRITESHEET); + Proxy* pxySSheet = luax_newinstance(L, Jin_Lua_SpriteSheet); Graphic* graphic = pxyGraphic->getObject<Graphic>(); - Shared<SpriteSheet>* shrSSheet = new Shared<SpriteSheet>(new SpriteSheet(graphic), JIN_GRAPHICS_SPRITESHEET); + Shared<SpriteSheet>* shrSSheet = new Shared<SpriteSheet>(new SpriteSheet(graphic), Jin_Lua_SpriteSheet); Shared<Graphic>& shrGraphic = pxyGraphic->getShared<Graphic>(); shrSSheet->setDependency((int)SpriteSheetDependency::DEP_GRAPHIC, &shrGraphic); pxySSheet->bind(shrSSheet); @@ -691,12 +702,12 @@ namespace JinEngine /* newTextureFont(bitmap, text, color | cellw, cellh) */ LUA_IMPLEMENT int l_newTextureFont(lua_State* L) { - Proxy* p = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_BITMAP); + Proxy* p = (Proxy*)luax_checktype(L, 1, Jin_Lua_Bitmap); Bitmap* bitmap = p->getObject<Bitmap>(); Text* text; - if (luax_istype(L, 2, JIN_GRAPHICS_TEXT)) + if (luax_istype(L, 2, Jin_Lua_Text)) { - Proxy* pt = (Proxy*)luax_checktype(L, 2, JIN_GRAPHICS_TEXT); + Proxy* pt = (Proxy*)luax_checktype(L, 2, Jin_Lua_Text); text = pt->getObject<Text>(); } else if (luax_isstring(L, 2)) @@ -735,23 +746,23 @@ namespace JinEngine // Delete temporary text. delete text; } - Proxy* proxy = luax_newinstance(L, JIN_GRAPHICS_TEXTUREFONT); - proxy->bind(new Shared<TextureFont>(textureFont, JIN_GRAPHICS_TEXTUREFONT)); + Proxy* proxy = luax_newinstance(L, Jin_Lua_TextureFont); + proxy->bind(new Shared<TextureFont>(textureFont, Jin_Lua_TextureFont)); return 1; } /* setFont(font) */ LUA_IMPLEMENT int l_setFont(lua_State* L) { - if (luax_istype(L, 1, JIN_GRAPHICS_TTF)) + if (luax_istype(L, 1, Jin_Lua_TTF)) { - Proxy* p = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_TTF); + Proxy* p = (Proxy*)luax_checktype(L, 1, Jin_Lua_TTF); TTF* ttf = p->getObject<TTF>(); context.curFont = ttf; } - else if (luax_istype(L, 1, JIN_GRAPHICS_TEXTUREFONT)) + else if (luax_istype(L, 1, Jin_Lua_TextureFont)) { - Proxy* p = (Proxy*)luax_checktype(L, 1, JIN_GRAPHICS_TEXTUREFONT); + Proxy* p = (Proxy*)luax_checktype(L, 1, Jin_Lua_TextureFont); TextureFont* tf = p->getObject<TextureFont>(); context.curFont = tf; } |