Sign In to Follow Application
View All Documents & Correspondence

Dynamically Laying Out Images And Associated Text Using Pre Defined Layouts

Abstract: Technologies are described herein for dynamically laying out images and associated text using pre-defined layouts. The pre-defined layouts are created and data defining the layouts is stored in a layout definition file. An application program provides a user interface for dynamically laying out the images and associated text using the contents of the layout definition file. The user interface includes a canvas onto which a user may place one or more images and a layout gallery through which a user may select a pre-defined layout to be applied to images placed on the canvas. The layout gallery includes selectable visual representations corresponding to each of the available pre-defined layouts. When one of the visual representations is selected, the corresponding pre-defined layout is dynamically applied to images on the canvas. The visual representations displayed in the layout gallery may also be utilized to generate a preview of the layout.

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
15 December 2009
Publication Number
11/2010
Publication Type
INA
Invention Field
COMPUTER SCIENCE
Status
Email
Parent Application

Applicants

MICROSOFT CORPORATION
ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052-6399

Inventors

1. HOYER, CRYSTAL LYNN
C/O MICROSOFT CORPORATION, INTERNATIONAL PATENTS, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052-6399
2. WALDMAN, LAWRENCE
C/O MICROSOFT CORPORATION, INTERNATIONAL PATENTS, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052-6399
3. SCHNEEKLOTH, JASON STUART
C/O MICROSOFT CORPORATION, INTERNATIONAL PATENTS, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052-6399
4. UNDERHILL, THOMAS CHARLES
C/O MICROSOFT CORPORATION, INTERNATIONAL PATENTS, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052-6399
5. BECKER, CHRISTOPHER MICHAEL
C/O MICROSOFT CORPORATION, INTERNATIONAL PATENTS, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052-6399

Specification

BACKGROUND
[0001] Many types of desktop applications allow users to add images and associated
text annotations to their documents. For instance, many word processing applications, spreadsheet applications, and presentation applications allow a user to insert one or more images into a document and to place text annotations in relation to the images. These applications, however, generally provide little or no design guidance on how the images and the associated text annotations should be laid out in relation to one another. Instead, most applications require users to manually lay out the images and the associated text annotations.
[0002] While a manual approach to laying out images and associated text
annotations does provide great flexibility for highly skilled designers, most users do not possess the creative design skills necessary to create a professional-looking layout of images and associated text. As a result, many users end up creating layouts with images and associated text that look amateurish, include misaligned or inappropriately sized images, and possibly text annotations that are inappropriately located or sized for the layout of the related images. In many cases, manually generated layouts simply do not communicate the message desired by the user.
[0003] Some desktop applications do provide limited fiinctionality for assisting a
user in laying out multiple images on a page automatically using static templates. These types of applications do not, however, dynamically lay out images and do not provide any guidance for laying out text annotations that are associated with the images. Moreover, these types of applications generally force users to utilize the exact structure and design of the provided templates. Users may not be permitted to modify the layout provided by the templates through the rearrangement or addition of images or related text. This can be fiiistrating for a user attempting to create a layout that includes text annotations or more or fewer images than permitted by the template.
[0004] It is with respect to these considerations and others that the disclosure made
herein is presented.
SUMMARY
[0005] Technologies are described herein for dynamically arranging images and
related text annotations. Through the utilization of the technologies and concepts presented herein, an application program can dynamically lay out images and associated text annotations using pre-defined layouts. Different layouts can be applied to images and their associated text annotations and the pre-defined layouts can be changed imtil the best

possible layout is identified. Moreover, the pre-defined layouts permit additional images or
annotations to be added while still retaining the design elements of the layout. Through the
use of these technologies, a user with virtually no creative design skills can create a
professional-looking layout of images and associated text annotations.
[0006] According to one aspect presented herein, one or more pre-defined layouts
are created and data defining the layouts is stored in a layout definition file. Each pre¬defined layout specifies a layout for one or more images and associated text annotations. In particular, each pre-defined layout specifies how the images and any associated text annotations should be sized and positioned in relation to one another. For instance, a layout may specify the location and size of the images in the layout along with the location, size, and style of text associated with the images. The layout may also specify how the layout should be modified if additional images or text are added to the layout. As will be described in detail below, the contents of the layout definition file are utilized to dynamically lay out images and associated text, and to regenerate the layout following the addition of new content or the modification of the layout.
[0007] According to another aspect, an application program is described herein that
is operative to utilize the contents of the layout definition file to dynamically lay out images and associated text. In one implementation, the application program provides a user interface for dynamically laying out the images and associated text. The user interface includes a canvas onto which a user may place one or more images. The user interface also includes a control through which a user may select a pre-defined layout to be applied to images placed on the canvas. In one implementation, the control is a layout gallery that is displayed adjacent to the canvas. The layout gallery includes selectable visual representations corresponding to each of the available pre-defined layouts. When one of the visual representations is selected, the corresponding pre-defined layout is dynamically applied to images on the canvas.
[0008] Once the layout has been dynamically generated and displayed, a user may
modify the layout by adding additional images or completing the text annotations in the layout. The user may also modify the size or position of elements in the layout. In response to modification of the layout, the contents of the layout definition file are utilized to regenerate the layout in view of the modification. For instance, if a new image is added, the layout may be regenerated to appropriately incorporate the new image into the layout. Other pre-defined layouts may also be applied to the images and text through the selection of the visual representations in the layout gallery.

