office art object

An office art object is represented in the document stream as a special character, an ASCII 8, which has chp.fSpec set to 1 for the run of text containing the character . Only main documents and header documents contain office art objects. The native data for the office art object may be obtained by taking the CP for the special character and using this to find the corresponding entry in the plcspa. An entry in this plc consists of a FSPA structure, which is described elsewhere in this document.

Office art objects can have text attached to them. Text for the textboxes is stored separately in the textbox subdocument of the main or header document. The textbox subdocument contains a plctxbxs where the text from CP n to CP n+1 in the subdocument is the text which is contained in a textbox as specified in the TXBXS structure for this nth entry in the plctxbxs. Textboxes can be linked in chains of up to 32 textboxes. Ordering of textboxes in the subdocument is completely unrelated to the document structure due to the nature of textbox linking. To find the text for a given office art object, the TXID property (a long: high word is itxbxs+1, low word is the sequence number) must be fetched from the office art data for the shape. This contains an index (itxbxs) into plctxbxs and a sequence number in the chain of linked textboxes. The text for the entire chain of linked textboxes is stored from the CP itxbxs to CP itxbxs+1 of plctxbxs. The plctxbxBkd describes the "page table" within textbox stories (where the textboxes in each linked textbox chain are thought of as "pages"). So, for each entry in the plctxbxs there is a corresponding entry in the plctxbxBkd at the same CP, and there may be additional entries in the plctxbxBkd to describe the breaks from one textbox to the next in linked textbox chains.

Note: In this document, bit 0 is the low-order bit. Structures are described as they would be declared in C for the Intel architecture. When numbering bytes in a word from low offset towards high offset, two-byte integers will have their least significant eight bits stored in byte 0 and most significant eight bits in byte 1. If bit 31 is the most significant bit in a four-byte integer, bits 31 through 24 will be stored in byte 3 of a four-byte integer, bits 23 through 16 will be stored in byte 2, bits 15 through 8 will be stored in byte 1, and bits 7 through 0 will be stored in byte 0.