FileDocCategorySizeDatePackage
ShapeFactory.javaAPI DocApache Poi 3.0.12690Thu May 31 18:45:28 BST 2007org.apache.poi.hslf.model

ShapeFactory

public class ShapeFactory extends Object
Create a Shape object depending on its type
author
Yegor Kozlov

Fields Summary
Constructors Summary
Methods Summary
public static org.apache.poi.hslf.model.ShapecreateShape(org.apache.poi.ddf.EscherContainerRecord spContainer, org.apache.poi.hslf.model.Shape parent)
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;