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;