return new HVCat(Dimension.X, children, properties);
case GRID:
Figure[][] elems = make2DList(env, c.get(0), properties, childPropsNext);
if(elems.length == 0){
return new Space(null, properties );
}
return new Grid( elems, properties);
case OUTLINE:
return new Outline( properties, (IList)c.get(0), ((IInteger) c.get(1)).intValue());
case OVERLAY:
children = makeList(env,c.get(0),properties,childPropsNext);
return new Overlay( children, properties);
case OVERLAP:
Figure under = makeChild(0,env,c,properties,childPropsNext);
Figure over = makeChild(1,env,c,properties,childPropsNext);
return new Overlap(under, over, properties);
case SCALE:
PropertyValue<Integer> low = Properties.produceMaybeComputedValue(Types.INT,c.get(0),properties,env);
PropertyValue<Integer> high = Properties.produceMaybeComputedValue(Types.INT,c.get(1),properties,env);
PropertyValue<Integer> selection = Properties.produceMaybeComputedValue(Types.INT,c.get(2),properties,env);
return new Scale(env, Dimension.X, low,high, selection, c.get(3), properties);
case MOUSEOVER:
under = makeChild(0,env,c,properties,childPropsNext);
over = makeChild(1,env,c,properties,childPropsNext);
return new MouseOver(under, over, properties);
case PACK:
children = makeList(env,c.get(0),properties,childPropsNext);
return new Pack(children, properties);
case PLACE:
throw new Error("Place out of order..");
//return new Place(env, properties, (IConstructor) c.get(0), (IString) c.get(1), (IConstructor) c.get(2), ctx);
case PROJECTION:
PropertyValue<String> projectOn = Properties.produceMaybeComputedValue(Types.STR,c.get(1),properties,env);
Figure projectFrom = makeChild(0,env,c,properties,childPropsNext);
Figure projection = makeChild(2,env,c,properties,childPropsNext);
return new Projection(projectFrom,projectOn,projection,properties);
case ROTATE:
//TODO
// child = makeChild(1,env,c,properties,childPropsNext);
//double angle = PropertyParsers.parseNum(c.get(0));
throw new Error("Rotate out of order..");
//return new Rotate(env, angle, child, properties);
case SCROLLABLE:
return new Scrollable(((IBool)c.get(0)).getValue(), ((IBool)c.get(1)).getValue(), env, (IConstructor)c.get(2), properties);
case SPACE:
return new Space( makeChild(env,c,properties,childPropsNext), properties );
case TEXT:
PropertyValue<String> txt = Properties.produceMaybeComputedValue(Types.STR,c.get(0),properties,env);