package com.pixelmaid.dresscode.antlr.types.tree.functions;
import java.util.List;
import com.pixelmaid.dresscode.antlr.types.VarType;
import com.pixelmaid.dresscode.antlr.types.tree.DCNode;
import com.pixelmaid.dresscode.drawing.primitive2d.DrawablePoint;
import com.pixelmaid.dresscode.drawing.primitive2d.Ellipse;
import com.pixelmaid.dresscode.events.CustomEvent;
public class EllipseNode extends DrawableNode implements DCNode {
public EllipseNode(List<DCNode> ps, int l) {
super(ps,l);
}
@Override
public VarType evaluate() {
Ellipse e = null;
try{
if(params.get(0).evaluate().isDrawablePoint()){
DrawablePoint p = params.get(0).evaluate().asDrawablePoint();
if(params.size()==1){
e = new Ellipse(p.getOrigin().getX(),p.getOrigin().getY());
}
else if(params.size()==2){
double width = params.get(1).evaluate().asDouble();
e = new Ellipse(p.getOrigin().getX(),p.getOrigin().getY(),width,width);
}
else if(params.size()==3){
double width = params.get(1).evaluate().asDouble();
double height = params.get(2).evaluate().asDouble();
e = new Ellipse(p.getOrigin().getX(),p.getOrigin().getY(),width,height);
}
}
else if(params.get(0).evaluate().isNumber()&¶ms.get(1).evaluate().isNumber()){
double x = params.get(0).evaluate().asDouble();
double y = params.get(1).evaluate().asDouble();
if(params.size()==2){
e = new Ellipse(x,y);
}
else if(params.size()==3){
double width = params.get(2).evaluate().asDouble();
e = new Ellipse(x,y,width,width);
}
else if(params.size()==4){
double width = params.get(2).evaluate().asDouble();
double height = params.get(3).evaluate().asDouble();
e= new Ellipse(x,y,width,height);
}
else{
//Window.output.setText("incorrect number of arguments for ellipse at line:"+line);
System.err.println("incorrect number of arguments for ellipse at line:"+line);
}
}
else{
//Window.output.setText("incorrect number of arguments for ellipse at line:"+line);
System.err.println("incorrect arguments for ellipse at line:"+line);
}
this.fireDrawableEvent(CustomEvent.DRAWABLE_CREATED, e);
}
catch (ClassCastException err){
//Window.output.setText("incorrect parameters for ellipse at line:"+line);
System.err.println("incorrect parameters for ellipse at line:"+line);
this.fireRuntimeErrorEvent(CustomEvent.RUNTIME_ERROR, "incorrect parameters for ellipse");
}
e.setLine(line);
return new VarType(e);
//throw new RuntimeException("Illegal function call: " + this);
}
}