Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
6161114
King , ; et al.
December 12, 2000
Title
Design engine for fitting content to a medium
Abstract
A method of fitting content elements of a composition to a media layout is disclosed. Each content element has an associated content type, and the media layout has a content rendering space for presenting information contained in the content elements. For each content type, a content scale factor is initialized and extent values are computed. If the content elements do not fit within the media layout, then non-fit factors are determined, the scale factors and extent values are recomputed and these steps are repeated until the content fits. Another method computes a layout of a composition in a recursive fashion using a design tree. Design children components of a current component in the design tree are identified, and new media components between the current component and the identified design children components are created. A media division for each media component indicates a portion of the layout for each media component. Another method computes a layout of a composition for a chosen medium. The composition is represented in a media tree that has components, each associated with a media region of the chosen medium. The method steps down through the media tree of the composition and assigns tentative media regions to each of the components. The extent of each of the components is measured to return a set of values indicating a media region of the medium that is required by each of the components. Finally, the method steps up through the media tree of the composition and assigns new media regions to each of the components.
Inventors:
King; Joseph D.
(Seattle,
WA
)
, von Limbach; Geoffrey
(Seattle,
WA
)
, McDonald; Marc B.
(Mercer Island,
WA
)
, Orr; Michael B.
(Bainbridge Island,
WA
)
, Weil; Steven E.
(Bellevue,
WA
)
Assignee:
Design Intelligence, Inc.
(Seattle,
WA
)
Appl. No.:
291816
Filed:
April 14, 1999
Current U.S. Class:
715/517
715/500.1
Field of Search:
707/500-526,520,530,513,518,531,519 345/115,302-306,342,326
U.S. Patent Documents
5822587
October 1998
McDonald et al.
5860073
January 1999
Ferrel et al.
5956737
September 1999
King et al.
Other References
Bistream Inc., San Francisco, Sep. 10, 1996 "Archetype Launches NuDoc Technology", Press Release, http://www.bistream.com/news/press/1996/nudocpr.html.~
Primary Examiner:
Feild; Joseph H.
Assistant Examiner:
Kindred; Alford W.
Attorney, Agent or Firm:
Beyer Weaver & Thomas, LLP
Parent Case Text
This is a continuation application of copending prior application Ser. No. 08/709,633 filed on Sep. 9, 1996.
Claims
We claim:
1. A method of fitting content elements of a composition to a media layout, said media layout having a content rendering space for presenting information contained in said content elements, said method comprising:
a) grouping said content elements into a plurality of groups;
b) initializing content scale factors that are indicative of a relative portion of said content rendering space utilized by said content elements, each of said groups having an associated content scale factor;
c) computing extent values for said content elements using said content scale factors, said extent values indicating a portion of said content rendering space occupied by said content elements; and
d) determining whether said content elements fit within said content rendering space of said media layout, wherein when it is determined that said content elements do not fit within said media layout, said method further includes
determining associated non-fit factors for said groups of content elements,
recomputing said content scale factors for said groups of content elements based at least in part upon said determined non-fit factors,
recomputing said extent values for said content elements using the recomputed content scale factors.
2. A method as recited in claim 1 wherein said extent values indicate a region within said content rendering space of said media layout reserved for each associated content element.
3. A method as recited in claim 1 wherein said computing extent values includes:
assigning tentative extent values to each content element;
measuring each content element to determine its actual extent; and
assigning final extent values to each content element.
4. A method as recited in claim 1 wherein said computing extent values further includes
creating a media tree representative of said media layout, said media tree having media components and a media division associated with each media component.
5. A method as recited in claim 1 wherein said determining whether said content elements fit within said content rendering space of said media layout includes
comparing the combined extent values for said content elements to said content rendering space.
6. A method as recited in claim 1 further comprising:
repeating element (d) until it is determined that said content elements fit within said content rendering space of said media layout.
7. A method as recited in claim 1 further comprising:
displaying said content elements in said media layout, whereby said composition appears to a user as fitting in said content rendering space of said media layout.
8. A method as recited in claim 1 wherein said element of recomputing content scale factors is performed based upon heuristics.
9. A method as recited in claim 1 wherein said element of recomputing content scale factors for one of said groups is performed relative to another one of said groups.
10. A method of computing a layout of a composition in a recursive fashion using a design description, said design description including design components having associated content elements, said method comprising:
determining whether a current component of said design description is a primitive, wherein when it is determined that said current component is a primitive, returning an extent for said current component;
identifying design children components of said current component;
creating new media components between said current component and said identified design children components, each media component having an associated media division indicating a portion of said layout for each media component; and
solving for the media division of said current component in order to return an extent for said current component by recursively calling said method.
11. A method as recited in claim 10 wherein said creating new media components operates to create a media specification of said composition indicating said layout.
12. A method as recited in claim 11 wherein said media specification of said composition includes said media components and selected ones of said design components, each of said selected ones of said design components also having an associated media division.
13. A method as recited in claim 10 wherein said solving for the media division of said current component includes:
assigning tentative media regions to child media components of said current component;
determining extent values for a content element associated with each of said child media components;
assigning final extent values to said content elements; and
combining said final extent values to determine said extent for said current component.
14. A method as recited in claim 10 further comprising:
displaying said content elements in said layout using said media components, whereby said composition appears to a user in said layout.
15. A method of computing a layout of a composition for a chosen medium, said composition at least partially represented in a media specification, said media specification having a plurality of components and each component associated with a media region of said chosen medium, said method comprising:
assigning a layout option to said composition, said layout option indicative of an arrangement for assigning media regions of said medium to said associated components;
stepping down through said media specification of said composition and assigning tentative media regions to each of said components, said tentative media regions based in part upon said layout option;
measuring the extent of said components to return a set of values for each component indicating a media region of said medium required by each component; and
stepping up through said media specification of said composition and assigning new media regions to each of said components, each of said new media regions based in part upon said returned set of values for each component, whereby said new media regions of said components represent substantially said layout of said composition in said chosen medium.
16. A method as recited in claim 15 wherein said stepping down through said media specification and stepping up through said media specification are performed in a recursive fashion.
17. A method as recited in claim 15 wherein said composition is at least partially represented in a design description including selected ones of said components, and said stepping down through said media specification is performed by stepping down through said design description and creating components of said media specification.
18. A method a recited in claim 15 wherein said composition includes a plurality of content elements each in association with one of said components, and said measuring the extent of said components includes
measuring the extent of the content element associated with one of said components.
19. A method as recited in claim 15 further comprising:
displaying said components in said chosen medium using said new media regions, whereby said composition appears to a user in said layout.
20. A method of fitting a composition to a media layout, said method comprising:
a) receiving a plurality content elements that contain information to be presented in said media layout, said content elements being associated with particular regions of said media layout;
b) initializing scale factors, each scale factor being associated with a region of said media layout;
c) computing extent values for said content elements using the scale factor for the region in which the content element is located, said extent values indicating a portion of said media layout occupied by said content elements;
d) determining whether said content elements fit within said media layout, wherein when it is determined that said content elements do not fit within said media layout, said method further includes
recomputing said scale factors for said regions, and
recomputing said extent values for said content elements using the recomputed content scale factors;
e) displaying said content elements in said media layout, whereby said composition appears to a user as fitting in said media layout.
21. A method as recited in claim 20 further comprising:
repeating element (d) until it is determined that said content elements fit within said media layout.
22. A computer-readable medium comprising computer code for fitting content elements of a composition to a media layout, said media layout having a content rendering space for presenting information contained in said content elements, said computer code of said computer-readable medium effecting the following:
a) grouping said content elements into a plurality of groups;
b) initializing content scale factors that are indicative of a relative portion of said content rendering space utilized by said content elements, each of said groups having an associated content scale factor;
c) computing extent values for said content elements using said content scale factors, said extent values indicating a portion of said content rendering space occupied by said content elements; and
d) determining whether said content elements fit within said content rendering space of said media layout, wherein when it is determined that said content elements do not fit within said media layout, said method further includes
determining associated non-fit factors for said groups of content elements,
recomputing said content scale factors for said groups of content elements based at least in part upon said determined non-fit factors,
recomputing said extent values for said content elements using the recomputed content scale factors.
23. A computer-readable medium comprising computer code for computing a layout of a composition for a chosen medium, said composition at least partially represented in a media specification, said media specification having a plurality of components and each component associated with a media region of said chosen medium, said computer code of said computer-readable medium effecting the following:
assigning a layout option to said composition, said layout option indicative of an arrangement for assigning media regions of said medium to said associated components;
stepping down through said media specification of said composition and assigning tentative media regions to each of said components, said tentative media regions based in part upon said layout option;
measuring the extent of said components to return a set of values for each component indicating a media region of said medium required by each component; and
stepping up through said media specification of said composition and assigning new media regions to each of said components, each of said new media regions based in part upon said returned set of values for each component, whereby said new media regions of said components represent substantially said layout of said composition in said chosen medium.
24. A computer-readable medium comprising computer code for fitting a composition to a media layout, said computer code of said computer-readable medium effecting the following:
a) receiving a plurality content elements that contain information to be presented in said media layout, said content elements being associated with particular regions of said media layout;
b) initializing scale factors, each scale factor being associated with a region of said media layout;
c) computing extent values for said content elements using the scale factor for the region in which the content element is located, said extent values indicating a portion of said media layout occupied by said content elements;
d) determining whether said content elements fit within said media layout, wherein when it is determined that said content elements do not fit within said media layout, said method further includes
recomputing said scale factors for said regions, and
recomputing said extent values for said content elements using the recomputed content scale factors;
e) displaying said content elements in said media layout, whereby said composition appears to a user as fitting in said media layout.
Description
FIELD OF THE INVENTION
The present invention relates generally to the processing of data by a computer system. More specifically, the present invention relates to the fitting of content to a particular medium.
BACKGROUND OF THE INVENTION
Since the introduction of PC-based layout and publishing software in the late-1980's, the explosive growth of this market has underscored graphic design as a vital component of effective business communications. The information explosion has resulted in hundreds of messages--many enriched with clip art, custom illustrations, and scanned images--vying for attention across a wide variety of media (print, electronic, multimedia, etc.). Businesses have a significant need to visually differentiate their documents above the market noise. Pages that emphasize content with minimal attention to formatting, illustrations, layout, and visual appeal, will no longer attract the attention of increasingly sophisticated business audiences. Business users competing for readers' time now place a premium on creating and publishing graphically attractive communications.
The proliferation of software tools, ready-made content (e.g. on-line photo libraries and CD-ROM disks of clip art), and desktop peripherals (e.g. color printers and scanners), have made attractive content and output affordable for anyone with a personal computer. In addition, the Internet has had a profound impact on both the breadth of content and distribution opportunities. However, producing professional-quality materials for disparate media, including the Internet, requires design expertise, a variety of authoring tools, and advanced computer skills; a rare combination among most business people. Home and small business users in particular--already taxed for time to cover multiple business roles--seldom have the time or the tools needed to enhance their design and computer expertise.
To assist in the creation of materials, a number of word processing programs, desktop publishing tools, internet authoring tools and the like have been developed. Many of the word processing programs allow the user to include tables, columns and rudimentary graphics within a document, however, they are typically not designed to easily facilitate sophisticated document formatting. Desktop publishing tools can assist a user in preparing and formatting more sophisticated documents, as well as outputting the document onto a medium such as a printed page, a computer screen or other. However, current software publishing tools still require that the user manually change the layout and formatting or modify the content if the document needs to be output to a different media. Likewise, if the user wishes to change the design, or wishes to change the layout and formatting, the user must often manually modify the content of the document in order to fit the new design or layout. This manual modification of content or layout is time consuming and tedious for the user.
A variety of word-processing, desktop publishing, and Internet authoring applications claim to streamline document production. Each of these products partially succeeds, but with significant limitations. For example, current software publishing packages allow a user to author a document once, but do not allow the user to automatically publish to any desired format without some manual intervention by the user. For example, the Pagemaker software by Adobe Systems, Inc. is one approach to solving the problem of automating manual paste-up. Pagemaker can be used to create elaborate documents, as long as the user is already a skilled graphic designer. However, Pagemaker is unable to automatically turn text and pictures into sophisticated designs on its own. Likewise, the Adobe Acrobat software addresses the problem of imitating paper documents on screen. However, Acrobat still does not allow for automatic redesign or reformatting based upon changing an output media. The Internet Studio software available from Microsoft Corporation is able to take a document and to separate form from content. However, this software is only capable of producing Web pages. If the user desires to take the same information and turn it into a different media such as a data sheet, a manual or a brochure, the user must manually do all of the reformatting his or herself.
In addition to the inability to automatically adjust content and/or design for a desired media, prior art software tools typically only provide a two-way separation between the form and content of a document. In these prior art tools, content structure is typically related to the output media, and the content structure is also tagged as to how it should be presented in the output media. This presents problems when the same content must be rendered in different output media. In addition, other software tools may be able to render a document into a different media, but are unable to maintain the original design and the relationship between the content elements of that original design.
Also, SGML-based tools and style sheet tools (included with many word processors and desktop publishing tools) may allow the intent of content structures to be recorded as tags, but do not allow a specific design to saved and reused, and automatically rendered to a medium. Also, database packages, other forms packages, report packages and "long document" systems (such as Interleaf) have a variety of drawbacks. They do not provide computation-intensive solutions to a design problem such as global fitting, flexible design changes or media changes. They do not support rich design structures, nor do they support interactive experimentation. Also, they do not allow for repurposing/multipurposing among different media.
Therefore, it would be desirable for a user to be able to author a document once, and then have a system to adapt the content to be able to fit a variety of media based upon changes to either the content or to the design.
SUMMARY OF THE INVENTION
An embodiment of the present invention provides for a three-way separation of the information in a document. In a particular embodiment, the document is separated into its content, design and media aspects. Through this representation, an embodiment of the present invention is better able to support automatic rendering to multiple forms of media. For example, embodiments of the present invention support the automatic integration, composition and layout of content from multiple sources into intelligent dynamic document templates instantly publishable in media such as print, Intranet, Internet, and in an OLE embedding.
In one embodiment, a method fits content elements of a composition to a media layout. Each content element has an associated content type, and the media layout has a content rendering space for presenting information contained in the content elements. For each content type, a content scale factor is initialized that is indicative of a portion of the content rendering space utilized by the content type. Also for each content element, extent values are computed using the content scale factors. The extent values are indicative of a portion of the content rendering space occupied by the content clement. It is determined whether the content elements fit within the content rendering space of the media layout. If the content elements do not fit within the media layout, then further steps may be performed. These steps include the following. For each content type, determining an associated non-fit factor, recomputing the content scale factors for each content type based at least in part upon the non-fit factors, recomputing the extent values for each content element using the recomputed content scale factors, determining whether the content elements now fit in the content rendering space of the media layout, and repeating these steps until it is determined that the content elements fit within the content rendering space of the media layout.
In another embodiment, a method computes a layout of a composition in a recursive fashion using a design tree. The design tree includes design components each with associated content elements. As a terminating condition, it is determined whether a current component of the design tree is a primitive. If it is a primitive, the extent for the current component is returned. Design children components of the current component are identified, and new media components between the current component and the identified design children components are created. Each media component has an associated media division that indicates a portion of the layout for each media component. A next step solves for the media division of the current component in order to return an extent for the current component by recursively calling the method.
In another embodiment, a method computes a layout of a composition for a chosen medium. The composition is at least partially represented in a media tree that has components, each component is associated with a media region of the chosen medium. Initially, a layout option is assigned to the composition. The layout option is indicative of an arrangement for assigning media regions of the medium to the components. One step relates to stepping down through the media tree of the composition and assigning tentative media regions to each of the components. The tentative media regions are based in part upon the layout option. Another step involves measuring the extent of each of the components to return a set of values indicating a media region of the medium that is required by each of the components. A further step involves stepping up through the media tree of the composition and assigning new media regions to each of the components. Each of the new media regions is based in part upon the returned set of values for each component. The new media regions of the components represent substantially the layout of the composition in the chosen medium .
BRIEF DESCRIPTION OF THE DRAWINGS
The invention, together with further advantages thereof, may best be understood by reference to the following description taken in conjunction with the accompanying drawings in which:
FIG. 1 shows diagrammatically how an embodiment of the present invention may be used to input content elements, a design description and a media specification in order to produce a new information presentation.
FIG. 1a is first example of a user interface for a travel brochure according to one embodiment of the present invention.
FIG. 1b is second example of a user interface for a travel brochure according to one embodiment of the present invention.
FIG. 1c is third example of a user interface for a travel brochure according to one embodiment of the present invention.
FIG. 1d is fourth example of a user interface for a travel brochure according to one embodiment of the present invention.
FIG. 2 illustrates an embodiment of the present invention in which a saved document is input and composed for a particular medium in order that it may be rendered in a particular information presentation.
FIG. 3 illustrates various types and functions of content, design and media.
FIG. 4 illustrates examples of possible design components in a component class derivation tree according to one embodiment of the present invention.
FIG. 5a illustrates symbolically the internal structure of a composition in an embodiment of the present invention in which the composition is represented by a content facet tree, a media facet tree and a design facet tree.
FIG. 5b illustrates in greater detail the composition of FIG. 5a.
FIG. 6 illustrates an example of how structured text may be represented in one embodiment of the present invention by using content, design and media facets.
FIG. 6a illustrates another example of how a list item of a memo may be represented in one embodiment of the present invention by using content, design and media facets in a containment relationship.
FIG. 7 shows in detail the footer component of FIG. 6 having various properties that are represented in a content facet, a design facet and a media facet.
FIG. 8 illustrates an example blank brochure composition rendered for paper media.
FIG. 9 shows an example brochure having two products that is rendered for paper media.
FIG. 10 shows the brochure of FIG. 9 to which another product has been added.
FIG. 11 shows the brochure of FIG. 9 after the design has been changed.
FIGS. 12a, 12b and 12c show the brochure of FIG. 9 after it has been rendered to HTML media.
FIG. 13 illustrates an embodiment of the content tree for the brochure of FIG. 9.
FIG. 14 illustrates an embodiment of the design tree for the brochure of FIG. 9.
FIG. 15 represents an embodiment of the media tree for the brochure of FIG. 9 rendered for paper media.
FIG. 16 illustrates an embodiment of the media tree for the brochure of FIG. 9 rendered for HTML media.
FIG. 17 illustrates in more detail a particular component from the HTML media tree of FIG. 16.
FIG. 18 illustrates in more detail an embodiment of the relationship between the content, design and media trees for various of the components of the brochure of FIG. 9.
FIG. 19 illustrates a process by which structured text may be added to a composition according to one embodiment of the present invention.
FIG. 20 illustrates an embodiment of the composition of FIG. 19 before the new structured text has been added.
FIG. 21 illustrates an embodiment of the composition of FIG. 19 after the new structured text has been added.
FIG. 22 illustrates an embodiment of a content drop table for a particular component.
FIG. 23a illustrates an example of a product layout in a particular brochure.
FIG. 23b is an embodiment of the design tree for the product layout of FIG. 23a.
FIG. 23c is an embodiment of the media tree for the product layout of FIG. 23a.
FIG. 23d shows the relationship between the design tree and the media tree for the product layout of FIG. 23a.
FIG. 24 illustrates an embodiment in which media division objects are associated with various components of the media tree of FIG. 23c.
FIGS. 25a-25f illustrate examples of possible geometries for a one-way media division.
FIGS. 26a-26h illustrate examples of possible geometries for a two-way media division.
FIGS. 27a-27e illustrate examples of possible geometries for a three-way media division.
FIGS. 28a-28e illustrate examples of possible geometries for an N-Way media division.
FIG. 29 is a flowchart illustrating a method suitable for adding new content to a composition according to one embodiment of the present invention.
FIG. 30 is a flowchart illustrating one embodiment of the match content step 512 of FIG. 29.
FIG. 31 is a flowchart illustrating one embodiment of the process match step 516 of FIG. 29.
FIG. 32 is a flowchart illustrating one embodiment of the place/replace steps 616 and 624 of FIG. 31.
FIG. 33 is a flowchart illustrating one embodiment of the fit content to media step of FIGS. 29, 37 and 38.
FIG. 34 is a flowchart illustrating one embodiment of the compute media tree step 708 from FIG. 33.
FIG. 35 is a flowchart illustrating one embodiment of the solve media division step 782 of FIG. 34.
FIG. 36 is a flowchart illustrating one embodiment of the recompute content scale factors step 720 of FIG. 33.
FIG. 37 is a flowchart illustrating a method of choosing a new design for a composition according to one embodiment of the present invention.
FIG. 38 is a flowchart illustrating a method of rendering a composition to a new medium according to one embodiment of the present invention.
FIG. 39 shows a typical computer system suitable for implementing various embodiments of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
The present invention relates to a number of features that facilitate automatic and dynamic composition and recomposition of program objects including design descriptions, content elements, and output media specifications. Unlike conventional word processing, desktop publishing or Web authoring software, the present invention dramatically improves document production in at least three ways. The present invention is able to automatically integrate a wide variety of types and combinations of content (e.g., text, pictures, data, graphics, OLE objects, video, sound, etc.). Also, the invention automatically performs document layout, styling and fit of specified content elements into a selected design. Additionally, the invention is able to automatically reformat the content to a new document type or design, to support a wide variety of distribution mechanisms, including, for example, the printed page, a computer screen presentation, as an OLE embedded object, or via the Internet as an HTML page. Various embodiments of the present invention use a combination of content, design and media features to improve document production.
In some embodiments, powerful content processing capabilities make assembly of content from a wide variety of resources (another disk, over a network, from the Internet, for example) as simple as executing a drag and drop action. These capabilities provides a significant benefit to the user by addressing two key user problems: (1) the frequent difficulty of incorporating data from disparate file formats; and (2) the awkward and time consuming content preparation work typically necessary in manually preparing multiformat content (e.g., removing program specific formatting commands and symbols).
Automatic layout and formatting may be also be performed using built-in graphic design expertise. Embodiments of the present invention will automatically fit content to the selected design (newsletter--modern, European, wired, traditional, etc.), represent it in the selected media view (printed page, screen, HTML, etc.), position text and graphics, change type specifications, jump stories, add pages, size graphics, or make other needed adjustments to the layout. If the user changes text or graphics schemes in the document, or even the overall design, the fit is automatically recalculated and necessary adjustments are made to format and/or style. These intelligent design features make it possible to deliver sophisticated design expertise to non-design professionals in "unbreakable documents". These features empower users to make design decisions based on what is appropriate and "looks good", rather than being constrained by their particular level of design or tools expertise.
The concept of "fit" also refers to every aspect of how a document is rendered to a particular medium. For example, various properties of content elements help to express the design of that element or of the overall document. These properties affect the layout/format of an element, although may not necessarily affect the overall layout of the whole document. In other words, even though these properties may not affect the overall "fit" of a document, the are nonetheless an aspect of design. Examples for text are: font size, typeface, italic, bold, underline, drop capitals, foreground and background colors, and inter-character/line spacing. Examples for images are: crop rectangle, pan position, zoom factor, bit mask and palette. Examples for general content are: borders, orientation, and serial/parallel arrangement of subcomponents.
Embodiments of the present invention also support automatic reformatting for multiple media outputs. A "Write Once--Publish Anywhere" work flow is supported by eliminating the complex tasks of totally reformatting or recreating a document for publication in an alternative medium (i.e. converting a printed newsletter into a graphically rich Internet document.) This media-intelligent automatic reformatting eliminates the need for a user to own multiple authoring tools for content assembly such as PageMaker, Express (from Quark, Inc.), Publisher (from Microsoft Corporation), Web and multimedia authoring tools, or other DTP applications. This automatic reformatting eliminates this need for multiple tools by automatically re-composing the output to a wide variety of media environments. Embodiments of the present invention allow any business user with basic computer skills to be able to quickly and easily produce professional-looking documents ready for a variety of media such as print, screen, the Internet, etc.
Embodiments of the present invention may be used within a variety of application programs. Turning now to FIG. 1, an embodiment of a use of the present invention is shown at 10. An application program 12 that embodies the present invention has a design engine module 14 and a facets engine module 16. The application program 12 also includes a user interface 18 which currently is presenting a composition 20. If the user wishes to modify the composition, the user may add new content elements, a new design description or a new media specification through the user interface or the like in order to be processed by the application program 12. Once the processing is complete, the application program outputs the new content, design and media to be presented through user interface 18'.
In this example, the user has added a new content element 22 that now appears on the user interface 18' to the right of the content element 20'. The user has also specified a new design description for the content elements. Content element 20' shown in user interface 18' now has a design in which the text appears below the image, instead of appearing to its right, as in the original content element 20 of user interface 18. It is also possible for the user to keep the content the same and modify either the design of the composition or the medium to which is output. Generally, a user may change one or all of the content, design and media aspects of the composition and have the composition be automatically adjusted by the application program 12.
The content elements that are added to the composition may be of any type and may take a wide variety of different forms. By way of example, representative types of content include text, images, data, graphics, OLE objects, video, sound and others. Also, these content elements may be dropped or located in any suitable manner at any location within the user interface. The design description specified by the user may also be of any kind. By way of example, the design specified by the user may be a custom design that the user has created through the use of the application program 12, or the design may come from a design template that is stored in a design catalogue of the application program 12. Many different types of designs are possible. By way of example, the user may specify a horizontal brochure format, a vertical brochure format, a single page or multi-page format, or other designs such as reports, newsletters, memos, home pages, white papers, schedules, programs, agendas, calendars, flyers, tables, catalogues, galleries, Web sites, maps, organizational charts, slides presentations, etc.
Additionally, the user may specify any desired medium to which the composition will be rendered. By way of example, a medium typically may be a sequence of screen pages of a computer, paper pages, a Web site on the Internet written in Hypertext Markup Language (HTML) or any other suitable language, a site on an Intranet system, or an OLE embedded object. Other types of media are possible as well. For example, the composition may be rendered to live HTML (perhaps incorporating JAVA applets, or Shockwave objects etc.), a multiple page OLE format, a multimedia format, a three-dimensional HTML format (VRML), an audio format, a TAPI format, a universal in-box format, or any abstract medium that may be the subject of further automated processing (such as data to be output to an Excel model that is not directly consumable by the user).
The user interface 18' illustrates an example of the application program 12 rendering the user specified content, design and media for a computer screen format. The composition may be rendered to the screen format in any suitable manner such as by standard window drivers and API's known in the art. The composition may be rendered to paper media by specifying regions on paper pages including formats and styles where content elements are to be printed. A composition may be rendered to HTML format by also specifying regions within Web pages including formats and styles where content elements are to be located, and by translating the information into the HTML language. The design of the composition contains knowledge of what HTML is able to express, thus allowing a translation into HTML. In other words, the expressible geometries available in an HTML format are included in the design facets of many components of a composition. This information may be inherited from particular prototype components of the system. A composition may be rendered to an OLE embedded object by using a standard set of published interfaces such as those available from Microsoft Corporation.
The application program 12 that includes the design engine module 14 may be any suitable application program that is able to take advantage of the capabilities of the design engine. Alternatively, the application program 12 may include an embodiment of the design engine 14, or may call a server application that includes or calls the design engine 14. By way of example, the application program 12 may perform an automatic, server-side generation of HTML pages or other presentations. This may be done dynamically without user intervention. And the content used may come from a database or other data source. In addition, the design engine of the present invention may be used with a wide variety of user interfaces, such as user interface
18.
The design engine 14 defines a composition framework and framework rules for representing documents and their components. The design engine 14 also contains a knowledge base of professional document and component designs commissioned specifically for this purpose. In one embodiment, the design engine models documents as deeply nested combinations of three dimensions: content elements, design descriptions and media specifications. The design engine manages these dimensions independently, resulting in more efficient, richer, more flexible and more automated interaction for a user creating documents. The design engine automatically adjusts the composition whenever the user changes any of these dimensions. With this capability, the design engine may use the same interface to support compositions that vary from printed materials and screen presentations to other media such as the World Wide Web.
The design engine takes as input content elements, a design description and a media specification, and is renders the content to the medium in accordance with the design description. The design engine is constructed such that it inherently has the capability to present the information in any one of a variety of media. Preferably, the design engine is built upon technology provided by the facets engine as described in U.S. Patent Application entitled "Method and System for Implementing Software Objects", Ser. No. 08/546,316 filed Oct. 20, 1995, by inventors Marc B. McDonald and Michael B. Orr, which is hereby incorporated by reference in its entirety. The facets engine provides an object-oriented platform upon which the design engine may be built. A brief explanation of the facets technology will now be provided below to assist the reader in understanding particular embodiments of the present invention. However, it should be appreciated that in other embodiments, the capabilities of the design engine may be implemented using a technology other than that provided by the facets engine.
FIGS. 1a, 1b, 1c, and 1d show examples of a user interface 18 as it might appear in conjunction with a "China Tours" brochure. FIG. 1a shows a user interface 25 having a list of available content on its left-hand side, along with a one page "China Tours" brochure having two photographs/destinations and accompanying text. FIG. 1b shows a similar user interface 26 in which a third photograph/destination and accompanying text (currently blank) has been added to the bottom of the one page brochure. The layout has been adjusted to accommodate all three photographs and text on one page. FIG. 1c shows a similar user interface 27 showing in detail a different design for the "China Tours" brochure in which a small logo (from the top of the brochure of FIG. 1a) now appears next to each photograph in the brochure. In this figure, each photograph now appears on its own page, such as might be presented in a Web page format. FIG. 1d shows a variation of a user interface 28 having available content on the left-hand side, and also a listing on the right-hand side of the hierarchy of the design for the brochure, and the associated content for each design component.
Facets Technology
As described in the above-referenced application "Method and System for Implementing Software Objects", the use of facets eliminates significant problems associated with multiple inheritance in object-oriented systems, such as brittle classes and derivation conflicts. These issues have prevented object-oriented programming from fulfilling the promised revolution of software productivity and code reuse. By using facets, however, programmers can easily create objects which do not depend on inheritance in native class libraries, yet still have access to all of the properties and behaviors of the native class objects. In other words, facets eliminate significant problems associated with inheritance in object-oriented systems.
Increased programmer efficiency and easier implementation of complex models are achieved through the use of facets by improved encapsulation and inheritance methods that permit the programmer to understand the properties and behavior of an object without requiring a complete understanding of the class library in which the object is based. Additionally, the use of facets avoids inheritance anomalies by specifying inheritance in accordance with a technique that permits a programmer to define an object without resorting to complex arbitration rules on inheritance hierarchies. Complex applications can be designed, compiled and understood by a programmer with the full benefits of object-oriented coding, including reusable code and single and multiple inheritance.
Specifically, the use of facets allows different properties of an object to be declaratively inherited from different parent objects. A set of properties within an object can be grouped together and treated as a specific aspect of the object. Such an aspect is referred to as a facet-type property subgroup of the object (or more simply as a "facet" of the object), and a facet can be inherited from different parent objects. Inheritance of a property within a facet may be based upon either an "Is-a" or a "Has-a" relationship. Property values inherited based upon an "Is-a" relationship are independent of the location of the object, and the parent of each facet is determined by declaration. Property values inherited based upon a "Has-a" relationship will derive from the parent object or objects in which the child object is placed.
An object may be placed in more than one container parent, with properties within each of the facets of the object being inherited from a different one of its parent containers. The parent from which each facet is inherited can be specified. Alternatively, when a child object is contained in multiple parents, each child object facet is inherited from the parent in which the child object is contained in a parent object facet having the same name as the child object facet. Individual properties within a facet can be declared as inherited or not inherited. The values of properties that are not inherited will be independent of the property values in the parent object. Thus, the properties that a child object inherits is controlled by the child object itself: by its place in a container object and by declaration in the child of which properties are inherited from the parent.
By specifying inheritance at the level of a facet and individual properties, a programmer can define an object to behave the way he or she wants; the properties and behavior of an object will not depend on arbitration rules operating on complex multiple inheritance hierarchies. A programmer can understand the properties and behavior of an object by looking at its declaration without having to understand the complete class library upon which it is based. Thus, the use of facets technology is preferred for one embodiment of the design engine, but is not required.
Document Component Framework
Referring next to FIG. 2 the relationship between an application program 12, a document 32, a composition 38 and its information presentation 36 in accordance with one embodiment of the invention will be described in more detail. The document 32
represents information that has been saved by the user within a computer system to persistent storage. This document may include any combination of content elements, design descriptions and media specifications. Once the application program 12 is executing, the document 32 may be loaded into the application program as an open document 32' and may appear to the user through a user interface 18. Once the document 32' has been composed for a particular medium, it appears as a composition 38 having a particular layout 39. That is, composition 38 represents the document 32' in a particular layout/format (or style).
Once the application program 12 is directed by a user to render the composition (via a "publish" command or the like), the composition 38 is rendered to a particular medium in the form of an information presentation 36. This information presentation may appear initially in a form suitable for viewing on a computer screen. For example, if the presentation has been rendered for paper media, the user interface may show this paper media in a print preview format. Likewise, if the presentation has been rendered for a Web site, the user interface may show these Web pages on the computer screen for the user to view. The information presentation 36 represents the actual pages created by the application program for paper, HTML or any other medium.
One definition of terms suitable for understanding the present invention follows. The document component framework creates value ultimately by supporting the construction of information presentations. An information presentation is typically a materialization of information in a way that makes it accessible to a human being or an automated process. A presentation may be physical (e.g., a set of printed pages), ephemeral (e.g., an on-screen image), distributed (e.g., a hypermedia Web), abstract (e.g., a source code file), or in some other form. Also, a presentation may be static (e.g., printed pages) or dynamic (e.g., a stock ticker). In one embodiment of the present invention, a presentation may be a sequenced set of printed pages, a sequenced set of screen images able to be viewed from within a user interface, an OLE object embedding, or a single-rooted set of linked HTML pages.
A composition typically combines content, design and media in a usable form. In general, content is information substance, in forms such as communication-bearing text, images, symbols, data structures and other. Media, in general, is presentation space, in forms such as paper, sequenced computer screens, linked hypertext pages and other. A design is typically information presentation specifications, in forms such as definitions of allowable content and media combinations, and methods for rendering presentations of particular content to particular media. Thus, a composition may be viewed as a combination of compatible content, media, and design objects capable of producing a specific presentation of specific information in a specific form. In one embodiment of the present invention, design, media, and content are the primary facets of a composition. A composition typically results from a request to render a media-specific presentation of an open document. The present invention is able to elaborate the document structure as necessary to compute fully explicit layout and drawing information.
A composition may be viewed in different ways. In one aspect, the persistent, storable form of a composition is referred to as a document. A document may be stored in many forms. By way of example, a document may be a computer file (or other long-lived object) designed to serve as the basis for a composition. The concepts of a composition and a document are closely related. However, while a composition--a specific configuration from which a presentation is rendered--may fully specify target media and an explicit layout, a document is likely to leave these properties unresolved so as to support different user choices at different times. A document object may support presentations to a wide variety of supported media; this generally corresponds to the user's notion of an identifiable publication. The fully resolved nature of a composition, on the other hand, makes it a more convenient reference point for understanding the structure of the component framework. In other words, a document is typically a persistent object that may support multiple media, while a composition typically represents a single media presentation.
Content, Media, Design Facets
As suggested in the preceding sections, in one embodiment of the present invention the document component framework's modeling strategy involves factoring a composition into independent content, media, and design facets. This approach has many advantages: it is simple to grasp and promises powerful capabilities, such as one-step experimentation with design changes, easy repurposing of content for different media, and the ability to save design representations that are far more adaptable than traditional templates. Each of these facets may have its own hierarchical structure, and the hierarchies may not necessarily coincide.
Thus, because information may be viewed in many instances as content, media and design, there are various advantages to representing a composition by a content facet, a media facet and a design facet. These advantages are further discussed below, along with a more detailed explanation of the content, media and design facets.
The content facet of a composition may be considered to be the communication substance it contains in forms such as text, images, and symbols that may, at least in principle, be broken away from other factors as pure information. In a passage of body text, the words generally function as content, but the typeface generally does not. Particularly in the case of text (and other elements "attached" to text), content has an inherent structure that interacts with, but is not determined by, the structure of media (presentation space) or design. In a magazine article, for example, title, headings, body passages, illustrations and other elements form a hierarchical structure that may collide unpredictably with other structures such as page and column breaks. Thus, it makes sense to separate this pure content from the artificial constrictions of a page break in paper media, for example.
Additionally, in any document, content and other presentation features must be coordinated across a hierarchy of scales from individual text characters and image pixels up to the entire document, or even a series or family of documents. At all levels of scale, recognizable features exist that have some independence from a specific document or document type. One example might be an array of illustrations containing titles, images, and captions in a particular relationship. Such a structure could be reused across catalogs, reports, newsletters, and other documents keeping the same relationship, but the specific formatting of each element would likely change according to context. In this example, an entire hierarchy of features and relationships is preserved from one medium to another, but its presentation is interpreted differently in different settings. This is characteristic of situations involving the reuse of document elements. Thus, separation of content from media allows reuse of the content in different media while preserving relationships.
The media facet of a composition is structured hierarchically by the allocation of presentation space (or regions) to the different features (or content elements) of a composition. This allows layout and locality concerns to be separated from design and rendering concerns, and recognizes the fact, noted above, that the hierarchical structure of presentation space is distinct from the structure of content. In this interpretation, subordinate parts of a composition are associated with their own media objects, which are combined, perhaps in multiple levels of aggregation, to form the composition-level media facet. In the simplest cases, this reduces to a facet-oriented terminology for layout in which each page (presentation space) is divided into regions which are assigned to the various parts of a composition.
In any chosen presentation space, any assemblage of content may be rendered in an unlimited variety of ways, but a particular composition is rendered in a specific way. Everything about a composition that defines its specific renderings, among all those possible for its content, is considered to make up that composition's design facet. Thus, the framework interprets design not only as "style", in the sense of rendering choices made "at the last minute" in a superficial way, but as the controlling factor for the whole logical construction of a document and the compositions it supports.
Like content and media, a composition's design may exhibit a hierarchical structure, with recognizable parts ranging from the primitive presentation styles of text and graphic content elements, up through the organizational and presentation modes of intermediate structures, to the overall structure and appearance of the entire composition. At all but the lowest level of this hierarchy, design is expressed by assembling components of a more primitive nature and making associations with content and media. The use of components will now be discussed in more detail.
Component Architecture
A variety of object-oriented programming techniques may be used to implement the present invention. By way of example, techniques such as the class-instance model, the object programming model and the object prototype model may be used. In a preferred embodiment, the notion of specialization in the component framework is based upon object-prototype relationships, rather than class-instance relationships. Also, in addition to derivation-based inheritance, in which an object inherits property bindings from the prototype object on which it is based, the component framework relies upon containment-based inheritance as developed in systems such as Apple Computer's Hypercard and Asymetrix's ToolBook. In containment-based inheritance, an object inherits property bindings from a container or owner object.
The fundamental abstraction supporting the framework is the component. In the problem domain view a component is a coherent entity within a document or composition that can be independently created and destroyed, inserted and removed, and/or changed in state; the entire document or composition is considered to be such a component. And in the software architecture view a component is a software object representing such an entity as a node within a composition's content, media, and design hierarchies.
The most typical component is a straightforward document part such as a paragraph, list, illustration, or article. In order to serve as the common prototype for all framework objects, however, the component concept is generalized to cover encapsulated content objects (trivial media and design facets), encapsulated media (trivial content and design), document and component "blanks" on a palette (place holder content), and entire documents and compositions (no container in the design hierarchy). The component prototype thus provides the common representation that brings entire documents and compositions, intermediate-level objects, primitive content elements, and media into a single, interconnected structure.
Components may reside simultaneously in several independent hierarchies and therefore in several different container objects. For instance, the descriptive text body in a catalog item resides simultaneously within a text file (content), within one or more regions of one or more pages (media), and within a catalog item (design). The three facet-specific containment contexts, together with derivation from a prototype object, define a total of four object relationships that help determine a component's property bindings and thus its state as a software object.
This view of a component implies that the attributes of a composition's content, media, and design facets are distributed across the states of component objects. The architecture of the framework also preserves the converse property: the attributes of a component are partitioned into component-level content, media, and design facets that reside within the more encompassing facets of the entire composition. A more detailed illustration of the different facets of a component will be discussed below with reference to FIGS. 5a, 5b, 6 and 7. Thus, the various facets of components not only exhibit different structures (such as a content tree, a media tree and a design tree), but they also can be represented using independent sets of properties (state variables).
An example of the many possible types of design components is shown in FIG. 4. FIG. 4 at 130 shows a component class derivation tree that includes many of the common types of design components that may be used in a design by the user or that may be used in a standard design in the design catalogue of the system. For example, beneath the base component "tabular", is the leaf component "table". A user may include this component "table" within a design if the user wishes to place a table at a particular point in the document. Typically, a user uses the leaf components to arrange a particular design; alternatively, a standard design from the system catalogue will use these leaf components to build up a particular design. When creating a custom design, the user may select from these components through the user interface in order to create the new design. Additionally, the user may select a standard design including components that are pre-arranged from a system design catalogue.
Included with each component is knowledge about how that component may be rendered in a particular media. For example, for rendering to HTML, macros may be used for the HTML elements in rendering to a particular geometry. A further discussion is included below with reference to FIGS. 12a-12c.
Returning now to a discussion of components in general, other types of prototype components will now be described. Derived from the component prototype are three other kinds of prototypes that support the separated representation of content, media, and design. These other prototypes are content objects, media objects and design objects and are all types of components.
Content objects combine content encapsulations with unbound media facets and unspecified design facets. Content can be encapsulated either as a link to an external object, or as an embedding. Built-in content encapsulations represent both free-standing objects, such as text files, and nested subobjects, such as the sections and paragraphs of text files. Because a content object is a component, though a lopsided one in terms of facets, it can also participate in containment inheritance by being specified as the content facet container (parent) for an application-level component.
Media objects combine media object encapsulations with unbound content facets and unspecified design facets. Built-in media encapsulations represent both free-standing objects, such as printed documents, and nested subobjects, such as the individual page regions associated with components of printed documents. Because a media object is a component, though a lopsided one in terms of facets, it can also participate in containment inheritance by being specified as the media facet container (parent) for an application-level component.
Design objects implement specific styles for presenting compatible content to supported media. A design is considered to be a document shell, or just shell, if its instantiations are thought of primarily as free-standing documents that do not require a container context. This is a soft distinction, since most document shells may also be constructed inside a containing document. A design is considered to be a component format, or just format, if its instantiations are thought of primarily as subcomponents of larger documents. Sometimes this is a soft distinction, since some component formats may also be constructed as free-standing documents.
In one embodiment of the content, media and design triad of facets, design has a separate but somewhat more than equal status, at least from the point of view of a design-centric framework application. This is reflected in one possible interpretation of design facet containment as the logical component structure of a composition, and in a preferred technique of deriving application component instances from design prototypes, Thus, in this embodiment, a component that has non-trivial bindings for all three facets is a specialization of some built-in design type, as well as typically being contained in another component via the design facet (logical structure). In the content and media facets, only the containment relationship is available. This accounts for the extra indirection needed to reach "specific" content and media objects from document components--an extra level of containment is being used to provide a derivation path for the content and media representations. This can be though of as asserting that the component instance is contained in its "own" content and media facets.
An example 42 illustrating this containment is shown in FIG. 6a. This is an example of a memorandum that has only a list with a number of list items. The component "Specific List Item" represents one item from that list, and is contained in each of a content, media, and design hierarchy. Also, this "Specific List Item" component is a specialization of a Generic Component Prototype. The content facet of "Specific List Item" shows the text "aaa" of the item is contained within Body Text, which in turn is contained in a Text File. The media facet of "Specific List Item" shows the specific item is contained within a particular Region (having a Size), that in turn is contained in a Page, which is contained in a Printed Page Set. The design facet of "Specific List Item" shows how the specific item is contained within a List, which in turn is contain ed in a Memo.
Content, Design, Media Tree Examples
As discussed above, because information may be viewed by content, design and media aspects, it is helpful to represent this information in a content tree, a design tree and a media tree within a composition as shown in FIGS. 5a and 5b. FIGS. 5a and 5b diagrammatically illustrate the relationship between a composition, the content, design and media trees, and components. FIG. 6 below provides a particular example of a representation of text using components having a content, design and media facet.
FIG. 5a shows in more detail a composition 38 from FIG. 2. The composition 38 may be stored as a saved document 32 in a computer system, or the composition may be rendered to a particular medium in the form of an information presentation 36. The information contained within the composition 38 may be divided up in a variety of manners. Preferably, the composition is represented in the form of a content tree 52, a design tree 54, and a media tree 56. These trees are preferably linked in some fashion 57 as will be explained in greater detail below. These content, design and media trees may be based upon any suitable object-oriented technology as discussed above, although the use of the facet technology as described above is preferable.
This composition 38 of FIG. 5a is shown in more detail in FIG. 5b. FIG. 5b illustrates how, within a composition 38, the content, design and media facet trees may be represented in a general sense. In one embodiment, a composition root object
60 serves as the root for each of the content facet tree 62, the design fact tree 64, and the media facet tree 66. Each of these trees has an independent but possibly overlapping hierarchy of child components, such as component 70, within an intermediate set of components 68. That is, these three trees may follow different paths through the set of components 68. In other words, an individual component 70 may be unique to only one of the three trees, may be shared between two of the trees, or may be common to all of the trees. Leaf nodes such as leaf 72, are typically common to each of the three trees and contain such information as actual content elements and coordinates for the layout of the content in a particular media. In a preferred embodiment, the composition root object and the leaves are common to all three trees. In other embodiments, most or all components may appear in each of the three trees.
Each element of the composition such as an image pixel, a character, a graphic symbol, a word, and up to and including the whole document, may be associated with a component. Typically, a component of large granularity is created by a user action, such as a user dropping a paragraph of text onto a composition. This paragraph would be represented at first by a paragraph component. This paragraph component may be fragmented as needed in order to fit content to a layout. For example, each line of the paragraph may be represented as a subcomponent. The fragmentation process is also quite dynamic. For example, fitting a paragraph involves trying and discarding many possible fragmentations, and this fitting may be redone after each significant user action. Editing may also create new subcomponents by creating attribute changes or by forcing a refit. For example, if a middle portion of a line of text is selected to appear in italics, then the line of text would be fragmented into three subcomponents. The newly italicized portion of the line would be one subcomponent, while the portions before and after it would be the other two components.
In one embodiment of the present invention, each component has a content facet, a design facet, and a media facet. Although, a facet for a particular component may be unused, as in the case of a media facet tree component that is located between two nodes of the design facet tree but not actually in the design facet tree. In this example, the design facet of this media component may be unused because there is no link to the design facet tree.
FIG. 6 illustrates how a piece of structured text 80 may be represented using an embodiment of the content, design, and media facet trees of the present invention. The structured text shown at 80 has a title "WHO WAS KILROY?", a first heading "Here at One Time", and a second heading "Missing in Action". The first heading also has a body of text A and the second heading has a body of text B.
This structured text 80 may be represented using the content and design facets of components as follows. In this example, the root object for this structured text is the Structured Text component 84. This component 84 may also have a link (not shown) to a container Document. The design tree representation for this structured text 80 may be determined by following the design facet links from Structured Text component 84 on down the hierarchy of design facet links. For example, Structured Text component 84 contains (by way of a design facet link) Title component 86. Title component 86, however, contains both a Heading One component 90 and a Heading Two component 92 by way of their respective design facet links. In turn, Heading One component
90 contains Body Text A component 94, and Heading Two component 92 contains Body Text B component 96. Thus, it can be seen how the design tree for a particular composition is represented by links formed through the design facet of the various components in the composition.
Likewise, the content tree representation of the structured text 80 may be determined by following content facet links from each component. The Title component 86 has a content facet link to the title of the structured text 80, namely "WHO WAS KILROY?". The component Heading One 90 has a content facet link to the first heading "Here at One Time". Similarly, each of the other headings, and body text has a content facet link pointing to the particular content represented by that component. The link from a component to another component or from a component to content may be formed in any suitable fashion. Which inheritance links are used in a given tree structure is determined by part of the object definition for each component on a per-property basis. These properties of a component are divided up and inherited via different paths. As described above, the concept of facets introduces the notion by which the properties of a component are partitioned such that the different facets of that component participate in the three different containment hierarchies, namely the content facet tree, the design facet tree and the media facet tree. Using the concepts of facets is preferred because of improved correspondence with document reality.
Although not shown in FIG. 6, these components are also linked via their media facets. The media facet of a component, such as Title 86, contains properties including the positioning of the title and its dimensions. It is possible that there may be other components within a composition that participate only in the media facet tree via their media facets, and are not part of either the content nor design facet trees. Likewise, there may be components that participate in each of the content, design and media trees through their respective content, design and media facets. Further examples showing a media facet tree for a composition are described below.
FIG. 7 is an example of a footer component 120 showing in detail its content, design and media facets. The footer component 120 may have any number of properties defined upon it or that it has inherited through a hierarchy of components. By way of example, selected properties associated with the content facet, design facet and media facet are shown for this footer component. It should be appreciated that many other types of properties may be associated with each of these facets, and other properties may be defined upon the footer component that are not associated with any of the facets.
In this example of FIG. 7, the content facet contains a property named Text which has as a value a pointer to a text string containing the text for the footer. The design facet for this footer component includes the properties Text Face, Text Attribute, Justification and Relative Size. Example values corresponding to these properties are shown in FIG. 7. The media facet for this component includes the properties X Position, Y Position, Width and Height, which help to define the geographical region on a page where this footer may appear. These geographical properties may in general be relative to media facet containers. For example, coordinates may be relative to a particular containing region. That is, which particular page a region appears on may be determined by searching up the media facet links until a Page component is encountered.
It should be appreciated that many other different kinds of properties may be present within a media facet to help define the extent of the component and to locate the component within the content rendering space for a particular medium. By way of example, properties such as color, texture, and percent transparency of the media surface may be associated with a media facet. A discussion of the extent of a component is detailed below with reference to FIG. 34 at step 758.
Brochure Composition Example
FIGS. 8 through 12c below provide an example of a brochure that may be created and rearranged in various embodiments of the present invention. Examples of possible content, design and media trees to represent this brochure composition follow in FIGS. 13 through 18. FIGS. 19 through 28e provide further examples of uses of the present invention and its features, while FIGS. 29 through 38 describe procedures for implementing embodiments of the present invention.
An example of a blank composition that has been created by loading a standard design from a system design catalogue is shown in FIG. 5. A blank (or empty) composition is one for which a design exists, but no content has been added. This blank composition 140 includes a nameplate 142 and a title 144. Also included are images 146 and 150 each with corresponding text areas 148 and 152. A footer 154 is located at the bottom of the blank composition 140. These elements of the blank composition are represented in the design tree for the composition by corresponding components for which no content has as of yet been associated. At this point in the process of creating a composition, the user may wish to drag and drop content onto various portions of the screen in order to create a more elaborate composition. Alternatively, the user may rearrange the design shown in order to create a custom design.
An example of a design that has been filled in by the user is shown in FIG. 9. This document design specifies a paper page media fixed at one page in length. A user may have added content to this design by dragging and dropping text and images from various sources. Alternatively, a user may also perform editing of the content directly in the composition through the user interface. FIG. 9 shows a brochure composition 160 that might be used in the mail order business for fishing supplies. The brochure composition 160 has a title "Bass Products, Inc." 162, a fish logo 164, two products and a footer. The first product has a picture of a rod 166, a caption "Rod" 168, and product text 170. The second product has a picture of a net 172, a caption "Nets" 174, and product text 176. A footer "Call In Your Order Today" 178 is located at the bottom of the composition. In this example, this brochure composition has been rendered for a single page of paper media.
FIG. 10 shows the result after the user has added new content in the form of a new product to the brochure composition 160'. In this example, the user has dragged and dropped a new product towards the bottom of the brochure composition of FIG. 9
and a method of the present invention has automatically reformatted and placed the new product along with the existing products onto the single page of paper media. As shown in FIG. 10, a new picture of a hook 180, a caption "Hooks" 182, along with product text 184 have been added to this composition.
FIG. 11 illustrates an additional example in which the user has not added new content but instead has changed the design of the brochure composition. In this example, the user has selected a vertically oriented design in order to produce brochure composition 160". Here, a method of the present invention has automatically oriented the picture, caption and product text for each product in a vertical order on the single page of paper media. For example, the caption "Rods" 168 now appears below the picture 166, and below the caption now appears the product text 170. Likewise, the second product has been oriented vertically. A method of the present invention has automatically recomputed a layout for this brochure based upon the chosen vertical design for a paper page medium.
FIGS. 12a, 12b and 12c illustrate at 190 the brochure composition of FIG. 9 that has been rendered to HTML media. In this example, the single page paper media layout of FIG. 9 has been automatically transformed into a three-page HTML layout suitable for presentation on the World Wide Web, for example. This rendering to a different media may occur when a user executes a command from the user interface to publish the composition to a new media.
FIG. 12a shows a title page 192, FIG. 12b shows a first page 194 for the first product, and FIG. 12c shows a second page 196 for the second product. The title page 192 of FIG. 12a includes the title "Bass Products" 162 and the fish logo 164 from FIG. 9, but these content elements have been automatically scaled and located in a different position on the title page. Also included in the title page is now a "What's New" link 198 that links the user to another Web page. Also automatically created is a brochure table of contents 198 that includes forward links to "Rod Products" 200 and "Net Products" 202. Also included on this title page 192 is a link to a "Talk to Us" Web page 204. The first page 194 includes the image caption and product text from the original FIG. 9. Also included with this first page is the title and fish logo from FIG. 9 and a new link "Home Page" 206 with a backward link to the title page 192. The second page 196 for the second product likewise includes the original image, caption and product text from FIG. 9 and also includes the title, fish logo and new "Home Page" link 208.
By various methods of the present invention the content and design of the brochure composition of FIG. 9 has been automatically rendered for HTML media. Each component of the composition of FIG. 9 has associated properties that dictate how the component will appear in various media. For example, general properties may be used to indicate how a component should appear. These properties may include: complex vs. simple, classic vs. modern vs. postmodern, energetic/dynamic vs. calm, warm vs. cool, dark vs. light, elegant/rich vs. plain, fast vs. slow, etc. It should be appreciated that other properties (such as those discussed above) may also be used.
Also, by various design choices built into the present invention, each medium to which a composition may be rendered contains knowledge about how it will appear. Prototypes of objects also contain knowledge. For example, specifically programmed into prototypes of media objects are defaults for primitive content types. In prototypes for content objects are abstract attributes (such as "emphatic", "playful", etc.) that can affect the primitive rendering routines for a particular medium. That is, the content types set up attributes that can be turned on or off by components and read by a medium. Also, component prototypes set attributes that establish (by inheritance) rendering defaults. More specialized prototypes and specific instances of components selectively override inherited attributes as appropriate. Overrides at the specific instance level can also be specified interactively by the user. For example, via a property sheet. Overrides can be directed to the primitive media dependent parameters as well. An example of a general prototype might be "text", while an example of a specialized prototype would be "title". An example of a specific instance would be a particular title in a particular document. As is known in the art, a "prototype" refers to a build-in object relatively near the root of the (an) object derivation tree. A prototype is used to transmit pre-built behaviors to user-specialized objects while still allowing the possibility of user overrides.
For example, various new elements have been added automatically to the new HTML media pages such as the "What's New" link on the title page 192 and the "Home Page" links 206 and 208 of pages 194 and 196.
Alternatively, the brochure composition of FIG. 9 may be rendered to any other suitable media. By way of example, the brochure FIG. 9 may be rendered to screen media which is suitable for viewing on the screen of a computer in order to make slides for a later presentation. A screen media format may be similar to the HTML pages of FIGS. 12a, 12b and 12c. Also, it is contemplated that a user may wish to change more than one aspect of a composition at a given time. For example, a user may wish to add content to a composition and also to render it to a different media.
Turning now to FIGS. 13 through 18, an embodiment of the brochure composition shown in FIGS. 9 through 12c is shown as being represented in embodiments of a content tree, a design tree and a media tree. It should be appreciated that the tree structures of FIGS. 13 through 18 are illustrative examples of one way of linking the content, design and media of the brochure composition. These trees are symbolic ways of viewing the content, design and media facets of the composition and as such may appear in other forms while still representing the composition. Showing these trees as separate entities assists in understanding how the use of facets technology allows separation of the content, design and media of a composition.
In other words, the embodiments of the trees as shown in FIGS. 13 through 18 are the internal representation of the brochure composition. As explained above, the content, design and media trees are not necessarily completely distinct trees, but may share intermediate nodes. Also, the content, design and media trees may typically share a common root and may have leaves in common, as will be shown below in the example of FIG. 18. The formation of these components into hierarchical trees may be performed in any suitable manner as will be appreciated by one of skill in the art of object-oriented programming. Preferably, the content, design and media trees represent containment relationships based upon an object prototype model that makes use of the facet technology.
FIG. 13 shows one possible representation 220 of a content tree of the brochure composition of FIG. 9. The content tree has a root, Document Content, and a first node "Bass Products" that represents the title of the brochure. Below the title are nodes representing the fish logo, the first product (a rod), and the second product (a net). Below the rod image are nodes representing the caption "Rods" and the product text for that product. Below the net image are nodes representing the caption "Nets", and the product text for that product. It is contemplated that this content information may be organized in a different hierarchical fashion yet still represent the same information. By way of example, the caption for each product may be an intermediate node having the image of the product and the product text below it as leaf nodes, instead of the caption being a leaf node. Alternatively, an intermediate node below "Bass Products" may be labeled "Product One" and would have three child leaf nodes, namely the rod image, the caption and the product text. In one embodiment of the present invention, each node containing content is associated with a particular component in the design tree. For example, a component labeled "Picture" in the design tree would have a link to the image of the rod. Such links from design components to content elements are also shown in FIG. 6.
Thus, the content tree represents the information of the brochure composition, apart from any interpretation as a document. However, the content tree may change depending upon the media to which it is rendered. For example, when a composition is rendered to HTML format, elements such as the "What's New" or "Talk to Us" links may be added to the title page as shown in FIG. 12a, thus adding new content elements to the content tree.
FIG. 14 shows an embodiment of a design tree 230 for the brochure composition of FIG. 9 that has been rendered for paper media. The nodes within the design tree represent components, such as may be found in FIG. 4. The leaf nodes of the design tree represent the content of the brochure composition and are shared with the leaf nodes of the content tree of FIG. 13. In this fashion, it may be seen how the content and design trees have different intermediate nodes, but may share the same leaf nodes, namely the content information. The leaf nodes also contain design and media information. For example, printing a line of text requires not only the text (content), but also the font and style information (small scale design), and a region on a particular page (media). Thus, a leaf may contain information suitable for direct rendering by an API, driver call, HTML output routine, etc, in order to render the content into a particular information presentation.
The design tree 230 has a root, Document Design, having three component children: Nameplate, Product List, and Footer. The component Nameplate has subcomponents Title and Logo that are each linked to their corresponding content. The Footer component has a link to its corresponding content, namely the string "Call in your order today." The component Product List has subcomponents Product 0 and Product 1. The component Product 0 has two subcomponents: Product Illustration and Product Text. The component Product Text is linked to its corresponding text. The component Product Illustration has two subcomponents: Picture and Caption, each of which is associated with its corresponding content. The hierarchical structure for Product 1 is similar to that for Product 0 as can be seen in FIG. 14.
From this design tree, it should be appreciated that the components of the design are represented independently of a medium to which the content may be rendered. That is, components represent elements of the composition without having to specify exactly where that element will appear on the paper page. However, it is possible that the design tree may vary depending upon the media to which the content is rendered, although the design tree is still independent of the exact location of the content in that media. For example, if the brochure composition were to be rendered in HTML media, two new components may appear below each of the components Product 0 and Product 1. For example, component Product 0 would have additional subcomponents Product Forward Link and Product Backward Link. The Product Forward Link would contain content labeled "Rod Products", that would provide a forward link from the title page to the page of Product 0 (as seen at 200 in FIG. 12a). Likewise, the component Product Backward Link would be associated with the text "Home Page" and would form a link from the page upon which Product 0 appears back to the title page of the HTML media (as seen at 206 in FIG. 12b).
Also, in HTML media three additional Title components may be created for each of the new pages. In one embodiment of the present invention, new "Bass Products" components are created for each page of the new media. An illustration of a "Bass Products" component for a particular media is shown below in FIG. 17. The design tree may also change if content does not fit within a particular medium. For example, if a large text paragraph does not fit at the bottom of the page, the paragraph is split into two pieces. Instead of one component representing the large paragraph, a new design component is created to represent the second half of the paragraph on the second page. This new component would also be added to the design tree. Other component additions to the design tree are possible for other types of media and content rearrangement.
FIG. 15 represents an embodiment of a media tree 240 for the brochure composition of FIG. 9 in which the brochure has been rendered to paper media. The purpose of the media tree is to provide a layout, or location for each item of content of the brochure composition. The media tree has a root, Paper Page Set, with one child component Page 0. In this example, the brochure composition is being rendered to a single paper page, hence there is only one child component, Page 0. Directly below the Page 0 component is the content for this brochure composition, namely the title "Bass Products", a fish logo, a picture of a fishing rod, etc. The media tree shares these leaf components with the content tree of FIG. 13. Also shown in FIG. 15 are the media facet coordinates for each item of content indicating a layout position for that content on the single paper page.
In this simple example, the layout coordinates form the extent of the item of content. In general, the extent of an item of content indicates how much of the content rendering space in a particular medium the content occupies. By way of example, the extent of a content item may be its rectangular coordinates, may indicate a three-dimensional position, a length of time, a segment of sound, a segment of video or other portion of a particular medium. In this example, the extent for each item of content are X and Y coordinates and the item's width and height. For example, the title "Bass Products", has an X coordinate of 10, a Y coordinate of 10, a width (dx) of 50, and a height (dy) of 5. Coordinates for the other content items are provided in a similar fashion as shown below each content item in FIG. 15.
In one embodiment of the present invention these coordinates are represented as properties of the media facet for the component representing that content item. It should be appreciated that other coordinate systems aside from a rectangular coordinate system may be used, such as polar coordinates, etc., in addition to specifications that are not coordinates. Thus, it can be seen how the media facet tree represents the layout for the content of the brochure composition, yet is distinct from the design for that composition.
FIG. 16 shows an embodiment of a media tree 250 for the brochure composition of FIG. 9 as it would appear after the composition has been rendered for HTML media. This media tree may be compared with the media tree of FIG. 15 in which the composition is rendered to paper media. In this example of FIG. 16, the media tree 250 has a root HTML Page Set and three child components, namely Page 0, Page 1 and Page 2. This media tree for HTML media has three pages instead of the single page for paper media because a composition to be rendered in HTML format has different requirements and a different layout as compared to that for paper media. In this example, the brochure composition of FIG. 9 would appear as shown in FIGS. 12a, 12b and 12c when rendered in HTML media. Hence, the media tree of FIG. 16 has three different pages, Page 0, Page 1 and Page 2. The number of pages used by a particular composition for a particular media layout is a matter of the content and the design choice for that media, and the composition may take multiple forms for a particular media. For example, a property that may be explicitly set may control whether the number of pages is fixed or is allowed to vary with the amount of content. The layout of the brochure composition in HTML media as shown in FIGS. 12a, 12b and 12c, and as represented by the media tree of FIG. 16 is one such illustrative example of how a layout and a media tree might appear for a composition.
The media tree of FIG. 16 may best be interpreted by reference back to FIGS. 12a, 12b and 12c. Page 0 of the media tree represents the layout as shown in FIG. 12a, Page 1 represents FIG. 12b, and Page 2 represents FIG. 12c. Page 0 has seven children, namely, the title "Bass Products", the fish logo, "Rod Products" and "Net Products", "What's New", "Brochure" and "Talk to Us". The first four children are shown with layout coordinates in FIG. 16, while the last three are not shown, but would have links as shown at 252. These children in the media tree represent the items of content shown in FIG. 12a. As in the paper media tree of FIG. 15, each content item has associated with it its extent, in this case, its X and Y coordinates and its height and width.
Page 1 of the HTML media tree has the six children as shown which represent the content from FIG. 12b. Likewise, each of these content items has an associated extent as shown below each content item in FIG. 16. Similarly, Page 2 of the media tree has six children corresponding to the content items of FIG. 12c along with their associated extents as can be seen in FIG. 16. As can be seen in Page 0, Page 1 and Page 2, the title and logo are repeated. An optimization may be to share content elements by reference to a single instance. It should also be pointed out that new content items have been created for this HTML media because of the unique requirements for that media. For example, the new content items "Rod Products" and "Net Products" have been created and appear within Page 0. Likewise, the content item "Home Page" now appears on Page 1 and also on Page 2.
FIG. 17 shows at 260 the content item "Bass Products" from Page 0 in more detail. The content item may be represented internally as an object or other similar data structure. Preferably, the content item is represented as a component. Shown in particular for the content item "Bass Products" is how that content item may have associated with it various properties that relate to different media. The function of these different properties for the different media is to allow the content item to be represented appropriately for a given media. For example, this content item currently has values for its HTML media properties because it is being rendered in HTML media as shown in FIG. 16. Accordingly, the properties associated with its paper media properties are left blank or are unused. Many other different types of properties unique to, or appropriate for HTML or paper media may be included with this content item although they are not shown here.
Also shown for this content item "Bass Products" are a set of properties associated with a potential rendering of the content item to VRML media. Shown are properties representing the content item's X, Y and Z coordinates, and its height, width and depth. The additional properties of a Z coordinate and depth would be appropriate for a content item rendered in VRML media because of the three-dimensional nature of that media. Other properties that may be appropriate for this media are color, brightness, rotation and sound. For example, music sounds or even a video clip may be associated with a particular content item in a composition, and these sounds and video may be associated with the content item via its properties. It should be appreciated that many other different kinds of properties may be associated with a particular media type.
FIG. 18 at 270 shows in more detail the title and logo from Page 0 of the paper media tree of FIG. 15. Along with this portion of the media tree, relevant portions of the content tree and design tree of FIGS. 13 and 14 are also shown in order to demonstrate the relationship between the three trees.
In this example, the root of the brochure composition is a Composition Component 271 that has a content facet, a design facet and a media facet. These three facets are the respective roots for each of the content, design and media trees. These three partial trees as shown in FIG. 18 are portions of the three trees that are shown in FIGS. 13, 14 and 15. For example, the root of the content tree is Document Content that is linked to its child content item "Bass Products". The "Bass Products" content item is linked to the fish logo and is also linked to the image of the fishing rod and to the image of the net (not shown) via links 276.
The root of the design tree is Document Design that has child component Nameplate and links 272 to the components Product List and Footer (not shown). As in FIG. 14, the Nameplate component has subcomponents Title and Logo which have links to their respective content items that are also shared with the content tree. The root of the media tree is the component Paper Page Set which has one child component Page 0. Page 0 has as children the title "Bass Products" and the fish logo as well as links 274 to the other content items that are shown in FIG. 15 but are not shown here in FIG. 18. Thus, FIG. 18 illustrates how although the content, design and media trees may be viewed conceptually as separate, they may have a common root and common leaves, and at times may share common intermediate components, although not in this example.
Example of Adding Content to a Composition
An example of how the content tree, design tree and media trees are manipulated when content is added to a composition is illustrated in FIGS. 19 through 22. These Figures illustrate graphically how content may be added to a composition and how each tree is changed accordingly, in one embodiment of the present invention. A more detailed discussion of the steps involved in this process is contained below in the flowcharts of FIGS. 29 through 36. In general, FIG. 19 shows content that is being dropped onto an existing composition, FIG. 20 shows the content, design and media trees before the drop, and FIG. 21 shows the same trees after the content has been dropped onto the composition.
FIG. 19 illustrates one technique 280 for adding content to a composition. Shown in FIG. 19 is a user interface 281 of a computer system that includes a composition 282. Located within the composition 282 are currently a photograph 284 and an empty text region 286. The empty text region 286 may be represented by a particular text component that at this point has no context associated with it. In this example, a user wishes to drop content from a word processor 288 onto the composition 282. The word processor content 288 includes a title, a first subheading with a body of text "xxx", and a second subheading having two text items "yyy" and "zzz".
In a first step 290, this word processor content is imported into an embodiment of the present invention in the structure shown at 292. The import of this content may be performed in a wide variety of manners. By way of example, the import of content may be performed by an object broker which is able to recognize, define and group content into particular objects.
In this example, the object broker has recognized the word processor content as structured text, and has grouped the content into a hierarchy of text paragraph components. For example, component text paragraph 296 corresponds to the title of the content "WHO WAS KILROY?", text paragraph 298 corresponds to the first subheading "Here At One Time", and text paragraph 300 corresponds to the body of text "xxx".
This content may be dropped via a technique 294 onto the composition 282 in any suitable manner. It is contemplated that this drop process may be performed in a wide variety of manners. By way of example, content may be dragged from a location on the user interface and dropped onto the location of the composition using any suitable pointing device, such as a mouse. Alternatively, the drop may be performed by the user double clicking a pointing device, or by the user identifying content in another location within the composition in any other suitable manner. The content may also originate from any suitable source. By way of example, the content may appear within the user interface, the content may be identified by a file name, a URL address, a portion of a database, or any other similar means used to specify content using a computer system. Additionally, content may be input automatically to a computer system via a computer interface, a network connection, a modem interface, an infrared or radio link interface, a sound recognition interface, a video interface, or any other similar means of inputting data into a computer system. Content may also be input via a mail/messaging system, a data acquisition device, a telephone system, scanner, etc.
Turning now to FIGS. 20 and 21, FIG. 20 illustrates the internal representation of the content, design and media trees before the content is dropped, while FIG. 21 illustrates the representation of these trees after the content has been dropped onto the composition.
FIG. 20 shows embodiments 310 of each of the content, design and media trees for the composition 282 of FIG. 19. The content tree 312 has a root Document Content with one link to the only item of content currently in the content tree which is the data 316 for the photograph 284 of the composition. The design tree 314 has a root Document Design that has one child component Product. Product has two subcomponents Product Illustration and Product Text, representing respectively place holders for the photograph 284 of the composition and the empty text region 286 of the composition. Product Illustration in this example has one subcomponent Image. In this example, Product Illustration has no caption, thus, there is no additional subcomponent for a caption located below the component Product Illustration in the design tree. The Image component of the design tree has various properties associated with it such as the quantity JPEG indicating the type of data, and a "no border" flag indicating that the photograph should have no border. A wide variety of other properties describing how the photograph should appear in this composition for a particular media are possible.
The Product Text subcomponent of Product in the design tree has one subcomponent Text Flow which indicates a region for text and various properties for text that may be placed such as "structured" and "left justified". In this example, the Text Flow component indicates a region for text identified by the X and Y coordinates 55 and 30, and a width and height of 40 and 35. At this point, there are no subcomponents to Text Flow because there is no content in this region. It should be appreciated that a wide variety of other properties in addition to "structured" and "left justified" may be used in association with a design component such as Text Flow to indicate how content should appear in a given media. Representative examples of other such properties are described above.
The media tree 316 of FIG. 20 has a root Paper Page Set with one subcomponent Page 0. On Page 0 is one subcomponent Product Rectangle which allocates media regions 318 and 319 for the Image 316 and the Text Flow component respectively. In other words, the media region defined by the coordinates of the component Product Rectangle (namely 10, 30, 85, 35) is divided into two regions, one of which includes the photograph, the second of which is currently an empty text region. At this point in time, the composition is ready for content to be dropped upon it. Once the content has been dropped onto the composition via a drop technique 294 as shown in FIG. 19, then the content, design and media trees appear as shown in FIG. 21 according to one embodiment of the present invention.
FIG. 21 shows embodiments 330 of the content, design and media trees after the content 288 of FIG. 19 has been dropped onto the composition 282. As will be explained in detail below, each of the three trees has been changed due to the dropped content. Starting with the design tree 314', the component Text Flow has had numerous subcomponents added beneath it in the design tree hierarchy. The Text Paragraph components shown in a hierarchy 292 of FIG. 19 have been added in this same hierarchy as subcomponents to the Text Flow component. For example, below the Text Flow component is a single subcomponent Text Paragraph that represents the title of the content, "WHO WAS KILROY?". Below this first Text Paragraph component are two subcomponents, namely two more Text Paragraph subcomponents representing the first subheading "Here At One Time", and the second subheading "Missing In Action". In a similar fashion, these two Text Paragraph components have components below them in the design hierarchy representing their respective bodies of Text "xxx", "yyy" and
The content tree 312' still contains the root Document Content with a link to the Image 316, but now also has a link to the title of the content, "WHO WAS KILROY?". This title, in turn has content links below it connecting to the first and second subheadings, which in turn have links to their respective bodies of text. For example, the second subheading "Missing In Action", has two content links, one to text body "yyy" and one to text body "zzz".
In a corresponding fashion, the media tree 316' now has additional links defining new regions for each of the new content items that have been added. The media tree still has links to the original media regions 38 and 319 for the Image and Text Flow components respectively. Although, the positions for Text Flow has changed slightly reflecting the impact of the new content on fitting. Additionally, the Product Rectangle component now has media links to each of the new Text Paragraph components defining a specified media region within the Product Rectangle media region for each piece of new content. For example, the Product Rectangle component now has a link to the Text Paragraph component representing the body of text "xxx" that has media X and Y coordinates of 70 and 45, and a width and height of 20 and 10 respectively. In a similar fashion, the Product Rectangle media component has links to each of the other new Text Paragraph components defining a particular media region for their respective content items as is shown in FIG. 221. The coordinates for the Product Rectangle have also changed from (10, 30, 85, 35) to (10, 30, 85, 55) because of the dropped content. Also, the height of Text Flow has changed from 35 to 55. Alternatively, a different design might require that the extents of each of these components must remain the same, in which case different attributes for the dropped text such as font and text size would be modified in order to render the text in the same amount of space.
When content is dropped onto a composition (such as is shown in FIGS. 19 through 21) an embodiment of the present invention makes use of a content drop table 350 as shown in FIG. 22 in order to determine whether content may be dropped in a particular location, and if so, what type of component should be created for that dropped text. A content drop table may be implemented in a wide variety of manners. By way of example, the content drop table 350 of FIG. 22 is one such implementation. An example of a specific use of a content drop table by a receiving component of a composition will be discussed in more detail below with reference to step 512 of FIG. 29 and step 554 of FIG. 30.
In one embodiment of the present invention, a content drop table such as the one shown in FIG. 22 exists for each component of a composition. Alternatively, the concept of a component drop table may be applied to a group of components, or to a complete document. A component type in a composition that may receive a drop is tenied a receiving component type. The content drop table 350 has an identification section 352 and a body 353 that has column s 354 and 356. The identification section
352 of the content drop tables indicates for which receiving component type the content drop table applies. In this example, the content drop table 350 is a drop table for a receiving component type of type Text Body.
The purpose of the content drop table is to attempt to match a potential dropped content type with a possible appropriate subcomponent type for the given receiving component type. In this example, a receiving component of type Text Body has been designed to accept content of either type Text or OLE Object and map these specific content types to a particular new subcomponent type. The drop table shows that dropped content of type Text may either match an In-line Heading component or an In-line Body Paragraph component for a new subcomponent. A dropped content of type OLE Object will only match an In-line Illustration subcomponent. The first column 354 is labeled "Potential Dropped Content Types" because a dropped item of content may possibly be interpreted as different types of content. The object adaptor that recognizes this dropped content is able to identify the potential component types of dropped content. For example, a short amount of text dropped onto a composition might be interpreted as a type of caption, body text, heading, etc.
The content drop table may be used in the following manner. Assume that a word processor clip is dropped onto a composition. The Universal Object Adaptor first constructs a list of the possible types such as text, OLE Object, etc. Next, the table is stepped through one row at a time. If the type listed in the left-hand column is not compatible with the identified possible types of dropped content, then that row is skipped. However, if it is compatible, then an attempt is made to construct a component of a type as listed in the right hand column using the dropped content. If this attempt is successful, then the process is done, if not successful, then the next row of the table is tried. It is also possible for a user to explicitly choose which component type to create via a drop technique or other interaction with a user interface. It will be appreciated by those of skill in the art that other priority schemes for interpreting and matching content types are possible. The use of this drop table will be discussed further with reference to FIGS. 29 and 30 below.
Media Divisions
Another useful feature of the present invention is the concept of a media division. A media division allows a particular region of a medium to be split into other related regions according to a set of rules and properties. The concept of a media division will now be discussed with reference to FIGS. 23 through 28. FIGS. 23 and 24 illustrate an embodiment of how a media division may be used within the present invention and FIGS. 25 through 28 provided illustrative examples of various kinds of media divisions. The use of a media division in the context of an embodiment of the present invention will then be further explained in more detail below with reference to FIGS. 34 and 35.
FIGS. 23a through 23d provides a simple product example to show a motivation for the use of a media division. FIG. 23a shows an example product layout 370 for a particular product that may appear in a composition 372 as shown. This example product has a picture region on the left side of the composition and a name and body text on the right side of the region. Within the picture region is the image itself along with a caption and a cutline both below the image. On the right side of the composition, the body text appears below the name of the product.
FIG. 23b shows an embodiment of the design tree 380 representing the design hierarchy for the example product of FIG. 23a. The top level component Product has three children, namely Picture, Name and Body. The intermediate component Picture contains three su