[0009] According to another aspect, the visual representations displayed in the
layout gallery may be utilized to generate a preview of the layout. For instance, in one implementation, a live preview is generated of the corresponding pre-defined layout when a user interface mouse cursor is hovered over a visual representation in the layout gallery. Hovering refers to the process of placing a user input mouse cursor over an object without selecting the object using a mouse button. It should be appreciated that other user input mechanisms utilizing other types of user input devices other than a mouse may be utilized to cause a preview of the layout to be generated. By generating a preview in this manner, a user can view the results of the application of the pre-defined layout to images on the canvas before applying the pre-defined layout. When a suitable layout has been identified, the pre-defined layout can be applied through the selection of the appropriate visual representation.
[0010] It should be appreciated that the implementations described herein are
applicable to any type of computer program that lays out images and associated text. For
example, the concepts presented herein may be utilized in word processing application
programs, spreadsheet application programs, presentation application programs, desktop
publishing application programs, and other types of application programs. The above-
described subject matter may also be implemented as a computer-controlled apparatus, a
computer process, a computing system, or as an article of manufacture such as a computer-
readable medium. These and various other features will be apparent fi-om a reading of the
following Detailed Description and a review of the associated drawings.
[0011] This Summary is provided to introduce a selection of concepts in a
simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] FIGURE 1 graphically illustrates the contents of a layout definition file and
several pre-defined layouts defined therein that are presented in one implementation;
[0013] FIGURES 2-5 are screen diagrams showing aspects of a user interface
provided by an application program capable of dynamically laying out images and associated text using pre-defined layouts in one embodiment presented herein;

[0014] FIGURE 6 is a flow diagram showing an illustrative process for dynamically
laying out images and associated text using pre-defined layouts in one implementation described herein; and
[0015] FIGURE 7 is a computer architecture diagram showing an illustrative
computer hardware and software architecture for a computing system capable of implementing the embodiments presented herein.
DETAILED DESCRIPTION
[0016] The following detailed description is directed to technologies for
dynamically arranging images and associated text using pre-defined layouts. Through the
use of the embodiments presented herein, an application program can provide an automated,
dynamic arrangement of images and associated text using pre-defined layouts. Utilizing an
application program that embodies the concepts and technologies presented herein, a user
can easily generate a professional-looking layout of images and associated text annotations.
[0017] While the subject matter described herein is presented in the general context
of program modules that execute in conjunction with the execution of an operating system
and application programs on a computer system, those skilled in the art will recognize that
other implementations may be performed in combination with other types of program
modules. Generally, program modules include routines, programs, components, data
structures, and other types of structures that perform particular tasks or implement particular
abstract data types. Moreover, those skilled in the art will appreciate that the subject matter
described herein may be practiced with other computer system configurations, including
hand-held devices, multiprocessor systems, microprocessor-based or programmable
consumer electronics, minicomputers, mainframe computers, and the like.
[0018] In the following detailed description, references are made to the
accompanying drawings that form a part hereof, and which are shown by way of illustration
specific embodiments or examples. Referring now to the drawings, in which like numerals
represent like elements through the several figures, aspects of a computing system and
methodology for laying out images and associated text will be described.
[0019] Turning now to FIGURE 1, details will be provided regarding one
embodiment presented herein for dynamically arranging images and text that is associated with the images using pre-defined layouts. In particular, FIGURE 1 illustrates aspects of an application program 100 and a layout definition file 102. The application program 100 utilizes the contents of the layout definition file 102 when dynamically laying out images

