Skip to content
Permalink
Browse files

zoom api changes: throw errors instead of returning bools, zoomEnable…

…d takes book as arg, some small refactoring
  • Loading branch information...
jacob1 committed Mar 6, 2019
1 parent a06124a commit 9e110cba7370c337050fb1da48124a253e02e5a4
Showing with 31 additions and 24 deletions.
  1. +31 −24 src/lua/LuaScriptInterface.cpp
@@ -2292,8 +2292,10 @@ int LuaScriptInterface::renderer_zoomEnabled(lua_State * l)
lua_pushboolean(l, luacon_ren->zoomEnabled);
return 1;
}
else {
luacon_ren->zoomEnabled = luaL_optint(l, 1, 0);
else
{
luaL_checktype(l, -1, LUA_TBOOLEAN);
luacon_ren->zoomEnabled = lua_toboolean(l, -1);
return 0;
}
}
@@ -2304,26 +2306,28 @@ int LuaScriptInterface::renderer_zoomWindowInfo(lua_State * l)
ui::Point location = luacon_ren->zoomWindowPosition;
lua_pushnumber(l, location.X);
lua_pushnumber(l, location.Y);
lua_pushnumber(l, luacon_ren->zoomScopeSize*luacon_ren->ZFACTOR);
lua_pushnumber(l, luacon_ren->ZFACTOR);
lua_pushnumber(l, luacon_ren->zoomScopeSize * luacon_ren->ZFACTOR);
return 4;
}
int x = luaL_optint(l, 1, 0);
int y = luaL_optint(l, 2, 0);
int f = luaL_optint(l, 3, 0);
if (luacon_ren->zoomScopeSize*f + x <= XRES && luacon_ren->zoomScopeSize*f + y <= YRES && x >= 0 && y >= 0) //To prevent crash when zoom window is outside screen
{
luacon_ren->zoomWindowPosition = ui::Point(x, y);
luacon_ren->ZFACTOR = f;
lua_pushboolean(l, true);
return 1;
}
lua_pushboolean(l, false);
return 1;
if (f <= 0)
return luaL_error(l, "Zoom factor must be greater than 0");

// To prevent crash when zoom window is outside screen
if (x < 0 || y < 0 || luacon_ren->zoomScopeSize * f + x > XRES || luacon_ren->zoomScopeSize * f + y > YRES)
return luaL_error(l, "Zoom window outside of bounds");

luacon_ren->zoomWindowPosition = ui::Point(x, y);
luacon_ren->ZFACTOR = f;
return 0;
}
int LuaScriptInterface::renderer_zoomScopeInfo(lua_State * l)
{
if (lua_gettop(l) == 0) {
if (lua_gettop(l) == 0)
{
ui::Point location = luacon_ren->zoomScopePosition;
lua_pushnumber(l, location.X);
lua_pushnumber(l, location.Y);
@@ -2333,17 +2337,20 @@ int LuaScriptInterface::renderer_zoomScopeInfo(lua_State * l)
int x = luaL_optint(l, 1, 0);
int y = luaL_optint(l, 2, 0);
int s = luaL_optint(l, 3, 0);
if (luacon_ren->ZFACTOR*s + luacon_ren->zoomWindowPosition.X <= XRES && luacon_ren->ZFACTOR*s + luacon_ren->zoomWindowPosition.Y <= YRES
&& x >= 0 && y >= 0 && x <= XRES && y <= YRES) //To prevent crash when zoom or scope window is outside screen
{
luacon_ren->zoomScopePosition = ui::Point(x, y);
luacon_ren->zoomScopeSize = s;
lua_pushboolean(l, true);
return 1;
}
lua_pushboolean(l, false);
return 1;

if (s <= 0)
return luaL_error(l, "Zoom scope size must be greater than 0");

// To prevent crash when zoom or scope window is outside screen
int windowEdgeRight = luacon_ren->ZFACTOR * s + luacon_ren->zoomWindowPosition.X;
int windowEdgeBottom = luacon_ren->ZFACTOR * s + luacon_ren->zoomWindowPosition.Y;
if (x < 0 || y < 0 || x + s > XRES || y + s > YRES)
return luaL_error(l, "Zoom scope outside of bounds");
if (windowEdgeRight > XRES || windowEdgeBottom > YRES)
return luaL_error(l, "Zoom window outside of bounds");

luacon_ren->zoomScopePosition = ui::Point(x, y);
luacon_ren->zoomScopeSize = s;
return 0;
}

void LuaScriptInterface::initElementsAPI()

0 comments on commit 9e110cb

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.