U.S. patent application number 13/173885 was filed with the patent office on 2011-10-27 for plug-in architecture for window management and desktop compositing effects.
Invention is credited to David Reveman.
Application Number | 20110261053 13/173885 |
Document ID | / |
Family ID | 39677246 |
Filed Date | 2011-10-27 |
United States Patent
Application |
20110261053 |
Kind Code |
A1 |
Reveman; David |
October 27, 2011 |
PLUG-IN ARCHITECTURE FOR WINDOW MANAGEMENT AND DESKTOP COMPOSITING
EFFECTS
Abstract
The system and method described herein relates to a plug-in
architecture that enables accelerated rendering and compositing of
one or more graphical effects instantiated by one or more separate
visual effect plug-ins. The plug-in architecture enables setting up
visual effects, accepting graphical output requests, customizing
visual effects, and/or allowing enhanced graphics rendering for
desktop usage, among other things. The invention provides a modular
approach to customizing and rendering visual effects. The plug-in
architecture enables plug-ins to be exchanged, modified, removed,
and added, among other things.
Inventors: |
Reveman; David; (Boston,
MA) |
Family ID: |
39677246 |
Appl. No.: |
13/173885 |
Filed: |
June 30, 2011 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11702646 |
Feb 6, 2007 |
7996787 |
|
|
13173885 |
|
|
|
|
Current U.S.
Class: |
345/419 ;
345/581 |
Current CPC
Class: |
G06F 9/451 20180201;
G06F 3/0481 20130101 |
Class at
Publication: |
345/419 ;
345/581 |
International
Class: |
G09G 5/00 20060101
G09G005/00; G06T 15/00 20110101 G06T015/00 |
Claims
1. An apparatus for window management and desktop compositing
effects, comprising: a computer readable storage medium configured
to store one or more visual effect instructions to render one or
more visual effects on a desktop; a graphics card configured to
execute the one or more visual effect instructions to render the
one or more visual effects on the desktop; and one or more
processors coupled to the computer readable storage medium, wherein
the one or more processors are configured to: detect one or more
events associated with a window displayed on the desktop;
instantiate the one or more visual effects in response to
determining that the one or more visual effect instructions
associate the one or more detected events with the one or more
visual effects; and issue the one or more visual effect
instructions to the graphics card in response to determining that
the one or more visual effect instructions associate the one or
more detected events with the one or more visual effects, wherein
the issued visual effect instructions cause the graphics card to
combine the one or more instantiated visual effects with the window
displayed on the desktop and thereby composite the displayed window
and the one or more instantiated visual effects.
2. The apparatus recited in claim 1, wherein the one or more visual
effect instructions include one or more pre-configured or
customized event bindings that associate the one or more detected
events with the one or more visual effects.
3. The apparatus recited in claim 2, wherein the one or more
pre-configured or customized event bindings associate one or more
keyboard events, mouse events, touch screen events, or application
events with the one or more visual effects.
4. The apparatus recited in claim 1, wherein the one or more
instantiated visual effects include a cube visual effect to map the
desktop to a three-dimensional cube and a rotate visual effect to
manipulate the three-dimensional cube.
5. The apparatus recited in claim 4, wherein the one or more visual
effect instructions define a dependency between the cube visual
effect and the rotate visual effect to enable manipulating the
three-dimensional cube via the rotate visual effect.
6. The apparatus recited in claim 1, wherein the issued visual
effect instructions further cause the graphics card to configure a
speed associated with the one or more instantiated visual effects,
a location to place the composited window on the desktop, an
opacity that the composited window has while being moved within the
desktop, or a size associated with a shadow that the composited
window has on the desktop.
7. The apparatus recited in claim 1, further comprising a display
device, wherein the issued visual effect instructions cause the
graphics card to hardware render the composited window and the one
or more instantiated visual effects on the display device.
8. A method for window management and desktop compositing effects,
comprising: store one or more visual effect instructions to render
one or more visual effects on a desktop; storing one or more visual
effect instructions to render a visual effect on a desktop;
detecting one or more events associated with a window displayed on
the desktop; instantiating the visual effect in response to
determining that the one or more visual effect instructions
associate the one or more detected events with the visual effect;
and issue the one or more visual effect instructions to a graphics
card in response to the one or more visual effect instructions
associating the one or more detected events with the visual effect,
wherein the graphics card executes the issued visual effect
instructions to combine the instantiated visual effect with the
window displayed on the desktop and thereby composite the displayed
window and the instantiated visual effect.
9. The method recited in claim 8, wherein the one or more visual
effect instructions include one or more pre-configured or
customized event bindings that associate the one or more detected
events with the visual effect.
10. The method recited in claim 9, wherein the one or more
pre-configured or customized event bindings associate one or more
keyboard events, mouse events, touch screen events, or application
events with the visual effect.
11. The method recited in claim 8, wherein the instantiated visual
effect maps the desktop to a three-dimensional cube that can be
rotated to manipulate the three-dimensional cube.
12. The method recited in claim 11, wherein the one or more visual
effect instructions define a dependency between the cube visual
effect and a rotate visual effect that enables the
three-dimensional cube to be rotated and manipulated.
13. The method recited in claim 8, wherein the graphics card
further executes the issued visual effect instructions to configure
a speed associated with the instantiated visual effect, a location
to place the composited window on the desktop, an opacity that the
composited window has while being moved within the desktop, or a
size associated with a shadow that the composited window has on the
desktop.
14. The method recited in claim 8, wherein the graphics card
further executes the issued visual effect instructions to hardware
render the composited window and the instantiated visual effect on
a display device.
15. A system for window management and desktop compositing effects,
wherein the system comprises one or more processors configured to:
store one or more visual effect instructions to render a visual
effect on a desktop; detect one or more events associated with a
window displayed on the desktop; instantiate the visual effect in
response to determining that the one or more visual effect
instructions associate the one or more detected events with the
visual effect; and issue the one or more visual effect instructions
to a graphics card in response to the one or more visual effect
instructions associating the one or more detected events with the
visual effect, wherein the issued visual effect instructions cause
the graphics card to combine the instantiated visual effect with
the window displayed on the desktop and thereby composite the
displayed window and the instantiated visual effect.
16. The system recited in claim 15, wherein the one or more visual
effect instructions include one or more pre-configured or
customized event bindings that associate the one or more detected
events with the visual effect.
17. The system recited in claim 16, wherein the one or more
pre-configured or customized event bindings associate one or more
keyboard events, mouse events, touch screen events, or application
events with the visual effect.
18. The system recited in claim 15, wherein the instantiated visual
effect maps the desktop to a three-dimensional cube that can be
rotated to manipulate the three-dimensional cube.
19. The system recited in claim 18, wherein the one or more visual
effect instructions define a dependency between the cube visual
effect and a rotate visual effect that enables the
three-dimensional cube to be rotated and manipulated.
20. The system recited in claim 15, wherein the issued visual
effect instructions further cause the graphics card to configure a
speed associated with the instantiated visual effect, a location to
place the composited window on the desktop, an opacity that the
composited window has while being moved within the desktop, or a
size associated with a shadow that the corn posited window has on
the desktop.
21. The system recited in claim 15, wherein the issued visual
effect instructions further cause the graphics card to hardware
render the composited window and the instantiated visual effect on
a display device.
22. A computer readable storage medium containing one or more
visual effect instructions for window management and desktop
compositing effects, wherein the one or more visual effect
instructions, when executed on a processor, cause the processor to:
determine whether the one or more visual effect instructions
associate a visual effect with one or more events detected in
relation to a window displayed on a desktop; instantiate the visual
effect in response to determining that the one or more visual
effect instructions associate the visual effect with the one or
more detected events; and combine the instantiated visual effect
with the window displayed on the desktop to composite the displayed
window and the instantiated visual effect.
23. The computer readable storage medium recited in claim 22,
wherein to combine the instantiated visual effect with the window
displayed on the desktop, the one or more visual effect
instructions, when executed on the processor, further cause the
processor to issue the one or more visual effect instructions to a
graphics card configured to combine the instantiated visual effect
with the window displayed on the desktop and thereby composite the
displayed window and the instantiated visual effect.
24. The computer readable storage medium recited in claim 22,
wherein the one or more visual effect instructions, when executed
on the processor, further cause the processor to execute the one or
more visual effect instructions to combine the instantiated visual
effect with the window displayed on the desktop.
25. The computer readable storage medium recited in claim 22,
wherein the one or more visual effect instructions include one or
more pre-configured or customized event bindings that associate the
one or more detected events with the visual effect.
26. The computer readable storage medium recited in claim 25,
wherein the one or more pre-configured or customized event bindings
associate one or more keyboard events, mouse events, touch screen
events, or application events with the visual effect.
27. The computer readable storage medium recited in claim 22,
wherein the instantiated visual effect maps the desktop to a
three-dimensional cube that can be rotated to manipulate the
three-dimensional cube.
28. The computer readable storage medium recited in claim 27,
wherein the one or more visual effect instructions define a
dependency between the cube visual effect and a rotate visual
effect that enables the three-dimensional cube to be rotated and
manipulated.
29. The computer readable storage medium recited in claim 22,
wherein the one or more visual effect instructions, when executed
on the processor, further cause the processor to configure a speed
associated with the instantiated visual effect, a location to place
the composited window on the desktop, an opacity that the
composited window has while being moved within the desktop, or a
size associated with a shadow that the composited window has on the
desktop.
30. The computer readable storage medium recited in claim 22,
wherein the one or more visual effect instructions, when executed
on the processor, further cause the processor to hardware render
the composited window and the instantiated visual effect on a
display device.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 11/702,646, entitled "Plug-in Architecture for
Window Management and Desktop Compositing Effects," filed Feb. 6,
2007, the contents of which are hereby incorporated by reference in
their entirety.
FIELD OF INVENTION
[0002] The invention relates to rendering and compositing visual
effects for desktop display using a customizable plug-in
architecture that enhances user functions, developer functions,
customizations, and usability of the desktop.
BACKGROUND
[0003] Graphics cards are hardware cards that can be used with a
computer to generate and display output images. Graphics cards with
more advanced features and capabilities such as 3D acceleration are
currently being developed and sold. A graphics card with 3D
acceleration provides substantial resource savings from having to
render 3D graphics using processor resources only. A 3D accelerator
allows programs (e.g., games where the screen image must be
recomputed many times per second) to display virtual 3D objects
with a greater level of detail and color. With hardware 3D
acceleration, three-dimensional rendering uses the graphics
processor on the graphics card instead of taking up valuable CPU
resources for drawing 3D images. Advancement in graphics cards
allows for further development in user interfaces and in the way
users interact with their computer display.
[0004] At present there are no solutions that effectively provide
users enhanced 3D desktop graphics that may promote usability and
are customizable and easily extendable.
SUMMARY
[0005] One aspect of the invention relates to a plug-in
architecture that enables accelerated rendering and compositing of
one or more graphical effects instantiated by one or more separate
visual effect plug-ins. The plug-in architecture enables setting up
visual effects, accepting graphical output requests, customizing
visual effects, and/or allowing enhanced graphics rendering for
desktop usage, among other things. The invention provides a modular
approach to customizing and rendering visual effects. The plug-in
architecture enables plug-ins to be exchanged, modified, removed,
and added, among other things.
[0006] The plug-in architecture also allows individual visual
effect plug-ins to be implemented and managed independently. For
example, one plug-in does not have to be aware of any other
plug-ins, nor does it have to require the function of another
plug-in. Another aspect of the invention enables one or more of the
plug-ins to be grouped together to combine various desktop visual
effects (e.g., cube, rotate, etc). One advantage to using the
plug-in architecture is that it allows the collection of visual
effect plug-ins to share graphics hardware resources (e.g.,
graphics card).
[0007] In one or more embodiments a system may include a computing
device, one or more input/output devices, a desktop manager, a
plug-in architecture, one or more applications, a graphics card, an
event handler, and/or a configuration editor interface (see FIG.
1). The desktop manager may use the external plug-in architecture,
which stores a plurality of visual effect plug-ins, for loading and
compositing the one or more respective visual effects. An added
advantage to implementing an external plug-in architecture is that
it provides third party developers an open platform from which they
may easily add their own visual effect plug-ins.
[0008] The desktop manager may include at least a window manager
and compositing manager that implements all (or some) of the visual
effect plug-ins associated with the plug-in architecture. The
composite manager and/or window manager may provide visual effects
instructions to the graphics card. Together with the 3D accelerator
enabled graphics card, the system (e.g., desktop manager, plug-in
architecture, graphics card, etc.) may be used to composite desktop
effects quickly and efficiently.
[0009] The compositing manager (or other mechanism) may be used to
combine one or more visual effects (from the plug-ins) with a
currently selected window to render graphical output. A window
manager may allow the manipulation of application windows and/or
dialog windows presented on a desktop. The compositing manager and
window manager may be implemented at a single location or at
separate locations, respectively. The compositing manager may be
configured to issue visual effects instructions to a graphics card
according to one or more of the effect plug-ins.
[0010] As discussed, visual effects may be implemented by the
desktop manager (e.g., the window manager and compositing manager)
using the plug-in architecture. Any number of effect plug-ins may
be used (including zero). The plug-ins may be stored and managed as
dynamically linked libraries in a directory. Configuration data for
the each plug-in may be stored in a registry (e.g., Gconf). The
registry may be organized in a hierarchy (like registry in
Windows). Using a configuration interface, user's can access and
modify settings related to each plug-in. For example, the
function-key bindings for the various compositing operations, the
speed of the effects, among other things, may be customized.
[0011] The plug-in architecture also allows individual plug-ins to
be removed without affecting operations of any other plug-ins.
Although each plug-in is managed independently, one or more
plug-ins may be grouped to be dependent on another plug-in. For
example, if a cube plug-in is turned on, then a rotate plug-in may
be helpful to manipulate the cube interface. Thus, plug-ins may be
grouped together to form dependences when desired.
[0012] In general, the plug-in architecture provides a highly
customizable open architecture that provides desktop effects to
users. Broadly, any number of effect plug-ins may be used to
composite window effects including but not limited to, decoration,
fade, wobble, minimize, cube, rotate, zoom, scale, move, resize,
place, and switcher, among other effects. One or more effect
plug-ins may be supplied from third party developers.
[0013] The system and method of the invention also allows multiple
effects to share graphics hardware resources. The nature of the
plug-in architecture allows user/developers to stack any of their
own plug-ins to existing and/or created plug-ins. One or more
effects may be stacked in order to create a pipeline of effects to
fully customize effects. The invention also provides a way to add
new effects and functionality to the desktop in a more frequent and
reliable way thus making it possible to keep up with how fast the
graphics hardware industry is evolving.
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] FIG. 1 illustrates a high-level block diagram for a system,
according to an embodiment of the invention.
[0015] FIG. 2 illustrates an exemplary configuration interface,
according to an embodiment of the invention.
[0016] FIG. 3 illustrates a flow diagram for a method related to
compositing window effects, according to an embodiment of the
invention.
DETAILED DESCRIPTION
[0017] One aspect of the invention includes a plug-in architecture
18 that provides visual effects information for compositing and
rendering desktop effects for output. The plug-in architecture
enables setting up visual effects, accepting graphical output
requests, customizing visual effects, and/or allowing enhanced
graphics rendering for desktop usage, among other things. The
invention provides a modular approach to customizing and rendering
visual effects. The plug-in architecture 18 enables plug-ins to be
exchanged, modified, removed, and added, among other things.
[0018] FIG. 1 illustrates a high-level block diagram for a
computing system, according to an embodiment of the invention. In
one or more embodiments, the system of the invention may include,
among other things, a computing device 10 (e.g., PC, client
computer, etc.), one or more input/output devices (2, 4, 6, 8), a
graphics card 12, an event handler 14, a desktop manager 16, a
plug-in architecture 18, one or more applications (20a, 20b),
and/or a configuration interface 22. The elements of FIG. 1 may be
interconnected using commonly known hardware and/or software
techniques within a computer system to enable communication between
the one or more components.
[0019] In some embodiments the plug-in architecture 18 may include
one or more visual effect plug-ins (18a, 18b). The plug-in
architecture 18 may be an external component that effectively
provides a modular architecture for implementing a plurality of
effect plug-ins. The plug-in architecture also allows a plurality
of plug-ins to share graphics hardware resources (e.g., desktop
manager 16, graphics card 12).
[0020] One or more effect plug-ins may be supplied from third party
developers in order to expand the number and/or functionality of
visual effect plug-ins that may be implemented on the system.
Examples of effect plug-ins include, but are in no way limited to,
decoration, fade, wobble, minimize, cube, rotate, zoom, scale,
move, resize, place, and/or switcher.
[0021] The plug-ins may be stored and managed as dynamically linked
libraries in a directory. Configuration data for each plug-in may
be stored in a registry (e.g., Gconf). The registry may be
organized in a hierarchy (as shown in FIG. 1). As shown in FIG. 1,
each plug-in (e.g., plug-in1, plug-in2, plug-in3 may have
configuration options that may be customized. And one or more
plug-ins may be grouped based on source, type, and/or other
grouping configuration. The plug-in architecture also enables each
plug-in to be managed independently of one another. Individual
plug-ins may be removed, added, and/or modified without effecting
operations of other plug-ins. For example, one plug-in may operate
irrespective of another plug-in, thus it may not require the
functions of any another plug-in(s).
[0022] The plug-in architecture 18 may provide the desktop manager
16 with information regarding the one or more effect plug-ins to
composite and render. In some embodiments, the desktop manager 16
may include a compositing manager 16a and a window manager 16b
(and/or some other mechanism(s)). The compositing manager 16a can
composite windows with visual effects based on one or more effect
plug-ins instantiated from the external plug-in architecture 18.
The compositing manager 16a may be used to combine one or more
visual effects (e.g., plug-ins) together to display windows. This
system effectively allows plug-ins to be managed and rendered at
separate locations such as the plug-in architecture 18 and desktop
manager 16, respectively.
[0023] The window manager 16b may execute in combination with the
compositing manager 16a. The window manager 16b may allow
manipulation of application windows and/or dialog windows presented
on a desktop display. Both the window manager 16b and the
compositing manager 16a may be configured to achieve graphical
effects according to the one or more effect plug-ins (18a, 18b).
The compositing manager 16a may issue visual effects instruction to
a graphics card 12 according to the one or more effect plug-ins
(18a, 18b). Thus, together with a 3D accelerator enabled graphics
card 12, the system (e.g., desktop manager 16, plug-in architecture
18, graphics card 12, etc.) may be used to composite desktop
effects quickly and efficiently.
[0024] The event handler 14 may be implemented to receive and
process event information, among other things. The event handler 14
may be executed as part of the desktop manager 16 or implemented
separately (as shown). In either implementation the event handler
14 may detect events occurring on the computer system 10 (or
associated with the computer system) to determine whether the
detected event(s) trigger a visual effect plug-in.
[0025] In some examples, event information may be based on input
received from one or more input devices (e.g., mouse, keyboard,
touch screen, and/or any other input device). In another example,
event information may be application initiated events including,
but not limited to the creation of an application window and/or
closing an application window. Other event examples may exist.
[0026] Events may be used to trigger one or more plug-in effects
stored at the plug-in architecture 18. For example, a zoom effect
plug-in may be triggered based on the user pressing the "Ctrl" and
"+" keys at the same time. In another example, as windows appear
and disappear a fade-in/fade-out effect may be rendered.
[0027] The configuration interface 22 may be used to pre-configure
individual plug-ins to be associated with the occurrence of one or
more events. Thus, the detection of a corresponding event(s) can
trigger a visual effect plug-in to be instantiated by the event
handler 14 and then composited by the compositing manager 16a. The
configuration interface 24 enables the user to select which
plug-ins to enable, customize key bindings (and mouse bindings)
associated with effect plug-ins, change aspects of the visual
effects, and/or install more effect plug-ins, among other things.
Thus, the system provides a manageable visual effects platform that
can be customized to user's preferences. This may be particularly
beneficial for those requiring certain screen viewing and/or
display attributes (e.g., magnified text, multiple desktops,
etc.).
[0028] The configuration interface 22 may be used to configure
event bindings (e.g., key-bindings, mouse bindings, etc.) for each
plug-in. For example, the configuration interface 22 may be used to
set default and/or customized key bindings and mouse bindings for
instantiating visual effects. A key binding may be a set of
shortcut keystrokes (e.g., Ctrl+N, Alt+C, etc.).
[0029] The user may also choose to disable and/or enable one or
more effect plug-ins. The configuration interface 22 may be further
used to configure properties associated with each plug-in effect.
For example, properties may include speed of the effect, algorithm
used to place windows, opacity of windows while being moved, size
of shadows, etc. Any number of effect properties may be configured
for a plug-in. Properties may be plug-in specific. FIG. 2 is an
exemplary screen shot 100 of a configuration interface 22,
according to one embodiment of the invention. The interface itself
may be displayed in any number of ways and the illustration in FIG.
2 is not meant to be limiting.
[0030] FIG. 3 discloses an exemplary method associated with the
foregoing system of the invention. The method may initially load
one or more stored effect plug-ins (operation 202). A list of
plug-ins may be loaded via command line arguments (and/or other
mechanism). Once the desired plug-ins and corresponding
configuration information is loaded, the process may proceed to
make use of the one or more plug-ins.
[0031] Operation 204 detects event information (e.g., keyboard
event, mouse event, application event, etc.). Detection of events
is followed by a determination whether the event triggered a
plug-in (operation 206). If an event does trigger a plug-in then
the plug-in effect may be composited on the selected window or
object in operation 208. Otherwise the system may go back to
operation 204 where it awaits another event. After the
corresponding plug-in is composited the actual visual effect may be
transmitted for rendering (at the graphics card) to the user's
display and/or other output device (operation 210). For example,
hardware instructions (or other instructions) may be transmitted to
a graphics card to initiate hardware rendering of the composited
visual effects.
[0032] A further feature of the present invention is the
customizability that may be performed for managing and configuring
visual effects. Although each plug-in is managed independently, one
or more plug-ins may be grouped to be dependent on another plug-in.
For example, if a cube plug in is turned on then a rotate plug-in
may be helpful to manipulate the cube interface. Thus plug-ins may
be grouped together to form dependences when desired.
[0033] Although the subject matter of this application has been
described in conjunction with the specific embodiments outlined
above, many alternatives, modifications and variations will be
evident or otherwise apparent to those skilled in the art.
Accordingly, the preferred embodiments as set forth above are
intended to be illustrative, not limiting. Various changes may be
made without departing from the spirit and scope of the following
claims.
* * * * *