and text. It should be appreciated that the application program 100 may be any type of application program that lays out images and associated text including, but not limited to, a word processing application program, a spreadsheet application program, a presentation creation application program, a web page design program, or a desktop publishing applications program. The concepts presented herein are not limited to use with application programs for performing any particular function.
[0020] According to one implementation, the layout definition file 102 stores data
that defines one or more layouts 104A-104D. The layouts 104A-104D each define the
placement, size, and other characteristics for one or more images and for text associated
with the images. For instance, the layout 104A includes six images 106A-106D and text
108A-108D associated with the images. The layout 104B includes one image 106G and
text 108G oriented horizontally across the image 106G. The layout 104C includes three
images 106H-106J and text 108H placed between the images. The layout 104D includes
one image 106K and text 1081. It should be appreciated that the layouts 104A-104D shown
in FIGURE 1 are merely illustrative and that the layout definition file 102 may define any
number of layouts with any arrangement of images and/or associated text.
[0021] According to other aspects presented herein, the layout definition file 102
also stores data for use by the application program 100 in dynamically laying out the images and text within each layout. This data also allows the application program 100 to dynamically regenerate a layout following a modification to a layout, such as the rearrangement of the images or text in the layout or the addition of a new image or text to the layout. In one implementation, this data is stored as constraints and rules for dynamically generating each layout. The application program 100 utilizes the constraints and rules to lay out each of the images and text in a layout and to regenerate the layout following a modification.
[0022] Constraints define how a content object should be laid out by an application
program. A content object may be an image, movie, text, or other type of digital media. The constraints may include data defining the position and size of each content object. The size and position of each object may be defined in relation to other objects or independently fi-om other objects. The constraints also define how each content object should be formatted. For instance, the constraints for a text object may define the font face, font size, alignment, justification, and other formatting characteristics for the text. Constraints may include numeric values or Boolean values. Numeric constraints can specify a specific

numeric value (e.g., width = 1 inch). Numeric constraints may also define their value by
referring to other constraints using references (e.g., height = width * 0.75).
[0023] The application program 100 utilizes the rules defined in the layout
definition file 102 to modify the constraints. In particular, the rules define how to modify
one or more constraints to attempt to fit content within a layout. For instance, the
application program 100 utilizes the rules to modify the constraints when application of the
constraints to a content object results in the content overflowing specified boundaries for the
content object. As an example, if an image is added to a layout that is too large for the
layout, the image may be dynamically scaled, cropped, stretched, or otherwise resized to fit
the layout. These operations may be performed in a non-destructive manner to preserve the
contents of the image. In embodiments, some operations may be performed in a destructive
manner. As another example, a constraint may specify that the font size for a text object is
14 points. In tum, the rules may specify that the font size may be reduced down to 8 points
in an attempt to fit the text to the layout. It should be appreciated that rules and constraints
may be propagated between different objects to ensure consistency in the layout. In this
manner, for instance, all text or images in a layout may be made the same size. The
application program 100 will dynamically adjust the size of the text or images depending
upon the amount of text or number of images present in the layout.
[0024] According to other implementations, the layout definition file 102 may also
specify a layout algorithm to be utilized by the application program 100 for laying out content. For instance, the layout definition file 102 may specify an algorithm for laying out text that is utilized by the application 100 to arrange the text within a layout. Other types of layout algorithms for other types of content objects may also be specified within the layout definition file 102. A user may also be permitted to add new layouts to the layout definition file 102.
[0025] According to one implementation, the contents of the layout definition file
102 are specified using the extensible markup language ("XML"). XML is a standard format for commimicating data. In the XML data format, a schema is utilized to provide XML data with a set of grammatical and data type rules governing the types and structure of data that may be communicated. The XML data format is well known to those in the art and, therefore, not discussed in further detail herein. Additional details regarding the contents of the layout definition file 102 and the process utilized by the application program 100 for dynamically laying out images and text can be found in U.S. Patent Pub. No. US2006/0209093, filed on March 15, 2005, and entitled "Method and Computer-Readable

