Aspects of the present invention are directed to the reproduction of one or more regions of a primary desktop of a computer with an extended desktop of the same computer.
Typically, presentations (such as those that accompany speeches) are given using a computer. Typically, the presenter has access to primary and secondary display devices, where the primary display device is used by the presenter to control the computer and the secondary display device is presented for viewing by the audience. In such a configuration, the entire displayed image on the primary display device is usually cloned (i.e., duplicated) for display on the secondary display device. If the presenter is attempting to perform other functions on the computer while giving the presentation (such as taking notes or switching between applications), the audience also sees the actions that the presenter is taking. In addition, any other unexpected or otherwise automated activity performed by the computer may also be viewed by the audience (such as a received new email or instant-message notification). This can be quite embarrassing and awkward for the presenter, and may further raise privacy issues. The presenter may try to avoid these latter problems by configuring the computer prior to the presentation to turn off email and instant notification features, and then re-configuring the computer after the presentation to turn the features back on. However, this is inconvenient, time-consuming, and error-prone. In addition, such preventative measures do not resolve the problem of allowing the audience to view all actions taken by the user in interacting with the computer's user interface.
In an alternative configuration, some presenters use an extended desktop such that a primary desktop is displayed on the primary display device and the extended desktop is displayed on the secondary display device. Thus, any activities that affect only the primary desktop may likely not affect the extended desktop, and thus are hidden from the audience. However, there is no guarantee that a particular activity will not affect the extended desktop in an unintended or undesirable way. For example, it is possible that an unexpected notification or other automated activity associated with normal operations will occur at least in part on the extended desktop instead of only on the primary desktop as would be preferred by the presenter. Another drawback to this approach is that the extended desktop is no longer viewable and/or easily controllable from the primary desktop; only the most advanced users are able to successfully make a presentation by controlling the extended desktop from the primary desktop.
Accordingly, improved ways of controlling what is displayed on a primary and extended desktop are needed, especially in the realm of allowing a user to implement an effective and convenient presentation.
Aspects of the present invention are directed to reproducing one or more selected regions from the primary desktop onto the extended desktop. The extended desktop does not display any other portion of the primary desktop. In this way, the user or a software application may have discretion as to what is and is not presented on the extended desktop. Only the extended desktop (and its contents) would be visible to the audience. For example, the user may engage in other tasks or communications privately, without having to worry about inadvertently reproducing the results of these actions onto the extended desktop where the results can be viewed by others. Selected regions may be windows, regions that are custom-defined regardless of whether they include a window (referred to herein as non-window regions), or even pre-defined non-window regions (e.g., a particular quadrant of the primary desktop). Because the selected regions are already on the user's primary desktop, the user is always able to view and manipulate what is displayed on the extended desktop, by manipulation of the selected regions on the primary desktop, without having to do anything special. In addition, windows or other regions that are obscured by other object on the primary desktop are not necessarily obscured on the extended desktop.
Further aspects of the present invention are directed to an application programming interface that allows a software application and/or a software developer to access various reproduction functionality. For example, a software application may be alerted to the reproducing status of a particular selected region. Also, a software application may be able to enable or disable reproducing a particular window, such that a user may or may not be able to select that window to be reproduced onto the extended desktop.
These and other aspects of the invention will be apparent upon consideration of the following detailed description of illustrative embodiments.
The foregoing summary of the invention, as well as the following detailed description of illustrative embodiments, is better understood when read in conjunction with the accompanying drawings, which are included by way of example, and not by way of limitation with regard to the claimed invention.
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 (PCs); server computers; hand-held and other portable devices such as personal digital assistants (PDAs), tablet PCs or laptop PCs; 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.
Aspects of 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, etc. that perform particular tasks or implement particular abstract data types. The invention may also be operational with 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 both local and remote computer storage media including memory storage devices.
With reference to
Computer 100 typically includes a variety of computer-readable media. Computer readable media can be any available media that can be accessed by computer 100 such as volatile, nonvolatile, removable, and non-removable media. By way of example, and not limitation, computer-readable media may include computer storage media and communication media. Computer storage media may include volatile, 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, random-access memory (RAM), read-only memory (ROM), electrically-erasable programmable ROM (EEPROM), flash memory or other memory technology, compact-disc ROM (CD-ROM), digital video disc (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 computer 100. 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, radio frequency (RF) (e.g., BLUETOOTH, WiFi, UWB), optical (e.g., infrared) and other wireless media. Any single computer-readable medium, as well as any combination of multiple computer-readable media, are both intended to be included within the scope of the term “computer-readable medium” as used herein.
System memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as ROM 131 and RAM 132. A basic input/output system (BIOS) 133, containing the basic routines that help to transfer information between elements within computer 100, 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,
Computer 100 may also include other computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in FIG. I provide storage of computer-readable instructions, data structures, program modules and other data for computer 100. In
Computer 100 may also include a touch-sensitive device 165, such as a digitizer, to allow a user to provide input using a stylus 166. Touch-sensitive device 165 may either be integrated into monitor 191 or another display device, or be part of a separate device, such as a digitizer pad. Computer 100 may also include other peripheral output devices such as speakers 197 and a printer 196, which may be connected through an output peripheral interface 195.
Computer 100 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. 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 computer 100, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, computer 100 is coupled to LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, computer 100 may include a modem 172 or another device for establishing communications over WAN 173, such as the Internet. Modem 172, which may be internal or external, may be connected to system bus 121 via user input interface 160 or another appropriate mechanism. In a networked environment, program modules depicted relative to computer 100, or portions thereof, may be stored remotely such as in remote storage device 181. By way of example, and not limitation,
As discussed previously, touch-sensitive device 165 may be a device separate from or part of and integrated with computer 100. In addition, any or all of the features, subsystems, and functions discussed in connection with
Referring to
A user may utilize computer 201 to simultaneously control the content displayed on primary display device 206 and secondary display device 202. As previously discussed, graphical user interface (GUI) based operating systems exist, such as the well-known Microsoft WINDOWS line of operating systems, that allow a user to extend a primary desktop, resulting in both the primary desktop and an extended desktop. In the following examples, it will be assumed that the user has configured computer 201 such that primary display device 206 displays the primary desktop while secondary display device 202 displays the extended desktop.
The extended desktop may be useful in a variety of scenarios. For instance, the extended desktop may be used to simply extend the amount of displayable area available to the user, treating the primary and secondary desktops as one larger continuous desktop. This would allow the user to position larger objects such as windows so as to extend across both the primary and the extended desktop area, and to easily move objects between the primary and extended desktop. In that scenario, while the extended desktop may be physically separate from the primary desktop (e.g., displayed on a separate display device), from the user's point of view the extended desktop and the primary desktop together may be considered merely to be part of a single larger desktop. However, the extended desktop may be useful in other additional ways. As discussed herein, the extended desktop may be used as a presentation platform that, from the user's point of view, is also functionally separate from the primary desktop. In such a configuration, a user may treat the primary desktop (displayed on primary display device 206) as a relatively “private” portion of the total desktop area and the extended desktop (displayed on secondary display device 202) or a portion thereof as a relatively “public” presentation portion. The extended portion may reproduce one or more portions of the primary desktop. For example, the user may give a speech while presenting a slide deck or other supporting material on the extended desktop displayed on display device 202. Also while giving the speech, the user may interact with the graphical user interface portion that is displayed on the primary desktop (on primary display device 206) to control the slide deck and/or other operations of computer 201. Thus, the slide deck may be displayed on both the primary desktop and the extended desktop. User interaction with the slide deck on the primary desktop would affect the presentation of the slide deck presented on the extended desktop.
For example, a slide deck may be presented on the primary desktop (on display device 206) in window 203, which may be an always-on-top window (meaning that, when it is displayed, it is always displayed above any other layers on the extended desktop). The user may interact with window 203 to affect the presentation of the slide deck. Simultaneously, the same slide deck is displayed on the extended desktop (on display device 202) in window 205. The content of window 205, also referred to herein as a projected representation of the content of window 203, may be a real-time updated (or updated at variable or fixed intervals, such as about once per second) copy of the content currently displayed in window 203. For example, when the next slide is selected in the slide deck shown in window 203, the next slide would also be simultaneously shown in window 205.
Window 205 may be of the same size as window 203 or of a different size. For example, window 205 may have the same ratio of height versus width as window 203 but may be smaller or larger than window 203. This provides for an undistorted view of the original content of window 203 while allowing the size of window 205 to be freely determined. In some embodiments, window 205 may be automatically sized to letterbox format, i.e., proportionally scaled to fit the most constrained dimension of display 202. In further embodiments, window 205 may be automatically sized and/or shaped to match the displayable area of display device 202, thus resulting in window 205 being a full-screen window. It should be noted that any windows discussed herein, whether on the primary or extended desktops, may or may not include displayed borders, handles, menus, etc. In other words, the displayed window may be limited to the content of the window only, or it may include both the content as well as other features that are recognizable to a user as a conventional window for the particular operating system being used. For example, where window 205 is a letterbox-sized window or a full-screen window, it may be desirable that window 205 not have any extraneous borders, handles, menus, etc. to distract from the presentation.
While the user is reproducing the content of window 203 onto the extended desktop, the user may also wish to not reproduce remaining portions of the desktop. For example, the user has selected window 203 for reproducing the content therein but has not selected window 204 for reproducing the content therein. Thus, the content of window 204 would not be displayed on the extended desktop. Nor would any other objects on the primary desktop unless they were selected for reproducing by the user or by a software application. This configuration may be desirable where the user may not want to reproduce all the content of the primary desktop with the audience of the speech. For example, window 204 may be an email that the user would not want to be presented to his or her audience. However, the user may decide to select window 204 in addition to window 203. Because in this example only one window at a time would be shown on the extended desktop, computer 201 may need to make a determination as to which of windows 203, 204 to reproduce onto the extended desktop at any given time. For example, the presently active window (the window that is at the top of the Z-order) may be the window that is reproduced at any given time onto the extended desktop, while any non-active windows (lower on the Z-order) would not be reproduced onto the extended desktop unless and until one of them becomes the presently-active window. The Z-order is a concept used in various graphical-user-interface operating systems (for example, Microsoft WINDOWS line of operating systems) and refers to the ordered layering of objects such as windows relative to one another. A window that is presently active would be displayed at the top visible layer (i.e., not blocked by other windows) and would thus be at the top of the Z-order. A window immediately beneath the presently active window would be displayed at least partially blocked by the presently active window and would be under that window in the Z-order. The Z-order may define the layering order of any number of objects.
In the example of
In the example of
Thus, with reference to both
Any of windows 203, 204, 301 on the primary desktop may have one or more displayed controls that may allow the user to conveniently select or deselect a window for reproducing onto the extended desktop. For instance, referring to
Thus far the discussion has been as to the selection of windows to be reproduced from the primary desktop to the extended desktop. In general, however, any region of the primary desktop may be designated to be reproduced onto the extended desktop. The designation of a window is a convenient way to designate a predefined region for reproduction, however the user and/or a software application may designate a non-window custom or pre-defined region of the primary desktop without regard to any windows or other displayed objects.
For example, referring to
As can be seen, display device 202 shows a live copy of region 501 as an enlarged letterbox version. In this example, region 501 is selected using a graphical boundary selection tool, which is a tool commonly found in drawing software applications. The boundary selection tool may present a pre-defined shape, such as a circle or rectangle, the size and shape of which may be manipulated by the user. Or, the boundary selection tool may allow the user to hand-draw a custom boundary or to “rubber band” a boundary around a displayed object (rubber banding is also known in conventional drawing programs). Where a particular displayed object is selected for reproduction, that object may continue to be reproduced as originally selected even though the object may later be moved about the primary desktop or otherwise manipulated (e.g., stretched or rotated). Generally speaking, region 501 may be selected using any graphical or non-graphical selection method desired. For example, a list of windows may be presented to the user, and the user may select one or more windows from the list for reproduction. Also, a particular software application may be configured such that windows that the software application opens are by default reproduced or not reproduced, as desired. It should further be noted that region 501 may have boundaries other than the rectangular boundaries shown. For instance, region 501 may have circular boundaries or any other geometric or non-geometric boundary arrangement.
Region selections may also be mixed. For example, a set of selected regions may include both window and non-window regions. Or, the user may specify a particular region that is a fixed selected area on the primary desktop. This fixed area may be defined regardless of the location of an existing window or other object. In this situation, any objects or other screen content that enter and exit the selected region would also be reproduced onto the extended desktop in like manner. In addition, the user may be able to specify that the only windows that are to be reproduced onto the extended desktop are those that enter the fixed region (and possibly also only those windows that are selected for to be reproduction or not otherwise prohibited from reproduction). This may be useful where the primary desktop is of a higher screen resolution than the device used to display the extended desktop. In this case, the user may want to designate a smaller region of the primary desktop so that the content in the selected region will be more legible on the extended desktop. Referring to
When selecting (or deselecting) one or more regions for reproducing onto the extended desktop, the user may select (or deselect) the regions one at a time or simultaneously, such as in groups. When selected one at a time, the way that the projected representations of those selections are displayed may dynamically change with each new selection (or deselection). For example, if only a single region (such as a first window generated by a first software applications) is selected for reproduction, then that region may be displayed as a full-screen or letterbox projection representation on the extended desktop. Then, if the user adds a second different region (such as a different second window generated by a different second software application), in response computer 201 may cause the projection representation of the first region to change to accommodate the projection representation of the second region. For example, the projection representation of the first region may shrink so that it may be tiled alongside the projection representation of the second region. Or, the projection representation of the first region may shrink and be partially overlaid by the projection representation of the second region. These are simply examples; multiple projection representations may be presented on the extended desktop in any of a number of ways.
To generate a projection representation, data from the selected region (e.g., pixel data) is obtained and manipulated as needed. There are several possibilities in how source data may be obtained from a selected region. For example, referring to
For purposes of explanation, it will be assumed that the selected item to be reproduced onto the extended desktop will be window 704, which is presently displayed on the primary desktop. Data for generating the associated projected representation may be taken from points A through F as shown in
Taking data from point C involves capturing an image of the surface of window 704 at the point at which window 704 is visually composed, independent of the final desktop image composition. This may be desirable and efficient where, as in the present example, the selected item to be reproduced is an entire window. However, where the selected item to be reproduced is a non-window region of the primary desktop, then point C may not be desirable as a data source. Taking data from point D, E, or F involves capturing images at relatively lower levels in the graphics stack. At these points, the images may be captured either by duplicating the results of the graphics operations (i.e., copying the pixels) or duplicating the graphics operations themselves (i.e., rendering the pixels twice, once in application 705 and once in the capture frame to be sent to the extended desktop). Duplicating all of the operations at such a low level may be desirable as it may result in higher performance and/or higher fidelity of the captured image. This is because relatively little processing has been done to the raw pixel data at these levels.
As further illustratively shown in
An application program interface (API) may be provided that allows software applications (and software application developers) access to at least some of the above-described functionality. For example, the API may include a way for a software application to enable or disable window reproduction onto the extended desktop for a particular window. If disabled, the user may not be able to override and thus may not be able to reproduce the reproduction-disabled window unless the software application allows it. This may be useful in a variety of situations, such as where the particular window contains confidential information that is not to be reproduced onto the extended desktop (thereby risking its divulgence to the audience of the user's speech, for example). For example, an email software application may be able to prevent emails having a confidential status from being reproduced, although emails having a normal unconfidential status may still be reproduced. Reproduction may be visually disabled by, e.g., requesting that control 401 not be provided on a given window, thus eliminating the ability of the user to select reproducing that window. The request to disable or enable reproduction may include an identification of the particular window (such as the name of the window), along with an indication of enable or disable (such as a binary flag). Alternatively, separate requests may be defined for enabling and disabling reproduction. The API may also include messages informing the software application when a particular window is about to be reproduced (but has not yet started being reproduced), or has started being reproduced, or has stopped being reproduced. The message may include an identification of the particular window, such as the name of the window. In addition to being able to enable or disable reproduction of a window, the capability may be provided to programmatically actually initiate or end reproduction of a window. The API may also provide the ability for an application to customize a selected window representation on the extended desktop. For example, a first application may request a letterbox representation whereas as second application may request the relative representation.
The above-mentioned functionality and associated API may be implemented as computer-executable instructions that are part of one or more software applications and/or in the operating system itself. By implementing region reproduction in the operating system, such reproduction may be done for any window of any software application, even those software applications that are unaware of the reproduction capabilities.
Thus, a way of reproducing one or more selected regions from the primary desktop onto the extended desktop, without displaying any other portion of the primary desktop, has been described, along with associated APIs. Users may now, with confidence, engage in private tasks or communications on the primary desktop without inadvertently sharing the results of these actions with others that are viewing the extended desktop.