Class XSLFShape

java.lang.Object
org.apache.poi.xslf.usermodel.XSLFShape
All Implemented Interfaces:
Shape<XSLFShape,XSLFTextParagraph>
Direct Known Subclasses:
XSLFGraphicFrame, XSLFGroupShape, XSLFShadow, XSLFSimpleShape

@Beta public abstract class XSLFShape extends Object implements Shape<XSLFShape,XSLFTextParagraph>
Base super-class class for all shapes in PresentationML
  • Constructor Details

    • XSLFShape

      protected XSLFShape(org.apache.xmlbeans.XmlObject shape, XSLFSheet sheet)
  • Method Details

    • getXmlObject

      public final org.apache.xmlbeans.XmlObject getXmlObject()
      Returns:
      the xml bean holding this shape's data
    • getSheet

      public XSLFSheet getSheet()
      Specified by:
      getSheet in interface Shape<XSLFShape,XSLFTextParagraph>
      Returns:
      the sheet this shape belongs to
    • getShapeName

      public String getShapeName()
      Specified by:
      getShapeName in interface Shape<XSLFShape,XSLFTextParagraph>
      Returns:
      human-readable name of this shape, e.g. "Rectange 3"
    • getShapeId

      public int getShapeId()
      Description copied from interface: Shape
      Returns a unique identifier for this shape within the current slide. This ID may be used to assist in uniquely identifying this object so that it can be referred to by other parts of the document.

      If multiple objects within the same slide share the same id attribute value, then the document shall be considered non-conformant.

      Specified by:
      getShapeId in interface Shape<XSLFShape,XSLFTextParagraph>
      Returns:
      unique id of this shape
    • setParent

      public void setParent(XSLFShapeContainer parent)
    • getParent

      public XSLFShapeContainer getParent()
      Specified by:
      getParent in interface Shape<XSLFShape,XSLFTextParagraph>
    • getFillPaint

      protected PaintStyle getFillPaint()
    • getBgPr

      protected org.openxmlformats.schemas.presentationml.x2006.main.CTBackgroundProperties getBgPr()
    • getBgRef

      protected org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference getBgRef()
    • getGrpSpPr

      protected org.openxmlformats.schemas.drawingml.x2006.main.CTGroupShapeProperties getGrpSpPr()
    • getCNvPr

      protected org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps getCNvPr()
    • getSpStyle

      protected org.openxmlformats.schemas.drawingml.x2006.main.CTShapeStyle getSpStyle()
    • getChild

      protected <T extends org.apache.xmlbeans.XmlObject> T getChild(Class<T> childClass, String namespace, String nodename)
      Return direct child objects of this shape
      Parameters:
      childClass - the class to cast the properties to
      namespace - the namespace - usually it is "http://schemas.openxmlformats.org/presentationml/2006/main"
      nodename - the node name, without prefix
      Returns:
      the properties object or null if it can't be found
    • isPlaceholder

      public boolean isPlaceholder()
    • getPlaceholder

      public Placeholder getPlaceholder()
      See Also:
    • setPlaceholder

      public void setPlaceholder(Placeholder placeholder)
      See Also:
    • getPlaceholderDetails

      public XSLFPlaceholderDetails getPlaceholderDetails()
      See Also:
    • selectProperty

      protected <T extends org.apache.xmlbeans.XmlObject> T selectProperty(Class<T> resultClass, String xquery)
      As there's no xmlbeans hierarchy, but XSLF works with subclassing, not all child classes work with a CTShape object, but often contain the same properties. This method is the generalized form of selecting and casting those properties.
      Parameters:
      resultClass - the requested result class
      xquery - the simple (xmlbean) xpath expression to the property
      Returns:
      the xml object at the xpath location, or null if not found
    • fetchShapeProperty

      protected boolean fetchShapeProperty(PropertyFetcher<?> visitor)
      Walk up the inheritance tree and fetch shape properties.

      The following order of inheritance is assumed:

      1. slide
      2. slideLayout
      3. slideMaster
      Currently themes and their defaults aren't correctly handled
      Parameters:
      visitor - the object that collects the desired property
      Returns:
      true if the property was fetched
    • selectPaint

      protected static PaintStyle selectPaint(org.apache.poi.xslf.usermodel.XSLFPropertiesDelegate.XSLFFillProperties fp, org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr, PackagePart parentPart, XSLFTheme theme, boolean hasPlaceholder)
      Convert shape fill into java.awt.Paint. The result is either Color or TexturePaint or GradientPaint or null
      Parameters:
      fp - a properties handler specific to the underlying shape properties
      phClr - context color
      parentPart - the parent package part. Any external references (images, etc.) are resolved relative to it.
      theme - the theme for the shape/sheet
      Returns:
      the applied Paint or null if none was applied
    • selectPaint

      protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTSolidColorFillProperties solidFill, org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr, XSLFTheme theme)
    • selectPaint

      protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties blipFill, PackagePart parentPart)
    • selectPaint

      protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTGradientFillProperties gradFill, org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr, XSLFTheme theme)
    • selectPaint

      protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference fillRef, XSLFTheme theme, boolean isLineStyle, boolean hasPlaceholder)
    • draw

      public void draw(Graphics2D graphics, Rectangle2D bounds)
      Description copied from interface: Shape
      Convenience method to draw a single shape
      Specified by:
      draw in interface Shape<XSLFShape,XSLFTextParagraph>
      Parameters:
      graphics - the graphics context
      bounds - the rectangle to fit the shape to. if null, the bounds of the shape are used.
    • getShapeProperties

      protected org.apache.xmlbeans.XmlObject getShapeProperties()
      Return the shape specific (visual) properties
      Returns:
      the shape specific properties