Medium for Generating Graphics Having a Finite Number of Dynamically Sized and Positioned Shapes," U.S. Patent Pub. No. US006/0212801, filed on March 15, 2006, and entitled "Method and Computer-Readable Medium for Fitting Text to Shapes Within a Graphic," and U.S. Patent Pub, No. US 2006/0066631, filed on September 30, 2004, and entitled "Method, System, and Computer-Readable Medium for Creating and Laying Out a Graphic Within an Application Program," each of which is expressly incorporated herein by reference in its entirety.
[0026] Referring now to FIGURE 2, an illustrative user interface 202 provided by
the application 100 in one embodiment for dynamically laying out images and associated text will be described. As shown in FIGURE 2, the user interface 202 includes a canvas 206. The canvas 206 is utilized to hold the images and text for a layout. A user may place images on the canvas 206 through an appropriate operation, such as an insert operation or a "cut and paste" operation. For instance, in the example shown in FIGURE 2, a user has placed the image 106L on the canvas 206. It should be appreciated that the canvas 206 may take different forms dependent on the nature of the application program 100. For instance, if the application 100 is a presentation application program, the canvas 206 may be a single slide within a slide presentation. If the application program 100 is a word processing application program 100, the canvas 206 may comprise a page within a word processing docimient. If the application program 100 is a spreadsheet application program, the canvas 206 may comprise a portion of a spreadsheet. The canvas 206 may take other forms when implemented by other types of application programs.
[0027] The user interface 202 shown in FIGURE 2 also includes a layout gallery
204. The layout gallery 204 includes selectable visual representations 210A-210D of the pre-defined layouts that may be dynamically applied to images placed on the canvas 206. Each of the visual representations 210A-210D corresponds to a layout. When a visual representation is selected, such as by using a mouse button or other type of user input device, the corresponding layout will be applied to the images and text that have been placed on the canvas 206. For instance, the visual representation 210A corresponds to a layout having a single image and no text. The visual representation 210B corresponds to a layout having a single image and text laid out horizontally across the image. The visual representation 2I0C corresponds to a layout having three images with text placed between the three images. The visual representation 210D corresponds to a layout having two images with text vertically placed across both of the images.

[0028] According to implementations, the user interface 202 may also include an
image adjustment palette 208. The image adjustment palette 208 provides user interface controls 212A-212C for adjusting images placed on the canvas 206. For instance, the user interface control 212A provides functionality when selected for adjusting the brightness of an image, the user interface control 212B provides functionality for adjusting the contrast of an image, and the user interface control 212C provides functionality for adjusting the color of an image. Other tools may be provided in a similar manner for adjusting the contents of an image.
[0029] According to other implementations, the user interface 202 also includes a
content pane 214. The content pane 214 provides a visual representation of the data model set forth on the canvas 206. In particular, in one embodiment, the content pane 214 includes a thumbnail image for each image on the canvas 206. For instance, in the example illustrated in FIGURE 2, the content pane 214 includes a thumbnail 216A corresponding to the image 106L. The thumbnail images may reflect modifications made to the corresponding image, such as the application of a style to an image. The content pane 214 also includes the text associated with each image on the canvas.
[0030] According to implementations, the content pane 214 may be utilized to select
and edit images and text present on the canvas 206. For instance, in one implementation,
selection of a thumbnail image in the content pane will cause the corresponding image on
the canvas to also be selected. Text shown in the content pane 214 may also be selected
and edited. Such edits are reflected in the text shown on the canvas 206. The content pane
214 may also be utilized to add additional nodes to the data model, to remove nodes from
the data model, to change the order of the nodes, and to perform other editing functions.
[0031] Turning now to FIGURE 3, additional details will be provided regarding
aspects of the user interface 202 in one embodiment presented herein. In this embodiment, the user interface 202 is operative to provide a live preview of a selected layout in response to user commands. In particular, in this embodiment, a user may utilize a mouse input device to hover a mouse cursor 302 over one of the visual representations 210A-210D. In response to detecting such input, the application program 100 is operative to dynamically lay out the images present on the canvas 206 according to the corresponding pre-defined layout. The generated layout is displayed as a preview. That is, the generated layout is not actually applied to the images on the canvas 206. Rather, the layout is only temporarily displayed to the user. In this maimer, a user may hover the mouse cursor 302 over each of the visual representations 210A-210D to obtain a preview of how the corresponding layout

will appear when applied to the contents of the canvas 206. It should be appreciated that other types of user input using other user input devices may be utilized to cause the preview to be generated.
[0032] In the example shown in FIGURE 3, the mouse cursor 302 is hovering over
the visual representation 21 OB. As a result, the application program 100 has generated and displayed a preview of a layout 304A using the single image 106L present on the canvas. The layout 304A includes the text 108J, which has been reflected on the canvas 206 and in the content pane 214. It should be appreciated that the layout 304A has not actually been applied to the contents of the canvas 206. As a result, when the mouse cursor 302 is moved away from the visual representation 21 OB, the canvas 206 would again appear as it does in FIGURE 1. It should also be appreciated that a mouse hover event is but one mechanism for indicating to the application program 100 that a live preview of a layout should be generated and displayed. Other types of user input mechanisms may also be utilized in a similar fashion. As will be described in greater detail below with respect to FIGURE 5, selection of one of the visual representations 210A-210D, such as through the use of a mouse button, will cause the layout corresponding to the selected visual representation to be dynamically applied to the contents of the canvas 206.
10033] Referring now to FIGURE 4, additional details regarding the operation of the
user interface 202 provided in one embodiment will be described. In the example shown in
FIGURE 4, a user has utilized the mouse cursor 302 and a mouse button to select the visual
representation 210D. As a result, the layout corresponding to the visual representation
210D has been dynamically applied to the contents of the canvas 206 shown in FIGURE 1.
This has resulted in the layout 304B shown on the canvas 206 in FIGURE 3.
[0034] As shown in FIGURE 3, the layout 304B includes the image 106L and the
text 108J. In this example, the user has replaced the placeholder text with the phrase "Our Lake House." Because only one image was present on the canvas 206 when the visual representation 20ID was selected, a placeholder has been placed on the canvas for the image 106M. A user may insert an image in place on the canvas 206 to replace the placeholder. The user may also modify the text 108K by selecting the text 108K and typing new text. The typed text will replace the text 108K. It should be appreciated that, according to embodiments, the text annotations may comprise captions or be dynamically tied to references.
[0035] As will be described in greater detail below, a user may also select any of the
visual representations 210A-210D at any time to cause the corresponding layout to be

