aboutsummaryrefslogtreecommitdiff
path: root/src/lua/modules/graphics/graphics.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-05 15:40:31 +0800
committerchai <chaifix@163.com>2018-10-05 15:40:31 +0800
commit789895b4b9f99668b8b772f271d07d1ce3115742 (patch)
tree3ae85381358445b2c29c9a0afb59375de9a7ce66 /src/lua/modules/graphics/graphics.cpp
parent846d6ab0ec1033481574e8324a43fc547ecf5882 (diff)
*update
Diffstat (limited to 'src/lua/modules/graphics/graphics.cpp')
-rw-r--r--src/lua/modules/graphics/graphics.cpp89
1 files changed, 19 insertions, 70 deletions
diff --git a/src/lua/modules/graphics/graphics.cpp b/src/lua/modules/graphics/graphics.cpp
index 679b820..5c67421 100644
--- a/src/lua/modules/graphics/graphics.cpp
+++ b/src/lua/modules/graphics/graphics.cpp
@@ -145,7 +145,7 @@ namespace lua
static int l_newShader(lua_State* L)
{
const char* program = luax_checkstring(L, 1);
- JSLProgram* jsl = JSLProgram::createJSLProgram(program);
+ Shader* jsl = Shader::createShader(program);
if (jsl == nullptr)
{
error(L, "Failed to compile shader");
@@ -153,7 +153,7 @@ namespace lua
return 1;
}
Proxy* proxy = (Proxy*)luax_newinstance(L, JIN_GRAPHICS_SHADER, sizeof(Proxy));
- proxy->bind(new Ref<JSLProgram>(jsl, JIN_GRAPHICS_SHADER));
+ proxy->bind(new Ref<Shader>(jsl, JIN_GRAPHICS_SHADER));
return 1;
}
@@ -252,7 +252,6 @@ namespace lua
context.curRenderColor.a = luax_checknumber(L, 4);
else
context.curClearColor.a = 255;
-
glColor4f(context.curRenderColor.r / 255.f,
context.curRenderColor.g / 255.f,
context.curRenderColor.b / 255.f,
@@ -293,13 +292,13 @@ namespace lua
{
if (luax_gettop(L) == 0)
{
- JSLProgram::unuse();
+ Shader::unuse();
return 0;
}
if (luax_istype(L, 1, JIN_GRAPHICS_SHADER))
{
Proxy* proxy = (Proxy*)luax_toudata(L, 1);
- Ref<JSLProgram>& jsl = proxy->getRef<JSLProgram>();
+ Ref<Shader>& jsl = proxy->getRef<Shader>();
jsl->use();
}
else
@@ -308,13 +307,13 @@ namespace lua
}
return 0;
}
-
+/*
static int l_unuseShader(lua_State* L)
{
- JSLProgram::unuse();
+ Shader::unuse();
return 0;
}
-
+*/
static int l_setBlend(lua_State* L)
{
@@ -451,10 +450,10 @@ namespace lua
return 0;
}
- static int l_newFont(lua_State* L)
+ static int l_newFontData(lua_State* L)
{
- Proxy* proxy = (Proxy*)luax_newinstance(L, JIN_GRAPHICS_FONT, sizeof(Proxy));
- Font* font = new Font();
+ Proxy* proxy = (Proxy*)luax_newinstance(L, JIN_GRAPHICS_FONTDATA, sizeof(Proxy));
+ FontData* fd = nullptr;
{
const char* path = luax_checkstring(L, 1);
Filesystem* fs = Filesystem::get();
@@ -464,64 +463,14 @@ namespace lua
luax_pushnil(L);
return 1;
}
- Buffer b = {};
+ Buffer b;
fs->read(path, &b);
- font->loadMemory((const unsigned char*)b.data);
+ fd = FontData::createFontData((unsigned char*)b.data, b.size);
}
- proxy->bind(new Ref<Font>(font, JIN_GRAPHICS_FONT));
+ proxy->bind(new Ref<FontData>(fd, JIN_GRAPHICS_FONTDATA));
return 1;
}
- static int l_setFont(lua_State* L)
- {
- int n = luax_gettop(L);
- if (n == 0)
- {
- if (context.defaultFont == 0)
- {
- #include "lua/resources/font.ttf.h"
- context.defaultFont = new Font();
- context.defaultFont->loadMemory(font_ttf);
- }
- context.curFont = context.defaultFont;
- return 0;
- }
- Font* font = (Font*)luax_checktype(L, 1, JIN_GRAPHICS_FONT);
- context.curFont = font;
- return 0;
- }
-
- static int l_write(lua_State* L)
- {
- if (context.curFont == 0)
- return 0;
-
- const char* text = luax_checkstring(L, 1);
- int x = luax_checknumber(L, 2);
- int y = luax_checknumber(L, 3);
-
- int fh = luax_optnumber(L, 4, 15);
- int spacing = luax_optnumber(L, 5, 1);
- int lh = luax_optnumber(L, 6, 18);
-
- context.curFont->render(text, x, y, fh, spacing, lh);
-
- return 0;
- }
-
- static int l_box(lua_State* L)
- {
- const char* text = luax_checkstring(L, 1);
- int fontheight = luax_checknumber(L, 2);
- int spacing = luax_checknumber(L, 3);
- int lineheight = luax_checknumber(L, 4);
- int w, h;
- context.curFont->box(text, fontheight, spacing, lineheight, &w, &h);
- luax_pushnumber(L, w);
- luax_pushnumber(L, h);
- return 2;
- }
-
static const luaL_Reg f[] = {
/* window */
{ "init", l_init },
@@ -535,7 +484,7 @@ namespace lua
{ "newTexture", l_newTexture },
{ "newShader", l_newShader },
{ "newCanvas", l_newCanvas },
- { "newFont", l_newFont },
+ { "newFontData", l_newFontData },
/* render */
{ "setClearColor", l_setClearColor },
{ "clear", l_clear },
@@ -543,16 +492,12 @@ namespace lua
{ "setColor", l_setColor },
{ "getColor", l_getColor },
{ "present", l_present },
- /* font */
- { "box", l_box },
- { "write", l_write },
- { "setFont", l_setFont },
/* canvas */
{ "bindCanvas", l_bindCanvas },
{ "unbindCanvas", l_unbindCanvas },
/* shader */
{ "useShader", l_useShader },
- { "unuseShader", l_unuseShader },
+ //{ "unuseShader", l_unuseShader },
/* shapes */
{ "point", l_point },
{ "line", l_line },
@@ -565,6 +510,8 @@ namespace lua
extern int luaopen_Texture(lua_State* L);
extern int luaopen_Font(lua_State* L);
+ extern int luaopen_FontData(lua_State* L);
+ extern int luaopen_Page(lua_State* L);
extern int luaopen_Canvas(lua_State* L);
extern int luaopen_JSL(lua_State* L);
extern int luaopen_Bitmap(lua_State* L);
@@ -575,7 +522,9 @@ namespace lua
luaopen_Bitmap(L);
luaopen_Texture(L);
luaopen_Canvas(L);
+ luaopen_FontData(L);
luaopen_Font(L);
+ luaopen_Page(L);
luaopen_JSL(L);
// load whole lib