Many new things
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package org.openautonomousconnection.luascript.tables;
|
||||
|
||||
import org.luaj.vm2.LuaTable;
|
||||
import org.luaj.vm2.LuaValue;
|
||||
import org.luaj.vm2.lib.OneArgFunction;
|
||||
import org.luaj.vm2.lib.TwoArgFunction;
|
||||
import org.luaj.vm2.lib.VarArgFunction;
|
||||
import org.luaj.vm2.Varargs;
|
||||
import org.openautonomousconnection.luascript.events.JavaToLua;
|
||||
import org.openautonomousconnection.luascript.hosts.GeometryHost;
|
||||
import org.openautonomousconnection.luascript.hosts.HostServices;
|
||||
import org.openautonomousconnection.luascript.utils.ScriptTable;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Lua table: geometry
|
||||
*
|
||||
* <p>Functions:</p>
|
||||
* <ul>
|
||||
* <li>geometry.rect(id) -> map</li>
|
||||
* <li>geometry.viewport() -> map</li>
|
||||
* <li>geometry.scrollTo(x,y)</li>
|
||||
* <li>geometry.scrollIntoView(id, align?)</li>
|
||||
* </ul>
|
||||
*/
|
||||
public final class GeometryTable extends ScriptTable {
|
||||
|
||||
public GeometryTable() {
|
||||
super("geometry");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void define(HostServices services) {
|
||||
GeometryHost host = services.geometry().orElseThrow(() -> new IllegalStateException("GeometryHost not provided"));
|
||||
|
||||
table().set("rect", new OneArgFunction() {
|
||||
@Override
|
||||
public LuaValue call(LuaValue id) {
|
||||
Map<String, Object> m = host.getBoundingClientRect(id.checkjstring());
|
||||
return JavaToLua.coerce(m);
|
||||
}
|
||||
});
|
||||
|
||||
table().set("viewport", new org.luaj.vm2.lib.ZeroArgFunction() {
|
||||
@Override
|
||||
public LuaValue call() {
|
||||
return JavaToLua.coerce(host.getViewport());
|
||||
}
|
||||
});
|
||||
|
||||
table().set("scrollTo", new VarArgFunction() {
|
||||
@Override
|
||||
public Varargs invoke(Varargs args) {
|
||||
host.scrollTo(args.arg(1).checkdouble(), args.arg(2).checkdouble());
|
||||
return LuaValue.NIL;
|
||||
}
|
||||
});
|
||||
|
||||
table().set("scrollIntoView", new VarArgFunction() {
|
||||
@Override
|
||||
public Varargs invoke(Varargs args) {
|
||||
String id = args.arg(1).checkjstring();
|
||||
String align = args.narg() >= 2 && !args.arg(2).isnil() ? args.arg(2).tojstring() : null;
|
||||
host.scrollIntoView(id, align);
|
||||
return LuaValue.NIL;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user