The general problem of saving pointers to objects in the file format is solved in ordinary fashion by giving objects unique identifiers, which are saved in the file format in place of the pointer values. At load time, these IDs are converted back into pointers.
The most common instances of this are pointers to shapes, which are saved as shape IDs, or SPIDs. SPIDs are unique per drawing group, and are parceled out by the drawing group to individual drawings in blocks of 1024. The drawing group keeps a table recording which drawing owns which block of SPIDs, so that, given a SPID, it is easy to determine which drawing the shape is in. That table makes up the bulk of the msofbtDgg record, and is the only place where pointers to drawings are saved (as DGIDs).
Record Name | Word | Excel | PowerPoint | FBT value | Version | Instance | Contents | ||
msofbtDggContainer | X | X | X | F000 | per-document data | ||||
msofbtDgg | X | X | X | F006 | 0 | an FDGG and several FIDCLs | |||
msofbtCLSID | C | C | C | F016 | 0 | the CLSID of the application that put the data on the clipboard | |||
msofbtOPT | X | X | X | F00B | 3 | count of properties | the document-wide default shape properties | ||
msofbtColorMRU | X | X | X | F11A | 0 | count of colors | the colors in the MRU swatch | ||
msofbtSplitMenuColors | X | X | X | F11E | 0 | count of colors | the colors in the top-level split menus | ||
msofbtBstoreContainer | X | X | X | F001 | count of BLIPs | all images in the document (JPEGs, metafiles, etc.) | |||
msofbtBSE | X | X | X | F007 | 2 | BLIP type | an FBSE (one per BLIP) | ||
msofbtBlip*** | X | X | X | F018 - F117 | range of fbts reserved for various kinds of BLIPs | ||||
msofbtDgContainer | X | X | X | F002 | per-sheet/page/slide data | ||||
msofbtDg | X | X | X | F008 | 0 | drawing ID | an FDG | ||
msofbtRegroupItems | X | X | X | F118 | 0 | count of regroup entries | several FRITs | ||
msofbtColorScheme | C | C | F120 | 0 | count of colors | the colors of the source host's color scheme | |||
msofbtSpgrContainer | X | X | X | F003 | several SpContainers, the first of which is the group shape itself | ||||
msofbtSpContainer | X | X | X | F004 | a shape | ||||
msofbtSpgr | X | X | X | F009 | 1 | an FSPGR; only present if the shape is a group shape | |||
msofbtSp | X | X | X | F00A | 2 | shape type | an FSP | ||
msofbtOPT | X | X | X | F00B | 3 | count of properties | a shape property table | ||
msofbtTextbox | C | C | C | F00C | 0 | RTF text | |||
msofbtClientTextbox | X | X | X | F00D | host-defined | the text in the textbox, in a host-defined format | |||
msofbtAnchor | C | C | C | F00E | 0 | a RECT, in 100000ths of an inch | |||
msofbtChildAnchor | X | X | X | F00F | 0 | a RECT, in units relative to the parent group | |||
msofbtClientAnchor | X | X | X | F010 | host-defined | the location of the shape, in a host-defined format | |||
msofbtClientData | X | X | X | F011 | host-defined | host-specific data | |||
msofbtOleObject | C | C | C | F11F | 0 | a serialized IStorage for an OLE object | |||
msofbtDeletedPspl | X | F11D | 0 | an FPSPL; only present in top-level deleted shapes | |||||
msofbtSolverContainer | X | X | X | F005 | count of rules | the rules governing shapes | |||
msofbtConnectorRule | X | X | F012 | 1 | an FConnectorRule | ||||
msofbtAlignRule | X | X | X | F013 | 0 | an FAlignRule | |||
msofbtArcRule | X | X | X | F014 | 0 | an FARCRU | |||
msofbtClientRule | F015 | host-defined | host-defined | ||||||
msofbtCalloutRule | X | X | X | F017 | 0 | an FCORU | |||
msofbtSelection | X | F119 | 0 | an FDGSL followed by the SPIDs of the shapes in the selection |