org.apache.poi.hssf.usermodel

## Class HSSFPatriarch

- java.lang.Object
- - org.apache.poi.hssf.usermodel.HSSFPatriarch

- All Implemented Interfaces:
    java.lang.Iterable<HSSFShape>, HSSFShapeContainer, Drawing<HSSFShape>, ShapeContainer<HSSFShape>

      public final class HSSFPatriarch
      extends java.lang.Object
      implements HSSFShapeContainer, Drawing<HSSFShape>

  The patriarch is the toplevel container for shapes in a sheet. It does little other than act as a container for other shapes and groups.

- - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addShape(HSSFShape shape)` add a shape to this drawing
    `void` | `clear()` remove all shapes inside patriarch
    `boolean` | `containsChart()` Does this HSSFPatriarch contain a chart? (Technically a reference to a chart, since they get stored in a different block of records) FIXME - detect chart in all cases (only seems to work on some charts so far)
    `int` | `countOfAllChildren()` Total count of all children and their children's children.
    `HSSFClientAnchor` | `createAnchor(int dx1, int dy1, int dx2, int dy2, int col1, int row1, int col2, int row2)` Creates a new client anchor and sets the top-left and bottom-right coordinates of the anchor.
    `HSSFComment` | `createCellComment(ClientAnchor anchor)` Creates a comment.
    `HSSFComment` | `createComment(HSSFAnchor anchor)` Constructs a cell comment.
    `HSSFShapeGroup` | `createGroup(HSSFClientAnchor anchor)` Creates a new group record stored under this patriarch.
    `HSSFObjectData` | `createObjectData(ClientAnchor anchor, int storageId, int pictureIndex)` Adds a new OLE Package Shape
    `HSSFPicture` | `createPicture(ClientAnchor anchor, int pictureIndex)` Creates a picture.
    `HSSFPicture` | `createPicture(HSSFClientAnchor anchor, int pictureIndex)` Creates a picture.
    `HSSFPolygon` | `createPolygon(HSSFClientAnchor anchor)` Creates a polygon
    `HSSFSimpleShape` | `createSimpleShape(HSSFClientAnchor anchor)` Creates a simple shape.
    `HSSFTextbox` | `createTextbox(HSSFClientAnchor anchor)` Constructs a textbox under the patriarch.
    `EscherAggregate` | `getBoundAggregate()` Returns the aggregate escher record we're bound to
    `java.util.List<HSSFShape>` | `getChildren()` Returns a unmodifiable list of all shapes contained by the patriarch.
    `protected HSSFSheet` | `getSheet()`
    `int` | `getX1()`
    `int` | `getX2()`
    `int` | `getY1()`
    `int` | `getY2()`
    `java.util.Iterator<HSSFShape>` | `iterator()`
    `protected void` | `preSerialize()` check if any shapes contain wrong data At now(13.08.2010) check if patriarch contains 2 or more comments with same coordinates
    `boolean` | `removeShape(HSSFShape shape)` remove first level shapes
    `void` | `setCoordinates(int x1, int y1, int x2, int y2)` Sets the coordinate space of this group.

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

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

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Method Detail

    - #### preSerialize

          protected void preSerialize()

      check if any shapes contain wrong data At now(13.08.2010) check if patriarch contains 2 or more comments with same coordinates

    - #### removeShape

          public boolean removeShape(HSSFShape shape)

      Description copied from interface: `HSSFShapeContainer`
      remove first level shapes
      Specified by:
        `removeShape` in interface `HSSFShapeContainer`
      Parameters:
        `shape` - to be removed
      Returns:
        true of shape is removed

    - #### createGroup

          public HSSFShapeGroup createGroup(HSSFClientAnchor anchor)

      Creates a new group record stored under this patriarch.
      Parameters:
        `anchor` - the client anchor describes how this group is attached to the sheet.
      Returns:
        the newly created group.

    - #### createSimpleShape

          public HSSFSimpleShape createSimpleShape(HSSFClientAnchor anchor)

      Creates a simple shape. This includes such shapes as lines, rectangles, and ovals. Note: Microsoft Excel seems to sometimes disallow higher y1 than y2 or higher x1 than x2 in the anchor, you might need to reverse them and draw shapes vertically or horizontally flipped!
      Parameters:
        `anchor` - the client anchor describes how this group is attached to the sheet.
      Returns:
        the newly created shape.

    - #### createPicture

          public HSSFPicture createPicture(HSSFClientAnchor anchor,
                                           int pictureIndex)

      Creates a picture.
      Parameters:
        `anchor` - the client anchor describes how this group is attached to the sheet.
        `pictureIndex` - - pointer to the byte array saved inside workbook in escher bse record
      Returns:
        the newly created shape.

    - #### createPicture

          public HSSFPicture createPicture(ClientAnchor anchor,
                                           int pictureIndex)

      Description copied from interface: `Drawing`
      Creates a picture.
      Specified by:
        `createPicture` in interface `Drawing<HSSFShape>`
      Parameters:
        `anchor` - the client anchor describes how this picture is attached to the sheet.
        `pictureIndex` - the index of the picture in the workbook collection of pictures.
      Returns:
        newly created shape

    - #### createObjectData

          public HSSFObjectData createObjectData(ClientAnchor anchor,
                                                 int storageId,
                                                 int pictureIndex)

      Description copied from interface: `Drawing`
      Adds a new OLE Package Shape
      Specified by:
        `createObjectData` in interface `Drawing<HSSFShape>`
      Parameters:
        `anchor` - the client anchor describes how this picture is attached to the sheet.
        `storageId` - the storageId returned by `Workbook.addOlePackage(byte[], String, String, String)`
        `pictureIndex` - the index of the picture (used as preview image) in the workbook collection of pictures.
      Returns:
        newly created shape

    - #### createPolygon

          public HSSFPolygon createPolygon(HSSFClientAnchor anchor)

      Creates a polygon
      Parameters:
        `anchor` - the client anchor describes how this group is attached to the sheet.
      Returns:
        the newly created shape.

    - #### createTextbox

          public HSSFTextbox createTextbox(HSSFClientAnchor anchor)

      Constructs a textbox under the patriarch.
      Parameters:
        `anchor` - the client anchor describes how this group is attached to the sheet.
      Returns:
        the newly created textbox.

    - #### createComment

          public HSSFComment createComment(HSSFAnchor anchor)

      Constructs a cell comment.
      Parameters:
        `anchor` - the client anchor describes how this comment is attached to the sheet.
      Returns:
        the newly created comment.

    - #### createCellComment

          public HSSFComment createCellComment(ClientAnchor anchor)

      Description copied from interface: `Drawing`
      Creates a comment.
      Specified by:
        `createCellComment` in interface `Drawing<HSSFShape>`
      Parameters:
        `anchor` - the client anchor describes how this comment is attached to the sheet.
      Returns:
        the newly created comment.

    - #### getChildren

          public java.util.List<HSSFShape> getChildren()

      Returns a unmodifiable list of all shapes contained by the patriarch.
      Specified by:
        `getChildren` in interface `HSSFShapeContainer`
      Returns:
        Any children contained by this shape.

    - #### addShape

          @Internal
          public void addShape(HSSFShape shape)

      add a shape to this drawing
      Specified by:
        `addShape` in interface `HSSFShapeContainer`

    - #### countOfAllChildren

          public int countOfAllChildren()

      Total count of all children and their children's children.
      Returns:
        count of shapes including shapes inside shape groups

    - #### setCoordinates

          public void setCoordinates(int x1,
                                     int y1,
                                     int x2,
                                     int y2)

      Sets the coordinate space of this group. All children are constrained to these coordinates.
      Specified by:
        `setCoordinates` in interface `HSSFShapeContainer`

    - #### clear

          public void clear()

      remove all shapes inside patriarch
      Specified by:
        `clear` in interface `HSSFShapeContainer`

    - #### containsChart

          public boolean containsChart()

      Does this HSSFPatriarch contain a chart? (Technically a reference to a chart, since they get stored in a different block of records) FIXME - detect chart in all cases (only seems to work on some charts so far)

    - #### getX1

          public int getX1()

      Specified by:
        `getX1` in interface `HSSFShapeContainer`
      Returns:
        x coordinate of the left up corner

    - #### getY1

          public int getY1()

      Specified by:
        `getY1` in interface `HSSFShapeContainer`
      Returns:
        y coordinate of the left up corner

    - #### getX2

          public int getX2()

      Specified by:
        `getX2` in interface `HSSFShapeContainer`
      Returns:
        x coordinate of the right down corner

    - #### getY2

          public int getY2()

      Specified by:
        `getY2` in interface `HSSFShapeContainer`
      Returns:
        y coordinate of the right down corner

    - #### getBoundAggregate

          @Internal
          public EscherAggregate getBoundAggregate()

      Returns the aggregate escher record we're bound to
      Returns:
        - low level representation of sheet drawing data

    - #### createAnchor

          public HSSFClientAnchor createAnchor(int dx1,
                                               int dy1,
                                               int dx2,
                                               int dy2,
                                               int col1,
                                               int row1,
                                               int col2,
                                               int row2)

      Creates a new client anchor and sets the top-left and bottom-right coordinates of the anchor.
      Specified by:
        `createAnchor` in interface `Drawing<HSSFShape>`
      Parameters:
        `dx1` - the x coordinate in EMU within the first cell.
        `dy1` - the y coordinate in EMU within the first cell.
        `dx2` - the x coordinate in EMU within the second cell.
        `dy2` - the y coordinate in EMU within the second cell.
        `col1` - the column (0 based) of the first cell.
        `row1` - the row (0 based) of the first cell.
        `col2` - the column (0 based) of the second cell.
        `row2` - the row (0 based) of the second cell.
      Returns:
        the newly created client anchor

    - #### iterator

          public java.util.Iterator<HSSFShape> iterator()

      Specified by:
        `iterator` in interface `java.lang.Iterable<HSSFShape>`

    - #### getSheet

          protected HSSFSheet getSheet()

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