org.apache.poi.hslf.usermodel

## Class HSLFShape

- java.lang.Object
- - org.apache.poi.hslf.usermodel.HSLFShape

- All Implemented Interfaces:
    Shape<HSLFShape,HSLFTextParagraph>
  Direct Known Subclasses:
    HSLFBackground, HSLFGroupShape, HSLFSimpleShape

      public abstract class HSLFShape
      extends java.lang.Object
      implements Shape<HSLFShape,HSLFTextParagraph>

  Represents a Shape which is the elemental object that composes a drawing. This class is a wrapper around EscherSpContainer which holds all information about a shape in PowerPoint document.

  When you add a shape, you usually specify the dimensions of the shape and the position of the upper'left corner of the bounding box for the shape relative to the upper'left corner of the page, worksheet, or slide. Distances in the drawing layer are measured in points (72 points = 1 inch).

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `HSLFShape(EscherContainerRecord escherRecord, ShapeContainer<HSLFShape,HSLFTextParagraph> parent)` Create a Shape object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `afterInsert(HSLFSheet sh)` Event which fires when a shape is inserted in the sheet.
    `protected EscherContainerRecord` | `createSpContainer(boolean isChild)` Create and assign the lower level escher record to this shape
    `void` | `draw(java.awt.Graphics2D graphics, java.awt.geom.Rectangle2D bounds)` Convenience method to draw a single shape
    `java.awt.geom.Rectangle2D` | `getAnchor()` Returns the anchor (the bounding box rectangle) of this shape.
    `protected HSLFEscherClientDataRecord` | `getClientData(boolean create)` Create a new HSLF-specific EscherClientDataRecord
    `<T extends Record> T` | `getClientDataRecord(int recordType)` Find a record in the underlying EscherClientDataRecord
    `protected java.util.List<? extends Record>` | `getClientRecords()` Search for EscherClientDataRecord, if found, convert its contents into an array of HSLF records
    `static <T extends EscherRecord> T` | `getEscherChild(EscherContainerRecord owner, EscherRecordTypes recordId)`
    `static <T extends EscherRecord> T` | `getEscherChild(EscherContainerRecord owner, int recordId)` Helper method to return escher child by record ID
    `<T extends EscherRecord> T` | `getEscherChild(EscherRecordTypes recordId)`
    `<T extends EscherRecord> T` | `getEscherChild(int recordId)`
    `AbstractEscherOptRecord` | `getEscherOptRecord()`
    `static <T extends EscherProperty> T` | `getEscherProperty(AbstractEscherOptRecord opt, EscherPropertyTypes type)` Returns escher property by type.
    `static <T extends EscherProperty> T` | `getEscherProperty(AbstractEscherOptRecord opt, int propId)` Deprecated. use `getEscherProperty(EscherPropertyTypes)` instead
    `int` | `getEscherProperty(EscherPropertyTypes propType)` Get the value of a simple escher property for this shape.
    `int` | `getEscherProperty(EscherPropertyTypes type, int defaultValue)` Get the value of a simple escher property for this shape.
    `int` | `getEscherProperty(short propId)` Get the value of a simple escher property for this shape.
    `int` | `getEscherProperty(short propId, int defaultValue)` Deprecated. use `getEscherProperty(EscherPropertyTypes, int)` instead
    `HSLFFill` | `getFill()` Fill properties of this shape
    `FillStyle` | `getFillStyle()`
    `boolean` | `getFlipHorizontal()`
    `boolean` | `getFlipVertical()`
    `ShapeContainer<HSLFShape,HSLFTextParagraph>` | `getParent()`
    `double` | `getRotation()`
    `int` | `getShapeId()` Returns a unique identifier for this shape within the current slide.
    `java.lang.String` | `getShapeName()`
    `ShapeType` | `getShapeType()`
    `HSLFSheet` | `getSheet()`
    `EscherContainerRecord` | `getSpContainer()`
    `boolean` | `isPlaceholder()`
    `void` | `moveTo(double x, double y)` Moves the top left corner of the shape to the specified point.
    `void` | `setAnchor(java.awt.geom.Rectangle2D anchor)` Sets the anchor (the bounding box rectangle) of this shape.
    `static void` | `setEscherProperty(AbstractEscherOptRecord opt, EscherPropertyTypes propType, boolean isBlipId, int value)`
    `static void` | `setEscherProperty(AbstractEscherOptRecord opt, EscherPropertyTypes propType, int value)` Set an escher property for this shape.
    `static void` | `setEscherProperty(AbstractEscherOptRecord opt, short propId, int value)` Deprecated. use `setEscherProperty(AbstractEscherOptRecord, EscherPropertyTypes, int)`
    `void` | `setEscherProperty(EscherPropertyTypes propType, int value)` Set an simple escher property for this shape.
    `void` | `setEscherProperty(short propId, int value)` Deprecated. use `setEscherProperty(EscherPropertyTypes, int)`
    `void` | `setFlipHorizontal(boolean flip)`
    `void` | `setFlipVertical(boolean flip)`
    `void` | `setRotation(double theta)`
    `void` | `setShapeId(int id)` Sets shape ID
    `void` | `setShapeType(ShapeType type)`
    `void` | `setSheet(HSLFSheet sheet)` Assign the `SlideShow` this shape belongs to

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### HSLFShape

          protected HSLFShape(EscherContainerRecord escherRecord,
                              ShapeContainer<HSLFShape,HSLFTextParagraph> parent)

      Create a Shape object. This constructor is used when an existing Shape is read from from a PowerPoint document.
      Parameters:
        `escherRecord` - `EscherSpContainer` container which holds information about this shape
        `parent` - the parent of this Shape

  - ### Method Detail

    - #### createSpContainer

          protected EscherContainerRecord createSpContainer(boolean isChild)

      Create and assign the lower level escher record to this shape

    - #### getParent

          public ShapeContainer<HSLFShape,HSLFTextParagraph> getParent()

      Specified by:
        `getParent` in interface `Shape<HSLFShape,HSLFTextParagraph>`
      Returns:
        the parent of this shape

    - #### getShapeName

          public java.lang.String getShapeName()

      Specified by:
        `getShapeName` in interface `Shape<HSLFShape,HSLFTextParagraph>`
      Returns:
        name of the shape.

    - #### getShapeType

          public ShapeType getShapeType()

    - #### setShapeType

          public void setShapeType(ShapeType type)

    - #### getAnchor

          public java.awt.geom.Rectangle2D getAnchor()

      Returns the anchor (the bounding box rectangle) of this shape. All coordinates are expressed in points (72 dpi).
      Specified by:
        `getAnchor` in interface `Shape<HSLFShape,HSLFTextParagraph>`
      Returns:
        the anchor of this shape

    - #### setAnchor

          public void setAnchor(java.awt.geom.Rectangle2D anchor)

      Sets the anchor (the bounding box rectangle) of this shape. All coordinates should be expressed in points (72 dpi).
      Parameters:
        `anchor` - new anchor

    - #### moveTo

          public final void moveTo(double x,
                                   double y)

      Moves the top left corner of the shape to the specified point.
      Parameters:
        `x` - the x coordinate of the top left corner of the shape
        `y` - the y coordinate of the top left corner of the shape

    - #### getEscherChild

          public static <T extends EscherRecord> T getEscherChild(EscherContainerRecord owner,
                                                                  int recordId)

      Helper method to return escher child by record ID
      Returns:
        escher record or `null` if not found.

    - #### getEscherChild

          public static <T extends EscherRecord> T getEscherChild(EscherContainerRecord owner,
                                                                  EscherRecordTypes recordId)

      Since:
        POI 3.14-Beta2

    - #### getEscherChild

          public <T extends EscherRecord> T getEscherChild(int recordId)

    - #### getEscherChild

          public <T extends EscherRecord> T getEscherChild(EscherRecordTypes recordId)

      Since:
        POI 3.14-Beta2

    - #### getEscherProperty

          @Deprecated
           @Removal(version="5.0.0")
          public static <T extends EscherProperty> T getEscherProperty(AbstractEscherOptRecord opt,
                                                                                                              int propId)

      Deprecated. use `getEscherProperty(EscherPropertyTypes)` instead
      Returns escher property by id.
      Returns:
        escher property or `null` if not found.

    - #### getEscherProperty

          public static <T extends EscherProperty> T getEscherProperty(AbstractEscherOptRecord opt,
                                                                       EscherPropertyTypes type)

      Returns escher property by type.
      Returns:
        escher property or `null` if not found.

    - #### setEscherProperty

          @Deprecated
           @Removal(version="5.0.0")
          public static void setEscherProperty(AbstractEscherOptRecord opt,
                                                                                      short propId,
                                                                                      int value)

      Deprecated. use `setEscherProperty(AbstractEscherOptRecord, EscherPropertyTypes, int)`
      Set an escher property for this shape.
      Parameters:
        `opt` - The opt record to set the properties to.
        `propId` - The id of the property. One of the constants defined in EscherOptRecord.
        `value` - value of the property. If value = -1 then the property is removed.

    - #### setEscherProperty

          public static void setEscherProperty(AbstractEscherOptRecord opt,
                                               EscherPropertyTypes propType,
                                               int value)

      Set an escher property for this shape.
      Parameters:
        `opt` - The opt record to set the properties to.
        `propType` - The type of the property.
        `value` - value of the property. If value = -1 then the property is removed.

    - #### setEscherProperty

          public static void setEscherProperty(AbstractEscherOptRecord opt,
                                               EscherPropertyTypes propType,
                                               boolean isBlipId,
                                               int value)

    - #### setEscherProperty

          @Deprecated
           @Removal(version="5.0.0")
          public void setEscherProperty(short propId,
                                                                               int value)

      Deprecated. use `setEscherProperty(EscherPropertyTypes, int)`
      Set an simple escher property for this shape.
      Parameters:
        `propId` - The id of the property. One of the constants defined in EscherOptRecord.
        `value` - value of the property. If value = -1 then the property is removed.

    - #### setEscherProperty

          public void setEscherProperty(EscherPropertyTypes propType,
                                        int value)

      Set an simple escher property for this shape.
      Parameters:
        `propType` - The type of the property.
        `value` - value of the property. If value = -1 then the property is removed.

    - #### getEscherProperty

          public int getEscherProperty(short propId)

      Get the value of a simple escher property for this shape.
      Parameters:
        `propId` - The id of the property. One of the constants defined in EscherOptRecord.

    - #### getEscherProperty

          public int getEscherProperty(EscherPropertyTypes propType)

      Get the value of a simple escher property for this shape.
      Parameters:
        `propType` - The type of the property. One of the constants defined in EscherOptRecord.

    - #### getEscherProperty

          @Deprecated
           @Removal(version="5.0.0")
          public int getEscherProperty(short propId,
                                                                              int defaultValue)

      Deprecated. use `getEscherProperty(EscherPropertyTypes, int)` instead
      Get the value of a simple escher property for this shape.
      Parameters:
        `propId` - The id of the property. One of the constants defined in EscherOptRecord.

    - #### getEscherProperty

          public int getEscherProperty(EscherPropertyTypes type,
                                       int defaultValue)

      Get the value of a simple escher property for this shape.
      Parameters:
        `type` - The type of the property.

    - #### getSpContainer

          public EscherContainerRecord getSpContainer()

      Returns:
        The shape container and it's children that can represent this shape.

    - #### afterInsert

          protected void afterInsert(HSLFSheet sh)

      Event which fires when a shape is inserted in the sheet. In some cases we need to propagate changes to upper level containers.
      Default implementation does nothing.
      Parameters:
        `sh` - - owning shape

    - #### getSheet

          public HSLFSheet getSheet()

      Specified by:
        `getSheet` in interface `Shape<HSLFShape,HSLFTextParagraph>`
      Returns:
        the `SlideShow` this shape belongs to

    - #### setSheet

          public void setSheet(HSLFSheet sheet)

      Assign the `SlideShow` this shape belongs to
      Parameters:
        `sheet` - owner of this shape

    - #### 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<HSLFShape,HSLFTextParagraph>`
      Returns:
        unique id of this shape

    - #### setShapeId

          public void setShapeId(int id)

      Sets shape ID
      Parameters:
        `id` - of the shape

    - #### getFill

          public HSLFFill getFill()

      Fill properties of this shape
      Returns:
        fill properties of this shape

    - #### getFillStyle

          public FillStyle getFillStyle()

    - #### draw

          public void draw(java.awt.Graphics2D graphics,
                           java.awt.geom.Rectangle2D bounds)

      Description copied from interface: `Shape`
      Convenience method to draw a single shape
      Specified by:
        `draw` in interface `Shape<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `graphics` - the graphics context
        `bounds` - the rectangle to fit the shape to. if null, the bounds of the shape are used.

    - #### getEscherOptRecord

          public AbstractEscherOptRecord getEscherOptRecord()

    - #### getFlipHorizontal

          public boolean getFlipHorizontal()

    - #### setFlipHorizontal

          public void setFlipHorizontal(boolean flip)

    - #### getFlipVertical

          public boolean getFlipVertical()

    - #### setFlipVertical

          public void setFlipVertical(boolean flip)

    - #### getRotation

          public double getRotation()

    - #### setRotation

          public void setRotation(double theta)

    - #### isPlaceholder

          public boolean isPlaceholder()

    - #### getClientDataRecord

          public <T extends Record> T getClientDataRecord(int recordType)

      Find a record in the underlying EscherClientDataRecord
      Parameters:
        `recordType` - type of the record to search

    - #### getClientRecords

          protected java.util.List<? extends Record> getClientRecords()

      Search for EscherClientDataRecord, if found, convert its contents into an array of HSLF records
      Returns:
        an array of HSLF records contained in the shape's EscherClientDataRecord or `null`

    - #### getClientData

          protected HSLFEscherClientDataRecord getClientData(boolean create)

      Create a new HSLF-specific EscherClientDataRecord
      Parameters:
        `create` - if true, create the missing record
      Returns:
        the client record or null if it was missing and create wasn't activated

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.