package com.pixelmaid.dresscode.antlr.types.tree.functions.transforms;
import java.util.List;
import com.pixelmaid.dresscode.antlr.types.VarType;
import com.pixelmaid.dresscode.antlr.types.tree.DCNode;
import com.pixelmaid.dresscode.antlr.types.tree.NodeEvent;
import com.pixelmaid.dresscode.drawing.primitive2d.Drawable;
import com.pixelmaid.dresscode.events.CustomEvent;
public class GroupNode extends NodeEvent implements DCNode {
protected List<DCNode> params;
protected int line;
public GroupNode(List<DCNode> ps, int l) {
params = ps;
line = l;
}
@Override
public VarType evaluate() {
try{
Drawable master = new Drawable();
if (params!=null){
for(int i=0;i<params.size();i++){
Drawable d= (params.get(i).evaluate().asDrawable());
this.fireDrawableEvent(CustomEvent.REMOVE_DRAWABLE, d);
master.addToGroup(d);
}
}
//System.out.println("group children are polygons" + master.childrenArePolygons());
this.fireDrawableEvent(CustomEvent.DRAWABLE_CREATED, master);
master.setLine(line);
return new VarType(master);
}
catch (ClassCastException e){
throw new RuntimeException("Illegal group function call at line:"+ line+" : " + this);
}
}
}