70 lines
2.2 KiB
Java
70 lines
2.2 KiB
Java
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;
|
|
}
|
|
});
|
|
}
|
|
} |