The look and feel of an operating system's user interface provides the primary user experience with the operating system. For example, the user experience is based on what the windows of a graphical windowing environment look like, how they are positioned on the screen relative to other windows, and so forth.
The cost to change the look and feel of an operating system is significant. In general, a design team provides a design, and programmers code the operating system to match what the design team desires. As new innovations and designs emerge, the cost is repeated whenever a new look and feel is specified.
Briefly, various aspects of the present invention are directed towards a policy component that is a plug-in to a substrate, in which the policy component determines the look and feel, or windows visual experience, of a user interface. The plug-in policy component handles windows-related (e.g., structural or attribute) changes to a scene graph, while the substrate handles program content changes to the client area within a window.
Window-related instructions and client area change instructions are separated such that the window-related instructions are provided to the policy component, and the client area change instructions are provided to the substrate, including a composition component. The window-related instructions are processed by the policy component to construct and maintain a scene graph, while the client area change instructions are processed at the composition component to change visible data output in the client areas within the scene graph. A redirection component, which may be part of the substrate, may be used to perform the separation.
The substrate may include a desktop window manager that has access to the client areas in the scene graph, whereby the desktop window manager can copy a client area for rendering. For example, the desktop window manager can provide a supplemental live thumbnail image of a window.
The policy component thus is responsible for the look and feel of windows rendered from the scene graph. By replacing the pluggable policy component with another pluggable policy component, a different look and feel of windows rendered from the scene graph may be provided.
Other advantages will become apparent from the following detailed description when taken in conjunction with the drawings.
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Exemplary Operating Environment
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 110 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 110 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. 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. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk 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 the computer 110. 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. Combinations of the any of the above should also be included within the scope of computer-readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, described above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160 or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Pluggable Window Manager Architecture
A scene graph comprises a data structure in which graphics instructions are retained for later rendering. Alternative synonymous terms for “scene graph” as used herein include “display list,” “display tree,” and “retained mode graphics system.”
Various aspects of the technology described herein are directed towards a desktop window manager architecture that is designed to include a pluggable visual policy for windows atop a scene graph layer that provides the user window experience, while providing a number of productivity, reliability and other visual benefits. In one implementation, a desktop window manager includes a pluggable visual policy component, or layer, that provides the visual policy (including semantics) for the user window experience with the system, e.g., the appearance of windows, how the windows are positioned on the screen relative to other windows, and so forth. Because the visual policy component is pluggable, subsequent releases and/or different arrangements of the operating system may replace one implementation with another implementation that can change the look and feel of the user experience, in potentially drastic ways, such as, for example, a complex three-dimensional world. In general and as described below, this pluggability can be accomplished without changes to the underlying code (referred to herein as a substrate) that manages most of the interactions with the rest of the operating system. As a result the cost and effort of implementing a new and innovative look and feel is substantially reduced.
However, as will be understood, the present invention is not limited to any architecture described herein, but may also apply to other architectures. For example, the examples herein are described in the context of a Microsoft Windows®-based operating system and framework, however the present invention will apply to other operating systems and/or frameworks. Moreover, the division of functionality and structure between the various components is somewhat arbitrary, and it is also equivalent to have the functionality and structure implemented in a lesser number of components, or in more components, than those described herein. As such, any of the examples mentioned herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing in general.
Turning to
The desktop window manager may be written with any technology. For example, as represented in
In general, if present, the unmanaged desktop window manager component 204U calls functions of a media integration layer (MIL) core 208, while if present, the managed desktop window manager component 204M calls functions of a managed (e.g., CLR/.NET) framework 206, which in turn calls the media integration layer (MIL) core 208. In one implementation, the managed framework 206 allows programs to output their user interface code in markup language such as XAML, and also provides higher-level operations such as styling, data binding and inheritance. Note that an alternative window manager may be written in managed code yet use the low level MIL functionality, e.g., rather than XAML.
A primary function of the desktop window manager 204 is to process the off-screen surfaces to which the application programs have provided content and other instructions, and/or directly compose from application program graphics instructions. The desktop window manager 204 knows about these surfaces, and receives notifications about when they change, as well as when they are moved, resized and so forth. The desktop window manager 204 processes this information, and, having access to the surfaces and/or instruction streams (corresponding to windows) of the applications, is responsible for compositing them for rendering to the display.
Note that because the desktop window manager 204 sets up the composition of these windows, the desktop window manager 204 can perform additional functionality that cannot be done in operating systems in which applications write directly to the screen. For example, the desktop window manager 204 can take some or all of the various existing windows and show live thumbnails of existing windows. Alternatively, the desktop window manager 204 can present the various windows in a three-dimensional carousel-type configuration, with their current live content displayed. Virtually any other types of rendered output using the surfaces as sources of graphics data are feasible. Such supplemental displays of the client area may be rendered independent of whether the client area is also being shown in its corresponding program window at the same time.
In accordance with various aspects of the present invention, the desktop window manager 204 includes or is otherwise associated with a pluggable visual policy 320 (
In general, the UCE 328 writes and adjusts the client area (CA) of program windows represented by nodes in the scene graph 324. The client areas correspond to the per-application surfaces or instruction streams, and may be bitmaps or retained mode subtrees (e.g., vector graphics describing a scene subgraph). The UCE, which is part of the substrate and thus need not be replicated with each new policy, avoids having a policy developer have to handle tasks such as dirty rectangle management, occlusion culling, rendering code, scheduling code, window redirection and the like that are already provided in the UCE.
The pluggable visual policy 320 constructs and adjusts other aspects of the windows, including the non-client areas (NCA) such as the frame (FR) and window-related buttons (BTN) such as minimize, maximize and close. The pluggable visual 320 policy builds the tree below the desktop (DT) based on other application program-specified or operating system-specified operations, including window creation, window deletion, a window Z-order change, a window resize, a change to window information (e.g., title, icon, style, and so forth), window closing, window minimizing, window maximizing, window menu invoking, and so forth. The pluggable policy component 320 may also perform tree-related operations such as to place and/or modify transformation nodes (TF) in the tree, e.g., for scaling/magnification purposes, and/or to cause a thumbnail of a window to be displayed on another part of the tree.
The UCE 328 is a consumer of the scene graph 324, and is responsible for traversing it, and invoking code of a renderer 330 as appropriate. The result is a rendered desktop 332 including its windows W1-W3. Note that only changes to the scene graph 324 need be updated, thus saving significant processing resources. Indeed, the retained nature of the UCE also lends itself well to remoting the visual policy/window experience across the network to a separate client machine, in that because it is retained, the structure can be sent just once, with only edits subsequently sent.
As represented in
In general, the window redirection component 326 receives graphics-related data from the operating system kernel component 444 via a LPC (local procedure call) port or the like, such as when an application program requests via an operating system API to write to the display, e.g., via GDI graphics. Note that this communication path from the operating system kernel to the window redirection component 326 handles synchronous calls (e.g., related to hit testing) and asynchronous calls (e.g., related to window information and client area).
The window redirection component 326 also may receive application program-generated DX graphics instructions, and may receive retained mode (e.g., vector) graphics instructions from application programs that intend to write to retained surfaces or provide instruction streams for direct composition, rather than directly to the display. In general, regardless of whether the program is intending immediate mode graphics or retained mode graphics, the window redirection component 326 routes application content directed to the client area of a program window to a corresponding surface or the instruction stream for direct composition, thereby providing retained mode graphics.
The pluggable policy component 320 may receive calls from the window redirection component 326. Such calls are directed to messages such as “Window Moved,” “Window Came to Front,” “Window Closed,” a request “Tell what section of the window was hit,” and so forth. Note that the calls may be synchronous, or may be asynchronous by having the window redirection component comprise a separate thread that queues such messages for dequeuing by the pluggable policy component 320. If asynchronous, a separate communications path may be provided for synchronous out-of-band communication between the pluggable policy component 320 and the redirection component 326.
In one implementation, the input to the pluggable policy component 320 does not contain a “Window Content Changed” message, which occurs whenever the application-specific content of the window is changing, and is typically what happens most frequently. Such messages are handled directly in the window redirection component 326, considered part of the substrate, and are instead routed to the UCE 328 for writing to or otherwise modifying the application program's corresponding surface.
This separation between program content-related messages and window structure/attribute-related messages means that most commands are handled by the substrate, whereby less message handling is required by the provider of the pluggable policy component 320, making it simpler to implement. Moreover, to make development of a plug-in component 320 even more straightforward, with the managed desktop window manager 204M (
Returning to
As described above, the output from the pluggable policy component 320 to the UCE 328 is used for building up and performing edits on the overall scene graph 324 that is rendered into the desktop 332. The pluggable policy component 320 constructs and edits the scene graph 324 representing the desktop, by using constructs (e.g., text, lines, shapes, video, images, 3D, and so forth). This may include changing the shape of the graph, e.g., adding and removing windows, but also may include changing attributes in the tree, e.g., changing a transform to change magnification from 0.5 to 1.2. The pluggable policy component 320 may also include more than one policy, and differentiate among sources of such messages, e.g., a managed application program can have a managed policy (e.g., window style and/or behavior), while an unmanaged application program can have an unmanaged policy.
The pluggable policy component 320 also has access to the redirected application windows, which it uses to construct the scene to be displayed. As described above, displays such as thumbnails of the live windows, carousels and other ways to display the live windows are thus capable of being rendered.
In summary, the substrate provides a set of services and abstractions that the developer of the pluggable policy component can leverage to provide a different window experience. Further, because the pluggable policy component is atop a scene graph API that is called to construct and maintain a retained mode scene graph, the pluggable policy component need not be concerned with processing the graphics and/or controlling the rendering loop, and instead lets such operations be handled by the substrate. This frees the pluggable policy component to be expediently written to provide new window experiences.
The development may be facilitated by use of the API set of a managed framework, e.g., using CLR/.NET framework entities. The scene graph API may provide very rich media functionality, including 2D, 3D, vector graphics, video, high quality text, and so forth.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.
Number | Name | Date | Kind |
---|---|---|---|
6266053 | French et al. | Jul 2001 | B1 |
6307558 | Mao | Oct 2001 | B1 |
6765574 | Mao et al. | Jul 2004 | B1 |
6983283 | Sowizral et al. | Jan 2006 | B2 |
7184038 | Sowizral et al. | Feb 2007 | B2 |
7290216 | Kawahara et al. | Oct 2007 | B1 |
7466315 | Beda et al. | Dec 2008 | B2 |
20050182844 | Johnson et al. | Aug 2005 | A1 |
20060010454 | Napoli et al. | Jan 2006 | A1 |
20060028479 | Chun et al. | Feb 2006 | A1 |
Number | Date | Country | |
---|---|---|---|
20070061733 A1 | Mar 2007 | US |