Lua: selection get and rndcoord changes
This commit is contained in:
@@ -957,6 +957,7 @@ Get the selection value at (x,y).
|
|||||||
Example:
|
Example:
|
||||||
|
|
||||||
local value = selection.get(sel, x, y);
|
local value = selection.get(sel, x, y);
|
||||||
|
local value = selection.get(sel, { x = 10, y = 14 });
|
||||||
|
|
||||||
=== gradient
|
=== gradient
|
||||||
|
|
||||||
|
|||||||
30
src/nhlsel.c
30
src/nhlsel.c
@@ -180,11 +180,19 @@ static int
|
|||||||
l_selection_getpoint(lua_State *L)
|
l_selection_getpoint(lua_State *L)
|
||||||
{
|
{
|
||||||
struct selectionvar *sel = l_selection_check(L, 1);
|
struct selectionvar *sel = l_selection_check(L, 1);
|
||||||
xchar x = (xchar) luaL_checkinteger(L, 2);
|
xchar x, y;
|
||||||
xchar y = (xchar) luaL_checkinteger(L, 3);
|
int ix, iy;
|
||||||
int val;
|
int val;
|
||||||
long crd;
|
long crd;
|
||||||
|
|
||||||
|
lua_remove(L, 1); /* sel */
|
||||||
|
if (!nhl_get_xy_params(L, &ix, &iy)) {
|
||||||
|
nhl_error(L, "l_selection_getpoint: Incorrect params");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
x = (xchar) ix;
|
||||||
|
y = (xchar) iy;
|
||||||
|
|
||||||
if (x == -1 && y == -1)
|
if (x == -1 && y == -1)
|
||||||
crd = SP_COORD_PACK_RANDOM(0);
|
crd = SP_COORD_PACK_RANDOM(0);
|
||||||
else
|
else
|
||||||
@@ -327,15 +335,17 @@ l_selection_rndcoord(lua_State *L)
|
|||||||
{
|
{
|
||||||
struct selectionvar *sel = l_selection_check(L, 1);
|
struct selectionvar *sel = l_selection_check(L, 1);
|
||||||
int removeit = (int) luaL_optinteger(L, 2, 0);
|
int removeit = (int) luaL_optinteger(L, 2, 0);
|
||||||
xchar x, y;
|
xchar x = -1, y = -1;
|
||||||
selection_rndcoord(sel, &x, &y, removeit);
|
selection_rndcoord(sel, &x, &y, removeit);
|
||||||
update_croom();
|
if (!(x == -1 && y == -1)) {
|
||||||
if (g.coder && g.coder->croom) {
|
update_croom();
|
||||||
x -= g.coder->croom->lx;
|
if (g.coder && g.coder->croom) {
|
||||||
y -= g.coder->croom->ly;
|
x -= g.coder->croom->lx;
|
||||||
} else {
|
y -= g.coder->croom->ly;
|
||||||
x -= g.xstart;
|
} else {
|
||||||
y -= g.ystart;
|
x -= g.xstart;
|
||||||
|
y -= g.ystart;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
lua_settop(L, 0);
|
lua_settop(L, 0);
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
|
|||||||
@@ -66,8 +66,9 @@ function test_selection_params()
|
|||||||
error("sel:rndcoord returned unset coordinate (" .. pt.x .. "," .. pt.y .. ")");
|
error("sel:rndcoord returned unset coordinate (" .. pt.x .. "," .. pt.y .. ")");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- no coordinates in selection, returns -1,-1
|
||||||
pt = sel:rndcoord(1);
|
pt = sel:rndcoord(1);
|
||||||
if pt.x ~= -2 or pt.y ~= -1 then
|
if pt.x ~= -1 or pt.y ~= -1 then
|
||||||
error("sel:rndcoord returned (" .. pt.x .. "," .. pt.y .. ") coordinate");
|
error("sel:rndcoord returned (" .. pt.x .. "," .. pt.y .. ") coordinate");
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -89,6 +90,8 @@ function test_selection_params()
|
|||||||
|
|
||||||
-- variable as param
|
-- variable as param
|
||||||
selection.get(sel, 1, 2);
|
selection.get(sel, 1, 2);
|
||||||
|
selection.get(sel, {1, 2});
|
||||||
|
selection.get(sel, { x = 1, y = 2 });
|
||||||
selection.set(sel, 1, 2);
|
selection.set(sel, 1, 2);
|
||||||
selection.negate(sel);
|
selection.negate(sel);
|
||||||
selection.percentage(sel, 50);
|
selection.percentage(sel, 50);
|
||||||
|
|||||||
Reference in New Issue
Block a user