Drawing Group Record msofbtDgg

The drawing group record is a variable length record consisting of a fixed part followed by an array. The fixed part is defined as follows.

// FDGG - File DGG
typedef struct _FDGG
   {
   MSOSPID spidMax; // The current maximum shape ID
   ULONG cidcl;     // The number of ID clusters (FIDCLs) 
   ULONG cspSaved;  // The total number of shapes saved
                    // (including deleted shapes, if undo
                    // information was saved)
   ULONG cdgSaved;  // The total number of drawings saved
   } FDGG;

The fixed part is followed by an array of ID clusters. The ID clusters are used internally for the translation of shape ids (SPIDs) to shape handles (MSOHSPs).

// File ID Cluster - used to save IDCLs
typedef struct _FIDCL
   {
   MSODGID dgid;    // DG owning the SPIDs in this cluster
   ULONG cspidCur;  // number of SPIDs used so far
   } FIDCL;