Hierarchic frames
A 'Hierarchic frame' is a data structure for representing the inclusion of user objects inside other user objects. FIG. 6 shows the fields of such structure 600, which contains an identifier of the framer (Framer_ID) 610 that controls the frame, a Locator 370 of the object enclosed by the frame, a Position 620 for specifying the position of the frame within a “parent” frame (another frame that contains this frame), a list of other hierarchic frames 630 that are internal to this frame, and a set of {format fields} 640 that may configure the shape and layout of the content of the referred object within the available space of this frame.
Every user object has an essential frame, which is the frame that encloses the object itself, and is defined in the field 380 of the user object structure 310 of FIG. 3. However, each user object can be enclosed in other internal frames, i.e. inside other objects. This is possible due to the hierarchy defined by the list of internal frames, graphically expressed in FIG. 6 as a reflexive arrow 650. The list includes the frames that enclose the objects inserted in the “top” object, but each internal frame can define its own list of internal frames for other objects inserted within the “child” objects, and so on. This mechanism provides for the definition of a hierarchical structure of inserted objects.
Moreover, it must be noticed that each hierarchical structure is different at each occurrence of the same object. For example, one image object may contain a text object in its essential frame, but it is perfectly possible that the same image is inserted into a third object and, within the frame hierarchy of the third object, the image may contain the same text object, a different text object, other objects or none objects at all, because the list of internal frames of the third object is completely independent from the list of internal frames of the essential frame of the image object.
FIG. 7 illustrates an example of a compound object, the essential frame of which is labeled as “Frame 0” 700. This object contains an image object within “Frame 0.1” 710, a text object within “Frame 0.2” 720, a table object within “Frame 0.3” 730, and another text object within “Frame 0.4” 740. At the same time, internal frames 710 and 740 contain the same text object enclosed in respective second-level internal frames “Frame 0.1.1” 715 and “Frame 0.4.1” 745.
FIG. 8 is a graphical representation of the hierarchic frame structures corresponding to the example in FIG. 7. The “root” frame 800 does not define any position (null) because it is an essential frame, but defines the list of internal frames containing the structures for frames 0.1 810, 0.2 820, 0.3 830 and 0.4 840. The frames 0.1.1 815 and 0.4.1 845 are included in the corresponding internal frame lists of frames 810 and 840. It is also represented the reference to the image object 850 and to the text object 860 by the locators of the respective enclosing frames.
Since every frame structure can set different values for the {other fields} attributes, the end user will be able to assign different formatting options to the same object inserted in several places. This is the case of the text object 860, which is formatted with two different text styles while the text content keeps invariant.