applied to the contents of the canvas. When a user selects a new visual representation, the images in the current layout are carried forward to the new layout corresponding to the selected visual representation. In this manner, a user can quickly move between layouts without having to reselect the images to be utilized in the layout.
[0036] In response to the application of a layout to the contents of the canvas, the
user interface 202 has also presented a style palette 404 and a layout modification palette
402. The style palette 404 includes user interface objects 212G-212J for adjusting a style
applied to the images and text on in the layout 304B. For instance, the user interface object
212G may be selected to modify the colors in the layout 304B, such as the colors of text or
an image background. The user interface objects 212H-212I may be selected to apply a
different style to the layout 304B. The user interface object 212J may be selected to gain
access to additional styles not shown in the style palette 404. It should be appreciate that
other functionality not described herein for modifying images may also be provided.
[0037] The layout modification palette 402 provides functionality for modifying a
layout. For instance, the user interface object 212D provides functionality when selected that allows a user to add another image to a layout. The user interface object 202E provides functionality when selected that allows a user to add additional text to a layout. The user interface object 212F provide functionality when selected that resets a layout by removing any user-made modifications to the layout. When a modification has been made to a layout, such as the addition of new images or text, the application program 100 dynamically regenerates the layout using the contents of the layout definition file 102 in the manner described above with reference to FIGURE 1. Functionality may also be provided for modifying the order that images are displayed within a layout. For instance, in one implementation, a user may be able to select and drag images to change the ordering of images with respect to one another within a layout.
[0038] As also shown in FIGURE 4, the content pane 214 has been updated to
reflect the application of the selected layout to the canvas. In particular, the text 108 J has been displayed adjacent to the image thumbnail 216A. The image thumbnail 216B corresponding to the image 106M has also been displayed along with the corresponding text 108K. As discussed above, the image thumbnails 216A-216B may be utilized to select the corresponding images 106L-106M, respectively. The content pane 214 may also be utilized to perform the other text editing operations described above.
[0039] Turning now to FIGURE 5, additional details regarding the operation of the
user interface 202 will be provided. In particular, FIGURE 5 illustrates the process of

changing layouts. As described above, selection of one of the visual representations 210A-210D at any time will result in the application of the corresponding layout to the contents of the canvas 206. In the example shown in FIGURE 5, a user has selected the visual representation 210B with the mouse cursor 302 and the press of a mouse button. As a result, the corresponding layout has been applied to the contents of the canvas 206 and the layout 304B shown in FIGURE 4 has been replaced with the layout 3 04A shown in FIGURE 5. The layout 304A includes the image 106L and the text 108J. It should be appreciated that application of a layout to the contents of the canvas 206 is non-destructive and that, at any time, a new layout may be dynamically applied to the images and text on the canvas 206.
[0040] Turning now to FIGURE 6, additional details will be provided regarding the
embodiments presented herein for dynamically laying out images and associated text. In
particular, FIGURE 6 is a flow diagram showing a routine 600 that shows aspects of an
illustrative process performed by the application program 100 for dynamically laying out
images and associated text using pre-defined layouts. It should be appreciated that the
logical operations described herein are implemented (1) as a sequence of computer
implemented acts or program modules running on a computing system and/or (2) as
interconnected machine logic circuits or circuit modules within the computing system. The
implementation is a matter of choice dependent on the performance and other requirements
of the computing system. Accordingly, the logical operations described herein are referred
to variously as operations, structural devices, acts, or modules. These operations, structural
devices, acts and modules may be implemented in software, in firmware, in special purpose
digital logic, and any combination thereof It should also be appreciated that more or fewer
operations may be performed than shown in the figures and described herein. These
operations may also be performed in a different order than those described herein.
[0041] The routine 600 begins at operation 602, where a user places one or more
images onto the canvas 206. The routine 600 then continues to operation 604, where the application program 100 displays the layout gallery 204. From operation 604, the routine 600 continues to operation 606, where the application program 100 determines whether the mouse cursor 302 is hovering over one of the visual representations 210A-210D shown in the layout gallery 204. If so, the routine 600 branches from operation 606 to operation 608, where a live preview of the layout corresponding to the visual representation is displayed in the manner described above with respect to FIGURE 3. From operation 608, the routine 600 proceeds to operation 610, described below.

