[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool SpaceTool.java, 1.32, 1.33
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-09-12 09:26:00
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv4152/src/net/sourceforge/bprocessor/gl/tool Modified Files: SpaceTool.java Log Message: new scripting capabilities Index: SpaceTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/SpaceTool.java,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** SpaceTool.java 11 Sep 2006 22:57:21 -0000 1.32 --- SpaceTool.java 12 Sep 2006 09:25:48 -0000 1.33 *************** *** 18,21 **** --- 18,22 ---- import java.util.Arrays; import java.util.Collection; + import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; *************** *** 40,44 **** --- 41,47 ---- import net.sourceforge.bprocessor.model.Geometry; import net.sourceforge.bprocessor.model.constraints.OffsetConstraint; + import net.sourceforge.bprocessor.model.evaluator.Environment; import net.sourceforge.bprocessor.model.evaluator.Function; + import net.sourceforge.bprocessor.model.evaluator.Invokable; import net.sourceforge.bprocessor.model.modellor.LayerModellor; import net.sourceforge.bprocessor.model.modellor.Modellor; *************** *** 542,545 **** --- 545,555 ---- /** + * Builtin function + */ + public abstract class Builtin implements Invokable { + + } + + /** * Evaluate the string * @param value String *************** *** 554,560 **** try { parser.expression(function); ! Object result = function.evaluate(); glv.setLengthValue(result.toString()); typing = false; } catch (Exception error) { Project.info(error); --- 564,612 ---- try { parser.expression(function); ! ! HashMap globals = Project.getInstance().getGlobals().environment(); ! HashMap functions = new HashMap(); ! functions.put("cos", new Builtin() { ! public Object evaluate(Environment env) { ! Double argument = (Double) env.get(0); ! return new Double(Math.cos(argument.doubleValue())); ! } ! }); ! functions.put("vertex", new Builtin() { ! public Object evaluate(Environment env) { ! Double z = (Double) env.get(0); ! Double y = (Double) env.get(1); ! Double x = (Double) env.get(2); ! Vertex result = new Vertex(x.doubleValue(), y.doubleValue(), z.doubleValue()); ! return result; ! } ! }); ! functions.put("edge", new Builtin() { ! public Object evaluate(Environment env) { ! Vertex from = (Vertex) env.get(1); ! Vertex to = (Vertex) env.get(0); ! Edge result = new Edge(from, to); ! return result; ! } ! }); ! ! Environment env = new Environment(functions, globals, null); ! ! Object result = function.evaluate(env); ! ! ! if (result instanceof Vertex) { ! result = Geometry.insertVertex((Vertex)result, true); ! Selection.primary().set(result); ! } ! ! if (result instanceof Edge) { ! result = Geometry.insertEdge((Edge)result, true); ! Selection.primary().set(result); ! } ! glv.setLengthValue(result.toString()); typing = false; + } catch (Exception error) { Project.info(error); |