package org.geogebra.common.kernel.commands; import org.geogebra.common.kernel.CircularDefinitionException; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.arithmetic.Command; import org.geogebra.common.kernel.arithmetic.ExpressionNode; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.main.MyError; import org.geogebra.common.plugin.Operation; /** * CAS command that gets rewritten as operation in input bar * * @author zbynek * */ public class CmdCAStoOperation extends CommandProcessor { private Operation op; /** * @param kernel * kernel * @param op * operation this command should be rewritten to */ public CmdCAStoOperation(Kernel kernel, Operation op) { super(kernel); this.op = op; } @Override public GeoElement[] process(Command c, EvalInfo info) throws MyError, CircularDefinitionException { ExpressionNode en = null; GeoElement[] args = resArgs(c); switch (op) { case YCOORD: case XCOORD: en = new ExpressionNode(kernelA, args[0], op, null); break; case MULTIPLY: case VECTORPRODUCT: en = new ExpressionNode(kernelA, args[0], op, args[1]); break; default: throw new Error("Unhandled operation " + op); } return kernelA.getAlgebraProcessor().processExpressionNode(en, info); } }