Create a new shape from the data provided.
if (spContainer.getRecordId() == EscherContainerRecord.SPGR_CONTAINER){
return new ShapeGroup(spContainer, parent);
}
Shape shape;
EscherSpRecord spRecord = spContainer.getChildById(EscherSpRecord.RECORD_ID);
int type = spRecord.getOptions() >> 4;
switch (type){
case ShapeTypes.TextBox:
case ShapeTypes.Rectangle:
EscherTextboxRecord txtbox = (EscherTextboxRecord)Shape.getEscherChild(spContainer, EscherTextboxRecord.RECORD_ID);
if (txtbox == null)
shape = new AutoShape(spContainer, parent);
else
shape = new TextBox(spContainer, parent);
break;
case ShapeTypes.PictureFrame:
shape = new Picture(spContainer, parent);
break;
case ShapeTypes.Line:
shape = new Line(spContainer, parent);
break;
case ShapeTypes.NotPrimitive:
if ((spRecord.getFlags() & EscherSpRecord.FLAG_GROUP) != 0)
shape = new ShapeGroup(spContainer, parent);
else
shape = new AutoShape(spContainer, parent);
break;
default:
shape = new AutoShape(spContainer, parent);
break;
}
return shape;