[0042] If, at operation 606, the application program 100 determines that the mouse
cursor 302 is not hovering over one of the visual representations 210A-210D, the routine 600 proceeds to operation 610. At operation 610, the application program 100 determines whether one of the visual representations 210A-210D has been selected, such as by the selection with the mouse cursor 302 and a corresponding mouse button click. If not, the routine 600 returns to operation 606, described above. If one of the visual representations 210A-210D has been selected, thereby indicating that the corresponding layout should be applied to the contents of the canvas 206, the routine 600 proceeds from operation 610 to operation 612.
[0043] At operation 612, the application program 100 dynamically applies the
appropriate layout to the images and text on the canvas 206 in the maimer described above with respect to FIGURE 1. The routine 600 then continues to operation 614, where the application program 100 determines whether a new layout has been requested through the selection of one of the visual representations 210A-210D. If so, the routine 600 returns to operation 612, described above, where the application program 100 dynamically applies the appropriate layout to the contents of the canvas 206 in the maimer described above with respect to FIGURE 1. If a new layout has not been requested, the routine 600 continues from operation 614 to operation 616.
[0044] At operation 616, the application program 100 determines whether the
current layout has been modified or additional content has been added to the current layout. If not, the routine 600 returns to operation 614, described above. If so, the routine 600 proceeds to operation 618. At operation 618, the application program 100 dynamically regenerates the current layout using the layout definition file 102 to appropriately incorporate the modifications to the layout. The routine 600 then proceeds from operation 618 to operation 614, described above.
[0045] FIGURE 7 shows an illustrative computer architecture for a computer 700
capable of executing the software components described herein for laying out images and associated text annotations. The computer architecture shown in FIGURE 7 illustrates a conventional desktop, laptop computer, or server computer and may be utilized to execute any aspects of the application program 100 described herein.
[0046] The computer architecture shown in FIGURE 7 includes a cenfral processing
unit 702 ("CPU"), a system memory 708, including a random access memory 714 ("RAM") and a read-only memory ("ROM") 716, and a system bus 704 that couples the memory to the CPU 702. A basic input/output system containing the basic routines that help to transfer

information between elements within the computer 700, such as during startup, is stored in the ROM 716. The computer 700 further includes a mass storage device 710 for storing an operating system 718, application programs, and other program modules, which will be described in greater detail below.
[0047] The mass storage device 710 is connected to the CPU 702 through a mass
storage controller (not shown) connected to the bus 704. The mass storage device 710 and its associated computer-readable media provide non-volatile storage for the computer 700. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available computer storage media that can be accessed by the computer 700.
[0048] By way of example, and not limitation, computer-readable media may
include volatile and non-volatile, removable and non-removable media implemented in any
method or technology for storage of information such as computer-readable instructions,
data structures, program modules or other data. For example, computer-readable media
includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other
solid state memory technology, CD-ROM, digital versatile disks ("DVD"), HD-DVD,
BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk
storage or other magnetic storage devices, or any other medium which can be used to store
the desired information and which can be accessed by the computer 700.
[0049] According to various embodiments, the computer 700 may operate in a
networked environment using logical connections to remote computers through a network such as the network 720. The computer 700 may connect to the network 720 through a network interface unit 706 connected to the bus 704. It should be appreciated that the network interface unit 706 may also be utilized to connect to other types of networks and remote computer systems. The computer 700 may also include an input/output controller 712 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in FIGURE 7). Similarly, an input/output controller may provide output to a display screen, a printer, or other type of output device (also not shown in FIGURE 7).
[0050] As mentioned briefly above, a number of program modules and data files
may be stored in the mass storage device 710 and RAM 714 of the computer 700, including an operating system 718 suitable for controlling the operation of a networked desktop, laptop, or server computer. The mass storage device 710 and RAM 714 may also store one

