org.apache.poi.ddf

## Class EscherDggRecord

- java.lang.Object
- - org.apache.poi.ddf.EscherRecord
  - - org.apache.poi.ddf.EscherDggRecord

- All Implemented Interfaces:
    Duplicatable, GenericRecord

      public final class EscherDggRecord
      extends EscherRecord

  This record defines the drawing groups used for a particular sheet.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `EscherDggRecord.FileIdCluster`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static short` | `RECORD_ID`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EscherDggRecord()`
    `EscherDggRecord(EscherDggRecord other)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `EscherDggRecord.FileIdCluster` | `addCluster(int dgId, int numShapedUsed)` Add a new cluster
    `EscherDggRecord.FileIdCluster` | `addCluster(int dgId, int numShapedUsed, boolean sort)` Add a new cluster
    `int` | `allocateShapeId(EscherDgRecord dg, boolean sort)` Allocates new shape id for the drawing group
    `EscherDggRecord` | `copy()`
    `int` | `fillFields(byte[] data, int offset, EscherRecordFactory recordFactory)` The contract of this method is to deserialize an escher record including it's children.
    `short` | `findNewDrawingGroupId()` Finds the next available (1 based) drawing group id
    `int` | `getDrawingsSaved()` Gets the number of drawings saved
    `EscherDggRecord.FileIdCluster[]` | `getFileIdClusters()`
    `java.util.Map<java.lang.String,java.util.function.Supplier<?>>` | `getGenericProperties()`
    `java.lang.Enum` | `getGenericRecordType()`
    `int` | `getMaxDrawingGroupId()` Gets the maximum drawing group ID
    `int` | `getNumIdClusters()` Number of id clusters + 1
    `int` | `getNumShapesSaved()` Gets the number of shapes saved
    `short` | `getRecordId()` Return the current record id.
    `java.lang.String` | `getRecordName()` Subclasses should return the short name for this escher record.
    `int` | `getRecordSize()` Subclasses should effeciently return the number of bytes required to serialize the record.
    `int` | `getShapeIdMax()` Gets the next available shape id
    `int` | `serialize(int offset, byte[] data, EscherSerializationListener listener)` Serializes the record to an existing byte array.
    `void` | `setDrawingsSaved(int drawingsSaved)` Sets the number of drawings saved
    `void` | `setFileIdClusters(EscherDggRecord.FileIdCluster[] fileIdClusters)` Sets the file id clusters
    `void` | `setNumShapesSaved(int numShapesSaved)` Sets the number of shapes saved
    `void` | `setShapeIdMax(int shapeIdMax)` The maximum is actually the next available shape id.

    - ### Methods inherited from class org.apache.poi.ddf.EscherRecord

      `clone, display, fillFields, getChild, getChildRecords, getGenericChildren, getInstance, getOptions, getVersion, isContainerRecord, readHeader, readInstance, serialize, serialize, setChildRecords, setInstance, setOptions, setRecordId, setVersion, toString, toXml, toXml`

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

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

- - ### Field Detail

    - #### RECORD_ID

          public static final short RECORD_ID

  - ### Constructor Detail

    - #### EscherDggRecord

          public EscherDggRecord()

    - #### EscherDggRecord

          public EscherDggRecord(EscherDggRecord other)

  - ### Method Detail

    - #### fillFields

          public int fillFields(byte[] data,
                                int offset,
                                EscherRecordFactory recordFactory)

      Description copied from class: `EscherRecord`
      The contract of this method is to deserialize an escher record including it's children.
      Specified by:
        `fillFields` in class `EscherRecord`
      Parameters:
        `data` - The byte array containing the serialized escher records.
        `offset` - The offset into the byte array.
        `recordFactory` - A factory for creating new escher records.
      Returns:
        The number of bytes written.

    - #### serialize

          public int serialize(int offset,
                               byte[] data,
                               EscherSerializationListener listener)

      Description copied from class: `EscherRecord`
      Serializes the record to an existing byte array.
      Specified by:
        `serialize` in class `EscherRecord`
      Parameters:
        `offset` - the offset within the byte array
        `data` - the data array to serialize to
        `listener` - a listener for begin and end serialization events. This is useful because the serialization is hierarchical/recursive and sometimes you need to be able break into that.
      Returns:
        the number of bytes written.

    - #### getRecordSize

          public int getRecordSize()

      Description copied from class: `EscherRecord`
      Subclasses should effeciently return the number of bytes required to serialize the record.
      Specified by:
        `getRecordSize` in class `EscherRecord`
      Returns:
        number of bytes

    - #### getRecordId

          public short getRecordId()

      Description copied from class: `EscherRecord`
      Return the current record id.
      Overrides:
        `getRecordId` in class `EscherRecord`
      Returns:
        The 16 bit record id.

    - #### getRecordName

          public java.lang.String getRecordName()

      Description copied from class: `EscherRecord`
      Subclasses should return the short name for this escher record.
      Specified by:
        `getRecordName` in class `EscherRecord`
      Returns:
        the short name for this escher record

    - #### getShapeIdMax

          public int getShapeIdMax()

      Gets the next available shape id
      Returns:
        the next available shape id

    - #### setShapeIdMax

          public void setShapeIdMax(int shapeIdMax)

      The maximum is actually the next available shape id.
      Parameters:
        `shapeIdMax` - the next available shape id

    - #### getNumIdClusters

          public int getNumIdClusters()

      Number of id clusters + 1
      Returns:
        the number of id clusters + 1

    - #### getNumShapesSaved

          public int getNumShapesSaved()

      Gets the number of shapes saved
      Returns:
        the number of shapes saved

    - #### setNumShapesSaved

          public void setNumShapesSaved(int numShapesSaved)

      Sets the number of shapes saved
      Parameters:
        `numShapesSaved` - the number of shapes saved

    - #### getDrawingsSaved

          public int getDrawingsSaved()

      Gets the number of drawings saved
      Returns:
        the number of drawings saved

    - #### setDrawingsSaved

          public void setDrawingsSaved(int drawingsSaved)

      Sets the number of drawings saved
      Parameters:
        `drawingsSaved` - the number of drawings saved

    - #### getMaxDrawingGroupId

          public int getMaxDrawingGroupId()

      Gets the maximum drawing group ID
      Returns:
        The maximum drawing group ID

    - #### getFileIdClusters

          public EscherDggRecord.FileIdCluster[] getFileIdClusters()

      Returns:
        the file id clusters

    - #### setFileIdClusters

          public void setFileIdClusters(EscherDggRecord.FileIdCluster[] fileIdClusters)

      Sets the file id clusters
      Parameters:
        `fileIdClusters` - the file id clusters

    - #### addCluster

          public EscherDggRecord.FileIdCluster addCluster(int dgId,
                                                          int numShapedUsed)

      Add a new cluster
      Parameters:
        `dgId` - id of the drawing group (stored in the record options)
        `numShapedUsed` - initial value of the numShapedUsed field
      Returns:
        the new `EscherDggRecord.FileIdCluster`

    - #### addCluster

          public EscherDggRecord.FileIdCluster addCluster(int dgId,
                                                          int numShapedUsed,
                                                          boolean sort)

      Add a new cluster
      Parameters:
        `dgId` - id of the drawing group (stored in the record options)
        `numShapedUsed` - initial value of the numShapedUsed field
        `sort` - if true then sort clusters by drawing group id.( In Excel the clusters are sorted but in PPT they are not)
      Returns:
        the new `EscherDggRecord.FileIdCluster`

    - #### findNewDrawingGroupId

          public short findNewDrawingGroupId()

      Finds the next available (1 based) drawing group id
      Returns:
        the next available drawing group id

    - #### allocateShapeId

          public int allocateShapeId(EscherDgRecord dg,
                                     boolean sort)

      Allocates new shape id for the drawing group
      Parameters:
        `dg` - the EscherDgRecord which receives the new shape
        `sort` - if true then sort clusters by drawing group id.( In Excel the clusters are sorted but in PPT they are not)
      Returns:
        a new shape id.

    - #### getGenericRecordType

          public java.lang.Enum getGenericRecordType()

    - #### getGenericProperties

          public java.util.Map<java.lang.String,java.util.function.Supplier<?>> getGenericProperties()

      Specified by:
        `getGenericProperties` in interface `GenericRecord`
      Overrides:
        `getGenericProperties` in class `EscherRecord`

    - #### copy

          public EscherDggRecord copy()

      Specified by:
        `copy` in interface `Duplicatable`
      Specified by:
        `copy` in class `EscherRecord`
      Returns:
        a deep copy of the implementing class / instance

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