U.S. patent application number 14/100669 was filed with the patent office on 2014-06-26 for electronic document style matrix.
This patent application is currently assigned to Microsoft Corporation. The applicant listed for this patent is Microsoft Corporation. Invention is credited to Michael J. Antonio, Howard L. Cooperstein, Vlada Knowlton, John Schilling, Keri D. Vandeberghe.
Application Number | 20140181627 14/100669 |
Document ID | / |
Family ID | 35929768 |
Filed Date | 2014-06-26 |
United States Patent
Application |
20140181627 |
Kind Code |
A1 |
Schilling; John ; et
al. |
June 26, 2014 |
ELECTRONIC DOCUMENT STYLE MATRIX
Abstract
A method and system for rendering electronic document objects is
provided in which a style matrix holds potential attribute values,
and attribute references are used to address values in the style
matrix. A mix of attribute references and actual attribute values
may be used so make some attributes theme- and
application-specific, and others theme- and
application-independent. Further, a method for rendering a gallery
of potential styles is provided. Additionally, a method for
associating a style matrix with an electronic document application
is provided. Finally, a computer-readable medium for storing a
computer-interpretable data structure that identifies a matrix of
style attribute types and style attribute values is provided.
Inventors: |
Schilling; John; (Seattle,
WA) ; Cooperstein; Howard L.; (Mountain View, WA)
; Antonio; Michael J.; (Seattle, WA) ;
Vandeberghe; Keri D.; (Seattle, WA) ; Knowlton;
Vlada; (Bellevue, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Corporation |
Redmond |
WA |
US |
|
|
Assignee: |
Microsoft Corporation
Redmond
WA
|
Family ID: |
35929768 |
Appl. No.: |
14/100669 |
Filed: |
December 9, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10989587 |
Nov 15, 2004 |
8631347 |
|
|
14100669 |
|
|
|
|
Current U.S.
Class: |
715/204 |
Current CPC
Class: |
G06F 40/186 20200101;
G06F 40/117 20200101; G06F 40/106 20200101 |
Class at
Publication: |
715/204 |
International
Class: |
G06F 17/21 20060101
G06F017/21; G06F 17/24 20060101 G06F017/24 |
Claims
1. (canceled)
2. (canceled)
3. A computer-implemented method for displaying a gallery of
potential styles for an object comprising: receiving an object
selection; looking up one or more attribute values for each of a
plurality of potential styles; generating at least one property bag
corresponding to each of the plurality of potential styles using
said one or more attribute values; and rendering an object
indicated by said object selection in each of the plurality of
potential styles using said at least one property bag.
4. The computer-implemented method as defined in claim 3, wherein a
single property bag is reused one or more times for rendering the
object.
5. The computer-implemented method as defined in claim 3, further
comprising: in response to receiving the object selection,
displaying the plurality of potential styles in a gallery.
6. The computer-implemented method as defined in claim 3, wherein a
computer desktop theme is the object selection, and wherein the
plurality of potential styles for the computer desktop theme are
previewed for selection in a gallery.
7. A system for rendering electronic document objects comprising: a
lookup module for looking up one or more actual attribute values
using one or more attribute references; a property bag module
operable to create one or more property bags using the one or more
actual attribute values, each of the one or more property bags
corresponding to a style for rendering an object; a render module
operable to render one or more objects using the one or more
property bags; and a gallery module operable to render a gallery of
styles for rendering the one or more objects.
8. The system as defined in claim 7, wherein said lookup module
accommodates both attribute references and hardcoded actual
attribute values, said hardcoded actual attribute values being
application- and theme-independent.
9. The system as defined in claim 7, wherein the property bag
module is operable to modify existing property bags.
10. The system as defined in claim 7, wherein the property bag
module is operable to delete existing property bags.
11. A computer-implemented method for associating a style matrix
with an electronic document application comprising: associating one
or more style matrices with an application; receiving a signal to
load an object; and mapping one or more object attribute references
to one or more positions in said one or more style matrices.
12. The computer-implemented method as defined in claim 11, wherein
receiving a signal to load an object comprises receiving a signal
to create a new object.
13. A computer storage medium storing computer-readable
instructions that, when executed by a processor, cause a computing
system to: receive an object selection; retrieve at least one
attribute value and at least one attribute type from a style
matrix, the style matrix comprising: one or more rows, each row
corresponding to an attribute type; and one or more columns, each
column corresponding to an attribute value; generate at least one
property bag using the at least one attribute value and the at
least one attribute type; and render an object identified by the
object selection using the at least one property bag.
14. The computer storage medium as in claim 13, wherein the one or
more rows correspond to attribute values, and the one or more
columns correspond to attribute types.
15. (canceled)
16. (canceled)
17. A computer storage medium accessible to a computing system and
encoding a computer program for displaying a gallery of potential
styles for an object comprising: receiving an object selection;
retrieving one or more attribute values for each of a plurality of
potential styles; generating at least one property bag
corresponding to each of the plurality of potential styles using
said one or more attribute values; and rendering an object
indicated by said object selection in each of the plurality of
potential styles using said at least one property bag.
18. The computer storage medium as defined in claim 17, wherein a
single property bag is reused one or more times for rendering the
object.
19. The computer storage medium as defined in claim 17, further
comprising: in response to receiving the object selection in an
electronic document, displaying the plurality of potential styles
in a gallery.
20. The computer storage medium as defined in claim 17, wherein a
computer desktop theme is the object selection, and wherein the
plurality of potential styles for the computer desktop theme are
previewed for selection in a gallery.
21. A computer system for rendering an electronic document chart in
an electronic document application, comprising: at least one
processing unit; and at least one memory, communicatively coupled
to the at least one processing unit and containing instructions
that, when executed by the at least one processing unit, cause the
computer system to: receive an object selection; retrieve at least
one attribute value for each of a plurality of potential styles;
generate at least one property bag corresponding to each of the
plurality of potential styles using the at least one attribute
value; and render an object identified by the object selection in
each of the plurality of potential styles using the at least one
property bag.
22. The computer system as defined in claim 21, wherein a single
property bag is reused one or more times for rendering the
object.
23. The computer system as defined in claim 21, further comprising:
in response to receiving the object selection, displaying the
plurality of potential styles in a gallery.
24. The computer system as defined in claim 23, wherein a computer
desktop theme is the object selection, and wherein the plurality of
potential styles for the computer desktop theme are previewed in
the gallery.
Description
TECHNICAL FIELD
[0001] The present invention relates generally to objects in an
electronic document, and more particularly, to attributes for
objects within the electronic document.
BACKGROUND OF THE INVENTION
[0002] In order to facilitate the creation and maintenance of a
broad spectrum of electronic documents, a similarly broad spectrum
of computer applications known as electronic document applications
has been developed. Electronic document applications include word
processors, spreadsheets, slideshow presentation applications, and
web publishing applications, among others. These applications are
often bundled together in the form of a productivity suite, such as
Microsoft.RTM. Office.
[0003] One problem that has plagued users of productivity suites
for some time is the inconsistency of appearance of objects when
imported from one application into another. For example, importing
a table from a word processor into a presentation application may
cause the resulting table to look markedly different than it did
prior to the import. As a further example, moving a graphical shape
from a presentation program into a spreadsheet document often
causes the resulting shape to have different attribute settings.
The resulting object may have different line widths, different fill
levels, and other graphical effects that diverge from the original
upon import, causing the finished product to look different than
intended.
[0004] Another problem common to electronic document applications
relates to the creation of new content. Users must typically decide
between an often-sparse selection of supplied document templates
and choosing stylistic attribute values by hand. The former is
disadvantageous because the finished product often lacks
distinctiveness. The latter is disadvantageous because finding an
acceptable combination of stylistic attributes values may involve
considerable trial and error.
[0005] It is with respect to these considerations and others that
the present invention has been made.
SUMMARY OF THE INVENTION
[0006] In accordance with the present invention, a
computer-implemented method is provided for rendering an object
within an electronic document. First, one or more attribute
references associated with the object are read. Next, a lookup is
performed on the attribute references to obtain actual attribute
values. A property bag is then generated using the actual attribute
values. Finally, the object is rendered using the property bag.
[0007] In accordance with other aspects, the present invention
relates to a method for displaying a gallery of potential styles.
First, an object selection is received. A lookup is then performed
on one or more attribute values for each of a plurality of
potential styles. Next, a plurality of property bags is generated
corresponding to each of the plurality of potential styles.
Finally, an object is rendered in each of the plurality of
potential styles using the plurality of property bags.
[0008] In accordance with yet other aspects, the present invention
relates to a system for rendering electronic document objects. A
lookup module looks up an actual attribute value using an attribute
reference. A property bag module creates, maintains, and deletes
property bags. A render module renders objects using property bags.
Finally, a gallery module renders a gallery of styles in which an
object may be rendered.
[0009] In accordance will still other aspects, the present
invention relates to a method for associating a style matrix with
an electronic document application. First, one or more style
matrices are associated with an application. Next, a signal is
received to load an object. Finally, a one or more object attribute
references are mapped to one or more positions in the style
matrices.
[0010] In accordance will still other aspects, the present
invention relates to a computer-readable medium for storing a
computer-interpretable data structure that identifies a matrix of
style attribute types and style attribute values. The data
structure includes one or more rows, each corresponding to an
attribute type, and one or more columns, each corresponding to an
attribute value.
[0011] The invention may be implemented as a computer process, a
computing system or as an article of manufacture such as a computer
program product or computer readable media. The computer readable
media may be a computer storage media readable by a computer system
and encoding a computer program of instructions for executing a
computer process. The computer program readable media may also be a
propagated signal on a carrier readable by a computing system and
encoding a computer program of instructions for executing a
computer process.
[0012] These and various other features as well as advantages,
which characterize the present invention, will be apparent from a
reading of the following detailed description and a review of the
associated drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] FIG. 1 illustrates a matrix ("style matrix") for use in
defining attributes for objects in electronic documents in
accordance with an embodiment of the present invention.
[0014] FIG. 2 illustrates an example of a suitable computing system
environment on which an embodiment of the present invention may be
implemented.
[0015] FIG. 3 is a flow diagram illustrating operational
characteristics for rendering an object in an electronic document
in accordance with an embodiment of the present invention.
[0016] FIG. 4 is a flow diagram illustrating operational
characteristics for rendering an object in an electronic document
in accordance with another embodiment of the present invention.
[0017] FIG. 5 is a flow diagram illustrating operational
characteristics for creating and/or editing a style matrix, such as
the style matrix shown in FIG. 1, in accordance with an embodiment
of the present invention.
[0018] FIG. 6 is a block diagram illustrating the modules that
comprise one embodiment of the present invention.
[0019] FIG. 7 shows an exemplary embodiment of a style matrix and
its relation to electronic document application objects.
DETAILED DESCRIPTION OF THE INVENTION
[0020] The present invention and its various embodiments are
described in detail below with reference to the figures. When
referring to the figures, like structures and elements shown
throughout are indicated with like reference numerals. Objects
depicted in the figures that are covered by another object, as well
as the reference annotations thereto, are shown using dashed
lines.
[0021] Generally described, the present invention relates to the
application of attributes to an object being rendered in an
electronic document. The attributes are defined based on references
("attribute references") to a data structure referred to herein as
a "style matrix." In accordance with an exemplary embodiment, the
style matrix represents a data structure that defines variations of
attributes that are applicable to objects being rendered for
electronic documents. Each attribute reference is associated with
one of these variations defined in the style matrix. It should be
appreciated that other forms of data structures are contemplated to
be within the scope of the present invention.
[0022] With this general description in mind, FIG. 1 illustrates a
style matrix 100 in accordance with an embodiment of the present
invention. The style matrix 100 includes rows 104 corresponding to
various attribute types (e.g., Border Line, Fill, and Effect) and
columns 102 corresponding to various attribute values (e.g., None,
Low Intensity, High Intensity). An attribute is defined at the
intersection of each column 102 and row 104 in the matrix 100 as
being the attribute type paired with the attribute value at that
intersection. For example, a Low Intensity attribute value of type
Border Line depicts a thin line, whereas a High Intensity attribute
value of type Line depicts a much thicker and more easily seen
line. Similarly, a None attribute value of type Fill will yield no
fill, whereas a Low Intensity attribute value of type Fill will
yield a partially shaded fill, and so on.
[0023] While the style matrix 100 is shown with attribute types
Border Line, Fill, and Effect in accordance with an exemplary
embodiment or the present invention, one skilled in the art will
appreciate that additional attribute types (e.g., background type,
text boldness, shadowing effects, bullet types, etc.) could
additionally or alternatively be included in the style matrix 100
without departing from the scope of the invention. Similarly, the
style matrix 100 may include attribute values in addition to or
other than the three exemplary values None, Low, and High. The
style matrix 100 therefore may be arbitrarily larger or smaller
than shown in FIG. 1, as dictated by the number of attribute types
to be controlled (and thus, the number of rows 104) and the level
of sensitivity of control (more sensitive controls would generally
require more columns 102). Indeed, any number of graphical effects
known to those skilled in the art (such as blurring, shadowing,
mirror reflection, three dimensional, light diffusion, etc.) may be
controlled by the style matrix 100 without departing from the scope
of the present invention.
[0024] Given that the present invention may be implemented as a
computer system, FIG. 2 is provided to illustrate an example of a
suitable computing system environment on which embodiments of the
invention may be implemented. In its most basic configuration,
system 200 includes at least one processing unit 202 and memory
204. Depending on the exact configuration and type of computing
device, memory 204 may be volatile (such as RAM), non-volatile
(such as ROM, flash memory, etc.) or some combination of the two.
This most basic configuration is illustrated in FIG. 2 by dashed
line 206.
[0025] In addition to the memory 204, the system may include at
least one other form of computer-readable media. Computer-readable
media can be any available media that can be accessed by the system
200. By way of example, and not limitation, computer-readable media
might comprise computer storage media and communication media.
[0026] Computer storage media includes volatile and nonvolatile,
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.
Memory 204, removable storage 208, and non-removable storage 210
are all examples of computer storage media.
[0027] Computer storage media includes, but is not limited to, RAM,
ROM, EPROM, EEPROM, flash memory or other memory technology,
CD-ROM, digital versatile disks (DVD) 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 accessed by system 200.
Any such computer storage media may be part of system 200.
[0028] System 200 may also contain a communications connection(s)
212 that allow the system to communicate with other devices. The
communications connection(s) 212 is an example of communication
media. Communication media typically embodies computer readable
instructions, data structures, program modules or other data in a
modulated data signal such as a carrier wave or other transport
mechanism and includes any information delivery media. The term
"modulated data signal" means a signal that has one or more of its
characteristics set or changed in such a manner as to encode
information in the signal. By way of example, and not limitation,
communication media includes wired media such as a wired network or
direct-wired connection, and wireless media such as acoustic, RF,
infrared and other wireless media. The term computer readable media
as used herein includes both storage media and communication
media.
[0029] In accordance with an embodiment, the system 200 includes
peripheral devices, such as input device(s) 214 and/or output
device(s) 216. Exemplary input devices 214 include, without
limitation, keyboards, computer mice, pens, or styluses, voice
input devices, tactile input devices and the like. Exemplary output
device(s) 216 include, without limitation, devices such as
displays, speakers, and printers. For the purposes of this
invention, the display is a primary output device. Each of these
devices is well know in the art and, therefore, not described in
detail herein.
[0030] With the computing environment in mind, the following
figures are described with reference to logical operations being
performed to implement processes embodying various embodiments of
the present invention. These logical operations are implemented (1)
as a sequence of computer implemented steps 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
requirements of the computing system implementing the invention.
Accordingly, the logical operations making up the embodiments of
the present invention described herein are referred to variously as
operations, structural devices, acts or modules. It will be
recognized by one skilled in the art that these operations,
structural devices, acts and modules may be implemented in
software, in firmware, in special purpose digital logic, and any
combination thereof without deviating from the spirit and scope of
the present invention as recited within the claims attached
hereto.
[0031] Turning now to FIG. 3, a process 300 for rendering
(hereinafter, "rendering process") an object using an attribute
reference is shown in accordance with ail embodiment of the present
invention. The attribute reference corresponds to a row 104 and
column 102 intersection in a style matrix, such as the style matrix
100 shown in FIG. 1. As such, each intersection defines an
attribute that is to be applied to the object when rendered in
accordance with an embodiment of the present invention. It should
be appreciated that the present invention is not limited to the
object having any specific number of attributes references, and
indeed, any number of references are contemplated within the scope
of same. Additionally, a combination of actual attribute values and
attribute references may be stored or maintained according to an
embodiment of the present invention. Such a combination may be used
to force some attribute values to static values, while enabling
others to dynamically change based on the application into which a
given object is imported (and thus, the style matrix 100 addressed
by an attribute reference). This embodiment provides application
developers the ability to hardcode some values, while leaving
others application-dependent or theme-dependent.
[0032] The rendering process 300 is performed using an operation
flow beginning with a start operation 302 and ending with a
terminate operation 312. The start operation 302 is initiated in
response to a user requesting the display of the object in an
electronic document. From the start operation 302, the operation
flow passes to a retrieve operation 304. The retrieve operation 304
retrieves one or more attribute references associated with the
object. In an embodiment, each attribute reference is in the form
of a coordinate pair identifying by row 104 and column 102 the
intersection refinancing individual attribute values in the style
matrix 100. Alternatively, the attribute references may be in the
form of pointers to positions in memory that contains data
representing the style matrix 100. Moreover, one skilled in the art
will appreciate that arbitrarily many levels of additional
indirection (e.g., a pointer to a pointer to a position in memory
that contains the style matrix 100) may be implemented without
departing from the scope of the present invention. After the
retrieve operation 304 has retrieved the one or more attribute
references, the operation flow passes to a look-up operation
306.
[0033] The look-up operation 306 uses the retrieved attribute
reference(s) to look up the corresponding attribute value(s) in the
style matrix 100. As previously discussed in conjunction with
retrieve operation 304, the attribute references may take the form
of coordinate addresses in the style matrix 100, or alternatively,
pointers to memory, or other method of reference indirection known
in the art. Thus, the look-up operation 306 may locate the
referenced attribute value(s) using coordinates to traverse the
matrix 100, or alternatively, by accessing the value(s) pointed to
by a pointer to memory.
[0034] From the look-up operation 306 the operation flow passes to
a generate operation 308. The generate operation 308 generates a
property bag for the object. In an embodiment, the property bag is
a structured grouping of the attribute value(s) associated with an
object, as determined by the look-up operation 306. The generated
property bag may be a permanent or temporary data structure, and if
temporary, the property bag is destroyed or reused after the object
is rendered in the electronic document (i.e., as a result of a
render operation 310, described below). It should also be
appreciated that the a property bag may hold other object-specific
or inherited general data, in addition to one or more referenced
attribute value(s).
[0035] From the generate operation 308, the operation flow passes
to the render operation 310, which uses the attribute value(s)
specified in the property bag to render the object appropriately in
the electronic document. As such, the specified attribute(s), such
as, for example, line thickness, fill type and gradient, font
boldness, background, bullet types and other effects, are executed
according to the referenced attribute value(s) contained in the
style matrix 100. In an alternative embodiment, these attribute(s)
are executed according to a combination of referenced attribute
value(s) and attribute value(s) hardcoded by an application
developer, as described in more detail below.
[0036] The actual rendering of the object by the render operation
310 may be accomplished using any one of a variety of approaches.
For example, the render operation 310 may write the object directly
to a computer screen. Alternatively, the render operation 310 may
call an API (Application Program Interface) to draw the object.
Other methods of rendering known to those skilled in the art may
also be used by the render operation 310 and are contemplated
within the scope of the present invention.
[0037] Referring now to FIG. 4, a process 400 for rendering
(hereinafter, "rendering process") an object using a gallery of
styles is shown in accordance with an embodiment of the present
invention. This rendering process 400 is performed using an
operation flow beginning with a start operation 401 and ending with
a terminate operation 414. The start operation 401 is initiated in
response to a user requesting the display of the object in an
electronic document. From the start operation 302, the operation
flow passes to a receive operation 402.
[0038] The receive operation 402 receives the selection of an
object. In one embodiment, a selection may be received from a user.
In an alternate embodiment, a selection may be hardcoded by an
application developer. In yet another embodiment, a selection may
be chosen by an application using a dynamic selection method based
on the current mode of operation, attribute values of other objects
in a document, or other criteria.
[0039] From the receive operation 402, the operation flow passes to
a select operation 404. The select operation 404 selects a style in
which the object will be rendered. Selection of a style by the
select operation 404 may be performed using a loop that iterates
through each of a set of preselected styles, where a style is a
combination of attribute references, actual attribute values, or
combination thereof. In an embodiment, these preselected styles may
be defined by an application developer to include styles that have
been carefully chosen to be aesthetically acceptable. Such an
embodiment saves the application user the work of having to arrive
at professional and aesthetically pleasing styles through trial and
error.
[0040] Also, the select operation 404 may choose a position in a
style matrix 100 populated with aesthetically pleasing attribute
values. One skilled in the art will appreciate that such a position
may be referred to using matrix coordinates, address pointers into
data memory containing matrix data, or other form of data
addressing known in the art, without departing from the scope of
the claimed invention. Alternatively, the select operation 404 may
choose from a style matrix 100 populated with attribute values that
comport to a given theme.
[0041] Following performance of the select operation 404, the
operation flow passes to a look-up operation 406. The look-up
operation 406 looks up one or more actual attribute values
associated with the selected style. In an embodiment, the look-up
operation 406 involves traversing one or more layers of indirection
to arrive at actual attribute values. As described previously,
attribute references may take the form of matrix coordinates,
memory pointers, or other data addressing method known in the art,
without departing from the scope of the claimed invention.
[0042] From the look-up operation 406, the operation flow passes to
a generate operation 408. The generate operation 408 generates a
property bag for the object. As discussed above in conjunction with
generate operation 308 (FIG. 3), a property bag is a structured
grouping of the attribute value(s) associated with an object, as
determined by the look-up operation 306. Also as noted above, the
attribute value(s) may be copied into either a permanent or
temporary property bag data structure associated with an object.
Additionally, the property bag may hold other object-specific or
inherited general data, in addition to one or more actual attribute
values.
[0043] Following performance of the generate operation 408, the
operation flow passes to a render operation 410, which uses the
attribute value(s) specified in the property bag to render the
object appropriately in the electronic document. As such, the
specified attribute(s), such as, for example, line thickness, fill
type and gradient, font boldness, background, bullet types and
other effects, are executed according to the referenced actual
attribute value(s) contained in the style matrix 100. In an
alternative embodiment, these attribute(s) are executed according
to a combination of referenced attribute value(s) and attribute
value(s) hardcoded by an application developer, as described in
greater detail below.
[0044] The actual rendering of the object by the render operation
410 may be accomplished using any one of a variety of approaches.
For example, the render operation 310 may write the object directly
to the screen. Alternatively, the render operation 410 may call an
API (Application Program Interface) to draw the object. Other
methods of rendering known to those skilled in the art may be used
by the render operation 410 and are contemplated within the scope
of the present invention.
[0045] From the render operation 410, the operation flow passes to
a determine operation 412, which determines whether there are
additional styles in which the selected object must be rendered. If
additional styles need to be rendered, the operation flow branches
"YES" to the select operation 404, discussed above. If no
additional styles need to be displayed, the operation flow branches
"NO" and concludes at the terminate operation 414.
[0046] In one embodiment, style portrayals rendered in a gallery
may be clicked on or otherwise selected to choose the attribute
values associated with that style. New objects created in the
application will thus take on attribute values according to the
selected style. The gallery thus provides an efficient way to
select a collection of aesthetically compatible attributes using
only a single click, instead of manually and/or independently
selecting each attribute value. In another embodiment, a gallery
has a corresponding data structure which represents a style matrix
(e.g., 100) of its own, in which each matrix position contains a
plurality of attribute values.
[0047] In an alternate embodiment, style selections in a gallery
may be traversed without actually rendering a gallery. Instead, a
"volume control" may be used to modulate how pronounced (and thus
"loud," or attention-grabbing) a style an object uses. For example,
said volume control may take the form of a slider bar with the
least pronounced style on one extremity, and the most pronounced
style on the opposite extremity. Each successive advancement in the
control corresponds to a more pronounced preselected position in a
style matrix or gallery. While a slider bar is described here
according to an exemplary embodiment, it should be appreciated that
other GUI controls, including, without limitation, a scroll wheel
and keyboard, may be used to modulate how pronounced a style is
selected.
[0048] In yet another embodiment, a gallery is rendered, and a
"volume control" is used to traverse the gallery selections and
select successively more or less pronounced styles. In still
another embodiment, users manually change attribute values
independent of the style gallery, but are warned with a popup
window or similar notification that they are leaving the "aesthetic
safe zone" of predetermined, mutually-compatible attribute values
provided in the style matrix. Even further, another embodiment
involves users altering computer desktop theme settings using a
style matrix (e.g., 100) and style gallery and rendering the
computer desktop as an electronic document application object. And
yet, even another embodiment involves users controlling document
theme settings using a style matrix and style gallery. In this
embodiment, substituting one matrix for another generates global
changes to a plurality of elements within a document. A wide
variety of visual styles can thus be generated without requiring
users to manually create a template for each new "look."
[0049] Referring now to FIG. 5, a process 500 for creating
("creation process") style matrices (e.g., 100) is shown in
accordance with an embodiment of the present invention. The
creation process 500, which may also be administered to alter an
existing style matrix (e.g., 100), is performed using an operation
flow beginning with a start operation 501 and concluding with a
terminate operation 508. The start operation 501 is initiated in
response to a user requesting the creation of one or more style
matrices (e.g., 100) and proceeds to an associate operation 502.
The associate operation 502 first associates one or more new style
matrices (e.g., 100) with a given application. In one embodiment,
such matrices (e.g., 100) may be created by a developer using trial
and error on a wide variety of objects to ensure maximal aesthetic
compatibility between the various style attributes in a given style
matrix position. In an alternate embodiment, styles may be chosen
from a preexisting library of styles. In yet another embodiment,
styles may be selected by a computer using an automatic method
that, using the "None" and "Most Intense" endpoints, generates
middle points along an axis of intensity. From the associate
operation 502, the operation flow passes to a receive operation 504
and awaits reception of a signal, as described in the following
paragraph. After an application is released to users, the users may
leverage its associated style matrix (e.g., 100) to quickly and
efficiently select a set of style attributes. In such a case, the
receive operation 504 receives a signal to create a new object,
load an existing object, or import an object from another
application. The attribute references associated with the object
are then mapped to a corresponding style in the style matrix by a
map operation 506 and the operation flow thereafter concludes at
the terminate operation 508.
[0050] FIG. 6 is a block diagram illustrating modules that comprise
one embodiment of the present invention. A lookup module 602
performs reference lookups to find actual attribute values. As
such, the lookup module 602 performs the look-up operation 306 and
the look-up operation 406 illustrated in FIGS. 3 and 4,
respectively according to embodiments of the invention described
above. As described in connection with these operations, above, a
reference lookup may involve either accessing attribute value(s)
defined by a set of one or more coordinates in a style matrix
(e.g., 100) or accessing a memory address containing style matrix
data using a pointer to memory. Those of skilled in the art will
recognize that other forms of addressing data known to those in the
art are contemplated within the scope of the present invention.
[0051] Property bag module 604 performs creation of property bags,
and populates a property bag with the attribute value(s) found by
lookup module 602. As such, the lookup module 604 performs the
look-up operation 308 and the look-up operation 408 illustrated in
FIGS. 3 and 4, respectively according to embodiments of the
invention described above. The property bag module 604 is also
operable to perform updates on existing property bags in accordance
with an embodiment of the present invention. In accordance with
another embodiment, the property bag module 604 is also operable to
perform deletion of existing property bags and/or reallocation of
existing property bags so that they may be reused for other
objects.
[0052] Render module 606 renders objects using one or more actual
attribute value(s) stored in a property bag created by property bag
module 604. As such, the lookup module 604 performs the look-up
operation 310 and the look-up operation 410 illustrated in FIGS. 3
and 4, respectively according to embodiments of the invention
described above. As such, the render module 606 is operable to
write objects directly to the screen, or alternatively may render
objects through the use of API's. Additionally, the render module
606 may be operable to render objects within a file, but not
necessarily to a display device, for later viewing.
[0053] A gallery module 608 renders a gallery containing various
styles that may be assigned to an object. In one embodiment, style
portrayals rendered by the gallery module may be clicked on or
otherwise selected to choose the attribute values associated with
that style. The gallery module will then propagate those attribute
values to the object data structure.
[0054] In an alternate embodiment, style selections in the gallery
module may be traversed without actually rendering the gallery.
Instead, a "volume control" may be provided by the gallery module,
as discussed above in conjunction with FIG. 4. In another
embodiment, a mouse wheel may be used to modulate how pronounced
the selected style is. In yet another embodiment, keystrokes may be
used to similar effect. In yet another embodiment, the gallery
module renders a gallery, and a "volume control" as discussed above
may be used to traverse the gallery selections and select
successively more or less pronounced styles.
[0055] Referring now to FIG. 7, shown therein is an illustration of
an embodiment of a style matrix 704, and an object rendered using
two different sets of attribute values from the style matrix 704.
An object 702 exists, which in an embodiment is a chart including a
graph. The style matrix 704 includes rows corresponding to various
attribute types (e.g., Line, Fill, Effect, and Background) and
columns corresponding to various attribute values (e.g., Null,
Subtle, Moderate, Intense). At each intersection of a column and
row, a given attribute type with a given attribute value is
portrayed. For example, a Subtle attribute value of type Line
depicts a thin line, whereas an Intense attribute value of type
Line depicts a much thicker and more easily seen line.
[0056] When an object 702 is combined with the style matrix 704 and
a color scheme 706, the three combine to form a rendered object
(708, 710). One rendered object 708 is shown that includes a chart
grid with a Subtle Line attribute value, a chart bar with a
Moderate Line attribute value, a Subtle Fill attribute value, and a
"Null" Effect attribute value (which indicates no effect should be
used). Rendered object 708 also has a Null Background attribute
value, and a chart border with a Moderate Line attribute value.
[0057] In contrast, rendered object 710 is shown which results from
a different combination of attribute values than rendered object
708. Rendered object 710 includes a chart grid with a Subtle Line
attribute value, a chart bar with a Moderate Line attribute value,
a Moderate Fill attribute value, and a "Null" Effect attribute
value (which indicates no effect should be used). Rendered object
710 further includes a Null Background attribute value, and Null
Line value for its chart border. One skilled in the art will
appreciate that the fill styles for the chart bars, and the line
styles for the chart borders are different between the two rendered
objects 708 and 710.
[0058] The various embodiments described above are provided by way
of illustration only and should not be construed to limit the
invention. Those skilled in the art will readily recognize various
modifications and changes that may be made to the present invention
without following the example embodiments and applications
illustrated and described herein, and without departing from the
true spirit and scope of the present invention, which is set forth
in the following claims. For example, the style matrix 100 is shown
in FIG. 1 and described herein with the columns 102 being
associated with attribute values and the rows 104 being associated
with attribute types, but may alternatively present attribute types
in the columns 102 and attribute values in the rows 104.
[0059] Embodiments of the present invention involve attributes
being addressed in attribute references using either coordinate
mapping or pointers, both of which uniquely define an attribute by
row 104 (e.g., attribute type) and column 102 (e.g., attribute
value) in the style matrix 100. As a result, an embodiment of the
present invention eliminates the need to store or maintain
attributes within each particular object. One skilled in the art
will appreciate that this level of indirection has many other
advantages including, among other things, a memory savings and more
efficient portability of objects (and thus, electronic documents)
from one application program to another.
* * * * *