or more program modules. In particular, the mass storage device 710 and the RAM 714 may store an application program 100 that provides the functionality described herein for dynamically laying out images and associated text using pre-defined layouts. The mass storage device 710 and RAM 714 may also store the layout definition file 102 and the images 106 utilized by the application program 100.
|0051] Based on the foregoing, it should be appreciated that technologies for
dynamically laying out images and associated text are presented herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the claims.
[0052] The subject matter described above is provided by way of illustration only
and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.

lAVe Claim:
1. A method for laying out one or more images (106) and text (108) associated
with one or more of the images (106), the method comprising:
receiving the one or more images (106) and the text (108);
receiving a request to lay out the one or more images (106) and the text (108) according to a pre-defined layout (104);
in response to the request, dynamically generating a layout (304) for the images (106) and the text (108) according to the pre-defined layout (104); and
displaying the layout (304).
2. The method of claim 1, further comprising:
receiving additional content for the layout;
in response to receiving additional content for the layout, dynamically re-generating the layout; and
displaying the layout.
3. The method of claim 1, further comprising:
receiving a modification to the layout;
in response to receiving the modification to the layout, dynamically re-generating the layout; and
displaying the layout.
4. The method of claim 1, further comprising:
receiving a request to lay out the one or more images and the text according to a second pre-defined layout; and
in response to the request to lay out the images and text according to a second pre¬defined layout, dynamically generating a second layout for the images and the text according to the second pre-defined layout; and
displaying the second layout,
5. The method of claim 4, further comprising displaying a layout gallery
comprising representations of one or more pre-defined layouts.

6. The method of claim 5, wherein receiving a request to lay out the one or more images and text according to a pre-defined layout comprises receiving a selection of one of the representations displayed in the layout gallery.
7. The method of claim 6, wherein receiving a request to lay out the one or more images and text according to the second pre-defined layout comprises receiving a selection of a second one of the representations displayed in the layout gallery.
8. The method of claim 4, further comprising displaying a content pane comprising representations of the one or more images.
9. A computer storage medium having computer-executable instructions stored thereon which, when executed by a computer, will cause the computer to perform the method of claim 1.
10. A method for dynamically laying out one or more images (106) and text (108) associated with one or more of the images (106) according to a pre-defined layout (104), the method comprising:
displaying a layout gallery (204), the layout gallery (204) comprising one or more selectable representations (210) of one or more pre-defined layouts (104);
receiving a selection of one of the representations (210) displayed in the layout gallery (204); and
in response to receiving the selection, dynamically generating a layout (304) of one or more images (106) and text (108) associated with the images (106) according to a pre¬defined layout (104) associated with the selected representation (210); and
displaying the layout (304).
11. The method of claim 10, further comprising:
receiving a selection of a second of the representations displayed in the layout gallery; and
in response to receiving the selection of a second visual representation, dynamically generating a second layout of the one or more images and text associated with the images according to a pre-defined layout associated with the second visual representation; and


displaying the second layout.
12. The method of claim 11, wherein the layout is displayed on a canvas adjacent to the layout gallery.
13. The method of claim 12, further comprising detecting the modification of the layout or the addition of new content to the layout and dynamically re-generating the layout in response thereto.
14. The method of claim 13, further comprising displaying a content pane adjacent to the canvas, the content pane comprising representations of the one or more images.
15. A computer storage medium having computer-executable instructions stored thereon which, when executed by a computer, will cause the computer to perform the method of claim 10.
16. A method for dynamically laying out one or more images (106) along with text (108) associated with one or more of the images (106) according to one or more pre¬defined layouts (104), the method comprising:
displaying a canvas (202) for presenting the layout (304);
receiving the placement of the one or more images (106) and the text (108) on the canvas;
displaying a layout gallery (204) adjacent to the canvas (202), the layout gallery (204) comprising selectable representations (210) of the one or more pre-defined layouts (104) which, when selected, cause the images (106) and text (108) on the canvas (202) to be dynamically laid out according to a corresponding pre-defined layout (104);
receiving a selection of one of the representations (210) in the layout gallery (204);
in response to receiving the selection of one of the representations (210), dynamically generating a layout (304) for the one or more images (106) and the text (108) based on a pre-defined layout (104) corresponding to the selected representation (210); and
displaying the layout (304) on the canvas (202).
17. The method of claim 16, further comprising:

receiving a selection of a second representation displayed in the layout gallery;
in response to receiving the selection of a second representation, dynamically regenerating a layout for the one or more images and the text based on a pre-defined layout corresponding to the selected second representation; and
displaying the regenerated layout on the canvas.
18. The method of claim 17, further comprising displaying a content pane
adjacent to the canvas, the content pane comprising representations of the one or more
images.
19. The method of claim 18, wherein a selection of a representation displayed in
the content pane will cause a corresponding image to be selected on the canvas.
20. A computer storage medium having computer-executable instructions stored
thereon which, when executed by a computer, will cause the computer to perform the
method of claim 16.

Documents

Application Documents

# Name Date
1 7359-CHENP-2009-AbandonedLetter.pdf 2018-01-19
1 abs 7359-chenp-2009 abstract 15-12-2009.jpg 2009-12-15
2 7359-chenp-2009 power of attorney 15-12-2009.pdf 2009-12-15
2 7359-CHENP-2009-FER.pdf 2017-07-11
3 FORM-6-1301-1400(KONPAL).31.pdf 2015-03-13
3 7359-chenp-2009 pct search report 15-12-2009.pdf 2009-12-15
4 MS to MTL Assignment.pdf 2015-03-13
4 7359-chenp-2009 pct 15-12-2009.pdf 2009-12-15
5 MTL-GPOA - KONPAL.pdf 2015-03-13
5 7359-chenp-2009 form-5 15-12-2009.pdf 2009-12-15
6 FORM-6-1301-1400(KONPAL).31.pdf ONLINE 2015-03-05
6 7359-chenp-2009 form-3 15-12-2009.pdf 2009-12-15
7 MS to MTL Assignment.pdf ONLINE 2015-03-05
7 7359-chenp-2009 form-2 15-12-2009.pdf 2009-12-15
8 MTL-GPOA - KONPAL.pdf ONLINE 2015-03-05
8 7359-chenp-2009 form-1 15-12-2009.pdf 2009-12-15
9 7359-chenp-2009 drawings 15-12-2009.pdf 2009-12-15
9 7359-CHENP-2009 FORM-6 25-02-2015.pdf 2015-02-25
10 7359-CHENP-2009 CORRESPONDENCE OTHERS 23-05-2011.pdf 2011-05-23
10 7359-chenp-2009 description (complete) 15-12-2009.pdf 2009-12-15
11 7359-CHENP-2009 FORM-18 23-05-2011.pdf 2011-05-23
11 7359-chenp-2009 correspondence-others 15-12-2009.pdf 2009-12-15
12 7359-chenp-2009 form-3 14-06-2010.pdf 2010-06-14
12 7359-chenp-2009 claims 15-12-2009.pdf 2009-12-15
13 7359-chenp-2009 abstract 15-12-2009.pdf 2009-12-15
14 7359-chenp-2009 form-3 14-06-2010.pdf 2010-06-14
14 7359-chenp-2009 claims 15-12-2009.pdf 2009-12-15
15 7359-CHENP-2009 FORM-18 23-05-2011.pdf 2011-05-23
15 7359-chenp-2009 correspondence-others 15-12-2009.pdf 2009-12-15
16 7359-CHENP-2009 CORRESPONDENCE OTHERS 23-05-2011.pdf 2011-05-23
16 7359-chenp-2009 description (complete) 15-12-2009.pdf 2009-12-15
17 7359-CHENP-2009 FORM-6 25-02-2015.pdf 2015-02-25
17 7359-chenp-2009 drawings 15-12-2009.pdf 2009-12-15
18 7359-chenp-2009 form-1 15-12-2009.pdf 2009-12-15
18 MTL-GPOA - KONPAL.pdf ONLINE 2015-03-05
19 MS to MTL Assignment.pdf ONLINE 2015-03-05
19 7359-chenp-2009 form-2 15-12-2009.pdf 2009-12-15
20 FORM-6-1301-1400(KONPAL).31.pdf ONLINE 2015-03-05
20 7359-chenp-2009 form-3 15-12-2009.pdf 2009-12-15
21 MTL-GPOA - KONPAL.pdf 2015-03-13
21 7359-chenp-2009 form-5 15-12-2009.pdf 2009-12-15
22 MS to MTL Assignment.pdf 2015-03-13
22 7359-chenp-2009 pct 15-12-2009.pdf 2009-12-15
23 FORM-6-1301-1400(KONPAL).31.pdf 2015-03-13
23 7359-chenp-2009 pct search report 15-12-2009.pdf 2009-12-15
24 7359-CHENP-2009-FER.pdf 2017-07-11
24 7359-chenp-2009 power of attorney 15-12-2009.pdf 2009-12-15
25 7359-CHENP-2009-AbandonedLetter.pdf 2018-01-19
25 abs 7359-chenp-2009 abstract 15-12-2009.jpg 2009-12-15

Search Strategy

1 PatSeer_20-06-2017.pdf