US20010040584A1 - Method of enabling display transparency for application programs without native transparency support - Google Patents
Method of enabling display transparency for application programs without native transparency support Download PDFInfo
- Publication number
- US20010040584A1 US20010040584A1 US09/251,580 US25158099A US2001040584A1 US 20010040584 A1 US20010040584 A1 US 20010040584A1 US 25158099 A US25158099 A US 25158099A US 2001040584 A1 US2001040584 A1 US 2001040584A1
- Authority
- US
- United States
- Prior art keywords
- display
- data
- virtual
- frame buffer
- display data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/12—Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels
Definitions
- the present invention relates generally to graphical user interfaces and, more specifically, to generating transparent graphics displays.
- a user could typically view only one set of information at a time on a computer display.
- a user may view multiple sets of information in multiple windows shown on the display. In some cases, the windows are overlapping, and in other cases the windows are non-overlapping (or tiled). While the windowing capability has proven advantageous for increasing the amount of information displayed to the user on a single display, it still is limited in that when two or more windows are overlapping, the window in the foreground obscures or blocks the user's view of the overlapped portion of the window in the background.
- the foreground window also blocks input access to the overlapped portion of the background window.
- the user typically must perform some action, such as a cursor movement, keyboard input strike or mouse input event, to cause the background window to be changed to the foreground window, thereby allowing the user to fully view its contents or provide input signals to the system.
- Transparent windows contain display data wherein objects or images beyond the transparent window (e.g., in a background window or underlying display surface) may still be perceived by the user.
- Transparent effects are used in some computer software games to enable features such as “heads-up” display functions.
- the transparent effect is typically achieved by interleaving pixels from two display buffers without the ability to adjust the level of transparency.
- the use of transparency results in windows with inferior viewing quality because the pixel interleaving method produces “checkerboard” artifacts in the display.
- the transparent effects are limited to pre-defined, self-contained components of specialized application programs. That is, if a user desires that at least a portion of an application program's output data be displayed in a transparent manner, the application program's code may need to be re-written to explicitly implement the transparency. As a result, it may be difficult to provide transparency for application programs that do not already provide transparency capabilities themselves. When the application programs are commercial “off-the-shelf” shrink-wrapped software, providing transparency capabilities may not be feasible.
- An embodiment of the present invention is a method of creating transparent graphics for an application program lacking native transparency support.
- the method includes selecting a virtual display to receive display data output from the application program, displaying non-transparent display data on a primary display, drawing the display data on the virtual display, and representing the display data from the virtual display transparently on the primary display along with the non-transparent display data.
- Another embodiment of the present invention is a system for creating transparent graphics for an application program lacking native transparency support.
- the system includes a virtual display driver to receive display data from the application program to be displayed transparently, a primary display to display non-transparent data and the display data, and a primary display driver to control the transparent display of the display data received from the virtual display driver and the display of the non-transparent data on the primary display.
- FIG. 1 is a diagram illustrating an example of transparent graphics displayed with operating system output graphics according to an embodiment of the present invention
- FIG. 2 is a diagram illustrating a sample system capable of being operated with a transparency method in accordance with an embodiment of the present invention
- FIG. 3 is a diagram of a software and hardware stack for implementing transparent graphics according to an embodiment of the present invention
- FIG. 4 is a diagram illustrating multiple frame buffers used for providing transparent graphics according to embodiments of the present invention.
- FIG. 5 is a diagram illustrating an alternating pixel technique mixing between the transparent graphics frame buffer and the operating system output frame buffer according to one embodiment of the present invention
- FIG. 6 is a flow diagram for initializing a system to provide transparent graphics according to one embodiment of the present invention.
- FIG. 7 is a flow diagram showing double buffering control processing according to one embodiment of the present invention.
- FIG. 8 is a flow diagram of color mixing and interleaving processing according to one embodiment of the present invention.
- FIG. 9 is a diagram of multiple display monitors according to an embodiment of the present invention.
- FIG. 10 is a diagram of an alternate software and hardware stack for implementing transparent graphics for an application without native transparency support according to another embodiment of the present invention.
- FIG. 11 is a diagram of yet another software and hardware stack for transparent graphics for an application without native transparency support according to another embodiment of the present invention.
- FIG. 12 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to another embodiment of the present invention.
- FIG. 13 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to yet another embodiment of the present invention.
- An embodiment of the present invention comprises a method and system for providing a transparent layer of display data over the top of another layer of display data on a display so that the user may see both layers clearly and simultaneously.
- Embodiments of the present invention provide this capability without employing modifications to the application program generating the data to be displayed transparently. That is, transparency effects may be provided for the display output data of application programs that do not have native transparency support.
- Embodiments of the present invention provide a generalized interface for accessing transparent display features by an application program such that drawing operations by the application program to the display may become transparent without modifying the application program.
- the transparency capability doubles, in essence, the maximum screen area available on a display for use by application programs.
- One embodiment comprises a method for producing transparent computer graphics layers by interleaving (or alternating in a pattern) the pixels from one video frame buffer with the pixels from another video frame buffer.
- the pixels from a first frame buffer are mixed by color averaging with corresponding pixels from a second frame buffer to reduce the “checkerboard” effect created by the use of spatial multiplexing alone.
- the degree of interleaving is adjustable and the color averaging may be weighted, the degree of transparency of the displayed images may be controlled.
- An embodiment of the present invention operates by combining two frame buffers of computer graphics output data or video data in the form of electrical signals.
- the pixels of the output, or visible, frame buffer are created by spatially interleaving the contents of two input frame buffers.
- the interleaving in this embodiment is accomplished by alternating pixels of one frame buffer with those of the other frame buffer. This results in the visual illusion of two displays of images layered one on another.
- the pixels of the first frame buffer are color averaged with the pixels of the second frame buffer that they are about to replace. Color averaging is performed on the pixels of one frame buffer by averaging them with the corresponding pixels of the other frame buffer prior to, or during, interleaving them into the output frame buffer.
- the result comprises multiple overlapping images being substantially simultaneously visible on a display, such as a computer monitor, for example.
- FIG. 1 is a diagram illustrating an example of transparent graphics displayed with operating system output graphics according to an embodiment of the present invention.
- Operating system output frame buffer 10 is an area of memory used to store the current display data of the computer system (not shown).
- the operating system output frame buffer may be allocated in any memory available to the operating system.
- a frame buffer is a set of storage locations to store a two-dimensional array of pixel data.
- the operating system output frame buffer may be associated with operating system software of the computer system, which controls the generation and display of the data signals on a computer monitor (not shown in FIG. 1).
- the operating system software comprises the Windows 95®, Windows 98®, or Windows NT® operating system software available from Microsoft Corporation, although other operating system software supporting graphical user interfaces may also be employed.
- the operating system output frame buffer 10 contains application program display data signals for three overlapping windows shown pictorially in FIG. 1 and labeled 12 , 14 , and 16 , respectively.
- Transparent graphics frame buffer 18 is an area of memory used to store the display data of transparent graphics for substantially simultaneous display with the display data signals of the operating system output frame buffer. This area of memory may be allocated in any memory available in the system.
- display components such as a clock 20 and stock ticker 22 are shown as sample application program display features which illustrate the use of transparency, although generally any display components or objects may be made transparent through the use of embodiments of the present invention.
- the display components of the operating system output frame buffer and the transparent graphics frame buffer may be combined by color mixing 24 the corresponding pixels of each buffer while interleaving the resulting pixels of the color mixing operation with the operating system output frame buffer's pixels to form the display components of visible display buffer 28 .
- the visible display buffer shows in pictorial form the three overlapping windows 12 , 14 , and 16 with the clock 20 and stock ticker 22 displays appearing as transparent display components overlaying portions of the windows.
- the transparent display components are partially overlaying the other display components.
- the transparent display components may be entirely within the boundaries of one or more non-transparent windows or display components on the display.
- embodiments of the present invention allow transparent display components overlaying background windows to have little or no effect on input operations to a selected background window.
- a user may interact with an input window of an application program being displayed in a background window while a transparent display component is partially or completely overlaying the background window.
- the operating system software may accept the user input events or key strikes to the input window (such as a mouse entry or text entry) without substantial interference with the display of the transparent display components.
- a method for producing transparency effects employs minimal mixing of display contents. Instead, it relies on the human eye's inability to distinguish between the color of adjacent pixels on a computer monitor (in essence, the human eye averages each pixel with its neighbor). Some mixing is employed, because large computer monitors and low display resolutions may result in a “checkerboard” effect when pixels are interleaved in this manner.
- one half of the pixels from a first frame buffer (such as the operating system output frame buffer) are averaged with one half of the pixels from a second frame buffer (such as the transparent graphics frame buffer) as the pixels of the two frame buffers are interleaved into a display buffer whose data is currently being rendered visible on a display.
- averaging a fraction of the pixels there may be a decrease in the processing power used when providing the transparency effect.
- different percentages of pixels may be averaged (e.g., one fourth of the pixels, one eighth of the pixels, one sixteenth of the pixels, one thirty-second of the pixels, or any one Nth of the pixels where N is a positive integer), and the percentages may be changed dynamically.
- FIG. 2 is a diagram illustrating a sample system capable of being operated with a method for producing transparency displays in accordance with the present invention.
- Sample system 100 may be used, for example, to execute the processing for the methods described herein.
- Sample system 100 is representative of computer systems based on the PENTIUM®, PENTIUM® Pro, and PENTIUM® II microprocessors available from Intel Corporation, although other systems (including personal computers (PCs) having other microprocessors, engineering workstations, set-top boxes and the like) may also be used.
- Sample system 100 includes microprocessor 102 and cache memory 104 coupled to each other through processor bus 105 .
- Sample system 100 also includes first I/O bus 108 and second I/O bus 118 .
- Processor bus 105 and first I/O bus 108 may be bridged by host bridge 106 , whereas first I/O bus 108 and second I/O bus 118 may be bridged by I/O bus bridge 110 .
- Coupled to first /O bus 108 may be main memory 112 and video memory 114 .
- Coupled to video memory 114 may be video display 116 .
- Coupled to second I/O bus 118 may be mass storage 120 , and keyboard and pointing devices 122 .
- mass storage 120 may be used to provide long-term storage for the executable instructions for a method for providing transparent displays in accordance with embodiments of the present invention
- main memory 112 may be used to store on a shorter term basis the executable instructions of a method for providing transparent displays in accordance with embodiments of the present invention during execution by microprocessor 102 .
- the instructions may be stored on other machine readable mediums accessible by the system, such as compact disk read only memories (CD-ROMs), digital versatile disks (DVDs), and floppy disks, for example.
- CD-ROMs compact disk read only memories
- DVDs digital versatile disks
- floppy disks for example.
- FIG. 3 is a diagram of a software and hardware stack for implementing transparent graphics according to one embodiment of the present invention.
- Application programs 200 specifically designed to use transparent display objects call functions provided by transparency support software 202 to define and update the transparent display objects. That is, certain calls to such functions may be programmed into application programs in order to use transparency display features.
- transparency support 202 calls the operating system graphics rendering application programming interface (graphics API) 204 in this embodiment. In the Windows 95® and Windows 98® operating systems, for example, this may be the Graphics Device Interface (GDI).
- graphics API graphics rendering application programming interface
- the transparency support software 202 also calls the operating system's video hardware control abstraction application programming interface (video control API) 206 in this embodiment.
- video control API video hardware control abstraction application programming interface
- the graphics API 202 and video control API 206 may not be distinguishable from each other as they may exist within the same application programming interface.
- the graphics API 204 may be used to render requested graphics to the transparent graphics frame buffer 18 shown in FIG. 1.
- the video control API 206 may be used to control frame buffer visibility and to access the contents of all frame buffers.
- the graphics API 204 and video control API 206 interact with display driver software 208 to communicate with video card 210 .
- the video card 210 controls the video display in the system of FIG. 2.
- Video card accesses video memory 114 to obtain display data.
- Other application programs 212 which do not employ transparency interact with the graphics API 204 to create and update display objects.
- images may be displayed on a display such as a computer monitor, for example, by creating a frame buffer of pixel data in video memory 114 .
- This frame buffer may be designated as a visible portion of video memory by video control API 206 . If there is a sufficient amount of video memory available, multiple frame buffers may be defined, only one of which may be used at a time (by the video card 210 ) to obtain the data signals for building the current visible display.
- a first frame buffer is considered to be the “visible” buffer and the video card 210 reads data signals from it to obtain the current display data signals, while a second frame buffer (or “non-visible” buffer) is written to with new display data.
- the video control API is then called upon to “flip” the frame buffers by designating the second frame buffer to be the visible buffer and designating the first frame buffer to be the non-visible buffer.
- Use of this technique provides for the smooth update of display data, resulting in aesthetically pleasing displays for the user.
- Embodiments of the present invention may extend this concept to employ extra frame buffers to provide the transparent display data signals in conjunction with normal display data.
- FIG. 4 is a diagram illustrating an embodiment of multiple frame buffers used for providing transparent graphics.
- One designated portion of the video memory may be assigned to be displayed as visible on the computer monitor at a time. This is called the “visible display”. That is, the visible display comprises the display data from an area of video memory that is currently displayed on the computer monitor for viewing by a user.
- the graphics API 204 of the operating system software writes data signals into the operating system output frame buffer 10 using display driver 208 and/or video control API 206 .
- the operating system output frame buffer resident in video memory 114 , is used for the visible display.
- other frame buffers may be used as the visible display.
- a first working frame buffer 300 and a second working frame buffer 302 both resident in video memory 114 or other accessible memory, store display data according to embodiments of the present invention.
- each frame buffer stores an array of pixel data signals.
- the size of the array in this embodiment is dependent on the current display characteristics of the system.
- Frame buffer array sizes may, for example, be 640 pixels by 480 pixels, 800 pixels by 600 pixels, or 1280 pixels by 1024 pixels, or other appropriate sizes dependent on the computer monitor and operating system software settings.
- Each pixel includes red (R), green (G), blue (B), and optionally, opacity (A) components. Alternatively, other color coding schemes such as YUV or YUVA may also be used.
- Transparent graphics frame buffer 18 resident in main memory 112 , in this embodiment stores transparent display data created by transparency support software 202 , video control API 206 , and graphics API 204 .
- data signals from the transparent graphics frame buffer 18 may be color mixed and interleaved with data signals from operating system output frame buffer 10 , and then stored in one of the working frame buffers.
- This mixed and interleaved data may be stored into a working frame buffer when the working frame buffer is in a “non-visible” state (that is, in this embodiment the data stored in the frame buffer is not currently displayed on the computer monitor). While one of the working frame buffers is being written to in a non-visible state, the other working frame buffer may be in a “visible” state and used as the source of current display data.
- the non-visible working frame buffer may be designated the visible working frame buffer and vice versa. This double buffering process may be repeated at a rate of at least 8-15 times per second in this embodiment to provide a visually appealing display to a user.
- interleaving of the pixels of the transparent graphics frame buffer and the operating system output frame buffer may be accomplished as follows.
- alternating pixels in the selected working frame buffer may be written by a mix of a transparent graphics frame buffer pixel value and a spatially corresponding operating system output frame buffer pixel value.
- the other pixels in the selected working frame buffer may be written with pixels from the operating system output frame buffer.
- pixels from the operating system output frame buffer may be block transferred to the selected working frame buffer and pixels from the transparent graphics frame buffer may be subsequently spatially multiplexed and color averaged with the pixels of the selected working frame buffer.
- FIG. 5 is a diagram illustrating an embodiment of one method of alternating pixel mixing between the transparent graphics frame buffer and the operating system output frame buffer.
- a “T+OS Mix” pixel in the selected working frame buffer comprises a color averaged mix of a pixel from the transparent graphics frame buffer (the T value) and a pixel from the operating system output frame buffer (the OS value).
- An “OS” pixel in the selected working frame buffer contains a spatially corresponding pixel copied from the operating system output frame buffer.
- color averaging may be performed through a weighted averaging scheme on each color component of each pixel from corresponding positions within the two frame buffers, although in other embodiments, different color mixing techniques may also be employed.
- weighted averaging may be accomplished by multiplying a component value of a first pixel by a weight value and multiplying the same component value of a second pixel by a different weight value. The two weighted color components may then be added together and the resulting sum may be divided by the sum of the two weight values.
- This method is also known as alpha blending.
- the computer processing employed to create the transparent effect may be cut in half in comparison to a mixing of all pixels of the frame buffers.
- the pixel data movement within the video memory may be performed by a block transfer operation provided by the drawing API in this embodiment.
- FIG. 6 is a flow diagram illustrating an embodiment for initializing a system to provide transparent graphics.
- the operating system display output control information may be determined. This control information comprises the size of the display, color resolution, and other data.
- two working frame buffers may be allocated in video memory in this embodiment. These operations may be performed by calls to the video control API in this embodiment.
- a block transfer operation may be performed to copy data from the normally visible operating system output frame buffer to a selected one of the two working frame buffers. Assume for this example that the second working frame buffer is selected first, although the first working frame buffer may also be used as the initial working frame buffer.
- the block transfer may be performed by a call to the video control API in this embodiment.
- the operating system output frame buffer may be set to a “non-visible” state by a call to the video control API.
- the selected working frame buffer (for example, the second working frame buffer) may be made visible by a call to the video control API in this embodiment.
- block 406 and block 408 may be accomplished by a single call to the video control API.
- the video card's current display output data is obtained from the selected working frame buffer, not the operating system output frame buffer.
- other APIs may also be used to effect the same results.
- FIG. 7 is a flow diagram showing an embodiment of double buffering control processing.
- a block transfer operation may be performed at block 412 to copy the operating system output frame buffer to the non-visible first working frame buffer by a call to the video control API in this embodiment.
- an operation may be performed to write the mixed and interleaved contents of the first working frame buffer and the transparent graphics frame buffer to the first working frame buffer.
- the first working frame buffer is made visible and the second working frame buffer is made non-visible, in effect, flipping the two frame buffers as the current display output data source.
- a block transfer operation may be performed to copy the operating system output frame buffer to the non-visible second working frame buffer by a call to the video control API in this embodiment.
- an operation may be performed to write the color mixed and interleaved contents of the second working frame buffer and the transparent graphics frame buffer to the second working frame buffer.
- the second working frame buffer is made visible and the first working frame buffer is made non-visible, in effect, flipping the two frame buffers as the current display output data source. This process may be repeated by returning to block 412 .
- the operating system software may be concurrently writing additional display data into the operating system output frame buffer.
- a memory location in the currently non-visible (either the first or the second) working frame buffer may be determined for a reference point (e.g., point M 304 ) of the transparent graphics frame buffer.
- a data signal value for a pixel from the currently non-visible working frame buffer may be read and the spatially corresponding pixel(s) from the transparent graphics frame buffer may be determined. This correspondence is not necessarily a 1 : 1 ratio since the transparent graphics frame buffer image may be stretched or reduced to fit a portion of the working frame buffer.
- the weighted average of the pixel from the working frame buffer and the pixel from the transparent graphics frame buffer may be computed.
- the weighted averages of the individual pixel components may be determined on a color component by color component basis. That is, red components may be averaged, blue components may be averaged, and green components may be averaged.
- the weight that is given to each of the components determines the resulting transparency of the pixel, however the same weight value may be used for all components of a given pixel.
- weight associated with a pixel that affects, at least in part, the level of transparency. These weights may be manipulated by the application program employing transparency to achieve various mixing ratios. Furthermore, the application program employing transparency may provide user interface elements that allow the user to control the mixing ratios directly or indirectly.
- the result of the weighted averaging computation may be placed into the same location in the working frame buffer at block 432 as the current pixel being processed.
- the next location in the working frame buffer to be processed may be determined, taking into account the current interleaving pattern (e. g., using every second pixel, every fourth pixel, horizontally or vertically alternating lines, etc.).
- the current interleaving pattern e. g., using every second pixel, every fourth pixel, horizontally or vertically alternating lines, etc.
- processing continues with block 428 with the next pixel. Otherwise, color mixing and interleaving processing ends at block 438 .
- Some operating systems such as Microsoft Corporation's Windows 98® and Windows 2000TM, for example, support the concurrent use of multiple display monitors by a single computer system.
- the monitors may be arranged in a way that creates a contiguous region. The size and color depth of each monitor may be set independently. The bounding rectangle of all monitors makes up a virtual screen.
- the desktop window of the graphical user interface covers the virtual screen, rather than the screen of a single physical monitor. Because existing application programs expect one monitor with an origin of ( 0 , 0 ), the virtual screen contains one monitor with the origin ( 0 , 0 ). This monitor is known as the primary monitor.
- FIG. 9 is a diagram illustrating multiple display monitors and a virtual screen.
- Each physical display device may be represented by a monitor handle.
- a display monitor has the same monitor handle value through out its life.
- Selected operating system functions that return a display device context (DC) may return a DC for a monitor.
- a DC comprises an area of memory used as a non-visible drawing surface or frame buffer.
- a primary monitor or display may be used for normal, non-transparent display data and a second monitor or display may be used for transparent display data.
- the primary display may be accessed by a primary display driver and the second display may be accessed by a transparency virtual display driver.
- the second display is virtual only; it does not exist as hardware in the system.
- more than two monitors and associated display drivers may be employed.
- the “continuous desktop” described above may be used to support automatic selection of a display monitor for transparent display operations. Selection of a monitor may be made by determining a drawing location within the virtual screen. In this way, an application program may not have to be aware of the multiple display monitors.
- FIG. 10 is a diagram of an alternate software and hardware stack for implementing transparent graphics for an application without native transparency support according to an embodiment of the present invention.
- an application program or user may direct selected output data from the application program to be represented on a display in a transparent manner without employing modifications to the application program code.
- a “contiguous desktop” or separate desktops may be used to support selection of the transparency function.
- a user may position a window of an application program through the use of a mouse or other pointing device, which may result in a call to the operating system.
- An application program 500 which is not specifically designed and coded to create, use and destroy transparent display objects itself, may call functions provided by operating system graphics rendering application programming interface (graphics API) 502 in one embodiment in order to select transparent display of the output data of the application program.
- graphics API application programming interface
- selection of the multiple display monitors may be presented to a user through well-known selectable tabs in a display properties window of a control panel window. This allows a user to control monitor layout.
- each application program may have a system control menu with an entry to allow output data from an application program to be sent to a specific display monitor.
- a particular one of the multiple display monitors may be a virtual monitor associated with transparent display output.
- the graphics API may be the Graphics Device Interface (GDI), available from Microsoft Corporation.
- Graphics API 502 may initialize transparency virtual display driver 504 in response to the user selection of transparency to make available a virtual display to be written to by all application programs.
- Transparency virtual display device driver 504 calls video hardware control abstraction application programming interface (video control API) 506 in this embodiment.
- video control API video hardware control abstraction application programming interface
- this may be the DirectDraw API, available from Microsoft Corporation.
- graphics API 502 and video control API 506 may not be distinguishable from each other as they may exist within the same application programming interface.
- graphics API 502 is aware that support for multiple display monitors is provided by the operating system.
- Transparency virtual display driver 504 may be used to render requested graphics to the transparent graphics frame buffer 18 shown in FIG.
- the video control API 506 may be used to control frame buffer visibility and to access the contents of all frame buffers. All frame buffers may be created by primary display driver 508 .
- graphics API 504 and video control API 506 interact with primary display driver software 508 to communicate with video card 510 .
- Transparency virtual display driver 504 may also call primary display driver 508 to communicate with the video card.
- Video card 510 controls the video display in the system of FIG. 2. Video card accesses video memory 512 to obtain display data.
- Another application program 514 may also call graphics API functions in the well-known manner to display data.
- FIG. 11 is a diagram of another alternate software and hardware stack for implementing transparent graphics for an application without native transparency support according to an embodiment of the present invention.
- the operating system does not provide support for multiple display monitors, such as in the Windows 95® operating system. Therefore, the primary display driver may be hidden from graphics API 502 .
- Graphics API 502 may communicate with transparency virtual display driver 504 for all display driver function calls.
- FIG. 12 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to an embodiment of the present invention. In this embodiment, an application program or a user may direct selected output data to be represented on a display in a transparent manner without employing modifications to the application program code.
- a software component called a transparency virtual display driver 602 may be installed and be recognizable by the operating system.
- the operating system recognizes the transparency virtual display driver as a display driver component and may not be aware that transparency may be provided.
- the transparency virtual display driver may be associated with a non-existent video card and virtual display 604 . While the transparency virtual display driver is “visible” to application programs and operating system software components, no actual hardware is associated with it.
- some operating systems such as Microsoft Corporation's Windows 98® and Windows 2000TM, for example, support the concurrent use of multiple displays by a single computer system.
- a transparency virtual display driver 602 referencing a “virtual” video card may co-exist according to the operating system with a primary display driver 606 for an existing video card 608 and associated primary display 610 .
- primary display driver 606 implements the requests by writing display data to a transparent graphics frame buffer.
- the frame buffers may be managed as disclosed above.
- the interface between the application programs and the display drivers has been generalized so that an application program may direct display output data to be shown transparently by determining a location for drawing on the contiguous desktop or by user selection of a specific monitor.
- transparent display output may be provided without modifying the application program code to specifically support transparency.
- a user may interact with operating system 600 to select which application program(s) may be associated with each display device (or display monitor). For instance, application program 612 may be selected to produce transparent display output data for virtual display 604 and application program 614 may be selected to produce normal, non-transparent display output data for primary display 610 .
- graphics API and video control API components 620 within operating system 600 route display requests from application program 612 to transparency virtual display driver 602 .
- Transparency virtual display driver calls primary display driver 606 over line 622 to create a memory-based display device context (DC).
- the DC is a non-visible drawing surface existing in video or system memory.
- the DC may be a transparent graphics frame buffer as shown in FIG. 1.
- the display monitor or “screen” of the transparent virtual display driver exists only as the memory-based DC (e.g., transparent graphics frame buffer).
- Transparency virtual display driver 602 routes all requests received on line 616 to draw to its virtual display to the memory-based DC controlled by primary display driver 606 via line 624 .
- all transparency support exists in a transparency support component 626 within the transparency virtual display driver, not in the application program.
- the transparent frame buffer may exist in non-displayed memory on video card 608 or in system memory.
- multiple transparent virtual displays and associated transparent virtual display drivers may be provided, with each virtual display supporting a predetermined level of display transparency so that a user may select a desired level of transparency for a given application program or set of application programs.
- multiple transparency virtual display drivers may be installed for a given virtual display, with each of the multiple transparency virtual display drivers using a different level of transparency (e.g., different degrees of alpha blending).
- TVDD transparency virtual display driver
- a transparency virtual display driver such as those employing operating systems such as Windows 98® and Windows 2000TM
- installation, loading, execution, and mouse cursor control operations may be implemented as follows in accordance with one embodiment of the present invention.
- Installation of the transparency capability proceeds with the user initiating the execution of an install program on the system.
- the install program copies TVDD files to the system's mass storage.
- the install program identifies a first existing primary display driver (PDD) in a monitor list in a system registry of the operating system.
- the install program adds a new TVDD to a monitor list in the registry with substantially the same settings as the first existing PDD.
- the install program repeats these steps as necessary for additional existing display drivers.
- the install program may then reboot the system.
- the loading of transparency functionality proceeds with the operating system (OS) beginning its boot sequence.
- the OS loads the first PDD, requests the capabilities of this driver, and initializes the driver to gain access to the driver's frame buffer.
- the OS then loads the first TVDD and requests the capabilities of the TVDD.
- the first TVDD requests capabilities from the first PDD and returns them to the OS as the first TVDD's capabilities.
- the OS initializes the first TVDD.
- the first TVDD requests a transparent graphics frame buffer in system memory from the first PDD with properties substantially the same as the PDD's frame buffer (via the first PDD's access to the video control API).
- the first TVDD initializes its internal transparency support component 626 to provide transparency for the TVDD's transparent graphics frame buffer via line 624 .
- the first TVDD returns to the OS a representation of its transparent graphics frame buffer.
- the OS then continues loading other display drivers as necessary.
- Execution processing proceeds with a procedure call to the graphics API by the application program to draw to the screen of the system.
- the graphics API translates the drawing request into one or more display driver primitive operations.
- the OS decides, for each primitive, to which display driver they belong.
- the OS then makes a procedure call to the appropriate display driver to implement each primitive. If a selected display driver for the primitive is the PDD, the PDD performs normal display processing as is well-known in the art. If a selected display driver is a TVDD, the TVDD fields the primitive and implements the primitive by drawing to the TVDD's transparent graphics frame buffer by calling an associated PDD to process the requested primitive.
- the TVDD requests its associated PDD to draw a line from X to Y on the TVDD's transparent graphics frame buffer under the control of the PDD.
- the TVDD alerts its transparency support module that the transparent graphics frame buffer has been updated.
- the transparency support component mixes the contents of the transparent graphics frame buffer with those of the associated PDD's operating system output frame buffer. Mixed results may be placed on the PDD's visible display buffer (or onto a second buffer and subsequently flipped to the visible frame buffer).
- mouse cursor control processing proceeds with the user moving a mouse cursor for the system.
- the OS fields the interrupt generated by the movement of the mouse and determines which monitor the cursor is on.
- the OS then delivers a “new cursor position” call to the appropriate display driver. If the “new cursor position” call is delivered to the PDD, normal cursor processing may be performed and the PDD handles drawing the cursor on its own visible frame buffer. If the “new cursor position” call is delivered to a TVDD, the TVDD queries its associated PDD to draw the cursor at the requested position. This allows users to move the mouse cursor to a TVDD virtual display and interact with transparent applications belonging to it. Control may then be returned to the OS.
- the transparency support component may determine where the mouse cursor is on the display. If, and only if, the mouse cursor is over the TVDD's virtual display, the transparency support component may mix the frame buffers differently such that the contents of that TVDD's transparent graphics frame buffer appear to be a “solid” or non-transparent layer and the associated PDD's operating system output frame buffer appears to be the transparent layer. This allows the user to know that he or she is interacting with application programs on the TVDD virtual display rather than with application programs on the PDD's primary display.
- FIG. 13 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to yet another embodiment of the present invention.
- all calls from graphics API and video control API 620 may be implemented by transparency virtual display driver 602 , which in turn calls primary display driver 606 .
- Installation of the transparency capability proceeds with the user initiating the execution of an install program on the system.
- the install program copies TVDD files to the system's mass storage.
- the install program identifies the existing primary display driver (PDD) in the system registry.
- the install program stores the name and location of the existing PDD in a private storage area and places its own name in the existing PDD's place.
- the install program then changes attributes of the PDD in the registry by keeping its existing settings, but by doubling, for example, the screen width of the primary display. In other embodiments, other multiples of a screen width may be used.
- the install program may then reboot the system.
- the loading of transparency functionality proceeds with the operating system (OS) beginning its boot sequence.
- the OS first loads the TVDD.
- the TVDD accesses the area of private storage and locates the PDD.
- the TVDD then loads the PDD.
- the OS next requests the capabilities of the TVDD.
- the TVDD requests the capabilities from the PDD and returns them to the OS, but doubles, for example, the screen width information.
- the OS initializes the TVDD.
- the TVDD initializes the PDD.
- the TDD requests a double width frame buffer in system memory from the PDD and passes it back to the OS as the combination operating system output frame buffer and transparent graphics frame buffer existing side by side.
- the TVDD initializes its internal transparency support component to provide transparency for applications in a certain portion of the double width virtual screen by using the double width frame buffer as both the transparent graphics frame buffer and the operating system output frame buffer.
- Execution processing proceeds with a procedure call to the graphics API by the application program to draw to the screen of the system.
- the graphics API translates the drawing request into one or more display driver primitive operations.
- the graphics API then makes a procedure call to TVDD for each primitive.
- the TVDD requests the PDD to apply the primitive to the double width frame buffer.
- the TVDD alerts its transparency support module that the double width frame buffer has been updated.
- the TVDD then passes an appropriate return code to the OS.
- the values of the return code may depend on the primitive type and capabilities of the PDD.
- the transparency support component mixes a first section (e.g., the left section) of the double width frame buffer (with a given alpha value) with a second section (e.g., the right section with non-transparent content).
- a first section e.g., the left section
- a second section e.g., the right section with non-transparent content
- Mixed results may be placed on the PDD's visible display buffer (or onto a second buffer and subsequently flipped to the visible frame buffer).
- the use of first and second sections may be transposed depending on the position of the mouse cursor as discussed further below. In other embodiments, multiple sections may be used to support multiple levels of transparency (e.g., different degrees of alpha blending).
- Mouse cursor control processor proceeds with the user moving a mouse cursor for the system.
- the OS fields the interrupt generated by the movement of the mouse and delivers a “new cursor position” call to the TVDD with the cursor position on the double wide virtual screen.
- the first section of the screen may be treated as the “solid” or non-transparent section of the screen and the second section (e.g., the left section) as the transparent section of the screen.
- the second section may be treated as the “solid” or non-transparent section and the first section as the transparent section.
- This arrangement allows application programs to receive input from either section of the screen and allows the user to know to which “layer” data is being inputted.
- the PDD may then be called to draw the cursor at a position equal to the cursor position over the non-transparent section of the double width virtual screen. For example, if the primary display width is X, then the virtual screen width is 2X. If the cursor is at position X+1, the right section of the screen may be the non-transparent section and the cursor would be drawn at position 1 (because it is one unit to the right of the threshold of the non-transparent section). Control may then be returned to the OS.
Abstract
A transparent layer of display data may be provided over the top of another layer of display data on a display so that the user may see both layers clearly and simultaneously. This capability may be provided without employing modifications to the application program generating the data to be displayed transparently. That is, transparency effects may be provided for the display output data of application programs that do not have native transparency support. Embodiments of the present invention provide a generalized interface for accessing transparent display features by an application program. Creating transparent graphics for an application program lacking native transparency support includes selecting a virtual display to receive display data output from the application program, displaying non-transparent display data on a primary display, drawing the display data on the virtual display, and representing the display data from the virtual display transparently on the primary display along with the non-transparent display data.
Description
- 1. Field
- The present invention relates generally to graphical user interfaces and, more specifically, to generating transparent graphics displays.
- 2. Description
- In the days of “dumb” terminals and early personal computers (PCs), a user could typically view only one set of information at a time on a computer display. With the advent of windowing features of graphical user interfaces in some operating system software, a user may view multiple sets of information in multiple windows shown on the display. In some cases, the windows are overlapping, and in other cases the windows are non-overlapping (or tiled). While the windowing capability has proven advantageous for increasing the amount of information displayed to the user on a single display, it still is limited in that when two or more windows are overlapping, the window in the foreground obscures or blocks the user's view of the overlapped portion of the window in the background. The foreground window also blocks input access to the overlapped portion of the background window. The user typically must perform some action, such as a cursor movement, keyboard input strike or mouse input event, to cause the background window to be changed to the foreground window, thereby allowing the user to fully view its contents or provide input signals to the system.
- One approach to overcoming this drawback of windowing systems is to provide the capability for simultaneous viewing of the entire contents of multiple overlapping windows through the use of transparency. Transparent windows contain display data wherein objects or images beyond the transparent window (e.g., in a background window or underlying display surface) may still be perceived by the user. Transparent effects are used in some computer software games to enable features such as “heads-up” display functions.
- Current implementations of transparency have at least several disadvantages. The transparent effect is typically achieved by interleaving pixels from two display buffers without the ability to adjust the level of transparency. The use of transparency results in windows with inferior viewing quality because the pixel interleaving method produces “checkerboard” artifacts in the display. Furthermore, the transparent effects are limited to pre-defined, self-contained components of specialized application programs. That is, if a user desires that at least a portion of an application program's output data be displayed in a transparent manner, the application program's code may need to be re-written to explicitly implement the transparency. As a result, it may be difficult to provide transparency for application programs that do not already provide transparency capabilities themselves. When the application programs are commercial “off-the-shelf” shrink-wrapped software, providing transparency capabilities may not be feasible.
- Therefore, a need exists for the capability to represent display objects of an application program transparently over the top of other display windows and background surfaces on a display without employing modifications to the application program.
- An embodiment of the present invention is a method of creating transparent graphics for an application program lacking native transparency support. The method includes selecting a virtual display to receive display data output from the application program, displaying non-transparent display data on a primary display, drawing the display data on the virtual display, and representing the display data from the virtual display transparently on the primary display along with the non-transparent display data.
- Another embodiment of the present invention is a system for creating transparent graphics for an application program lacking native transparency support. The system includes a virtual display driver to receive display data from the application program to be displayed transparently, a primary display to display non-transparent data and the display data, and a primary display driver to control the transparent display of the display data received from the virtual display driver and the display of the non-transparent data on the primary display.
- The features and advantages of the present invention will become apparent from the following detailed description of the present invention in which:
- FIG. 1 is a diagram illustrating an example of transparent graphics displayed with operating system output graphics according to an embodiment of the present invention;
- FIG. 2 is a diagram illustrating a sample system capable of being operated with a transparency method in accordance with an embodiment of the present invention;
- FIG. 3 is a diagram of a software and hardware stack for implementing transparent graphics according to an embodiment of the present invention;
- FIG. 4 is a diagram illustrating multiple frame buffers used for providing transparent graphics according to embodiments of the present invention;
- FIG. 5 is a diagram illustrating an alternating pixel technique mixing between the transparent graphics frame buffer and the operating system output frame buffer according to one embodiment of the present invention;
- FIG. 6 is a flow diagram for initializing a system to provide transparent graphics according to one embodiment of the present invention;
- FIG. 7 is a flow diagram showing double buffering control processing according to one embodiment of the present invention;
- FIG. 8 is a flow diagram of color mixing and interleaving processing according to one embodiment of the present invention;
- FIG. 9 is a diagram of multiple display monitors according to an embodiment of the present invention;
- FIG. 10 is a diagram of an alternate software and hardware stack for implementing transparent graphics for an application without native transparency support according to another embodiment of the present invention;
- FIG. 11 is a diagram of yet another software and hardware stack for transparent graphics for an application without native transparency support according to another embodiment of the present invention;
- FIG. 12 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to another embodiment of the present invention;
- FIG. 13 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to yet another embodiment of the present invention.
- An embodiment of the present invention comprises a method and system for providing a transparent layer of display data over the top of another layer of display data on a display so that the user may see both layers clearly and simultaneously. Embodiments of the present invention provide this capability without employing modifications to the application program generating the data to be displayed transparently. That is, transparency effects may be provided for the display output data of application programs that do not have native transparency support. Embodiments of the present invention provide a generalized interface for accessing transparent display features by an application program such that drawing operations by the application program to the display may become transparent without modifying the application program.
- Reference herein to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of the phrase “in one embodiment” in various places throughout the specification are not necessarily all referring to the same embodiment.
- The transparency capability doubles, in essence, the maximum screen area available on a display for use by application programs. One embodiment comprises a method for producing transparent computer graphics layers by interleaving (or alternating in a pattern) the pixels from one video frame buffer with the pixels from another video frame buffer. In this embodiment, the pixels from a first frame buffer are mixed by color averaging with corresponding pixels from a second frame buffer to reduce the “checkerboard” effect created by the use of spatial multiplexing alone. Additionally, because the degree of interleaving is adjustable and the color averaging may be weighted, the degree of transparency of the displayed images may be controlled.
- An embodiment of the present invention operates by combining two frame buffers of computer graphics output data or video data in the form of electrical signals. The pixels of the output, or visible, frame buffer are created by spatially interleaving the contents of two input frame buffers. The interleaving in this embodiment is accomplished by alternating pixels of one frame buffer with those of the other frame buffer. This results in the visual illusion of two displays of images layered one on another. As the pixels are being interleaved, the pixels of the first frame buffer are color averaged with the pixels of the second frame buffer that they are about to replace. Color averaging is performed on the pixels of one frame buffer by averaging them with the corresponding pixels of the other frame buffer prior to, or during, interleaving them into the output frame buffer. The result comprises multiple overlapping images being substantially simultaneously visible on a display, such as a computer monitor, for example.
- FIG. 1 is a diagram illustrating an example of transparent graphics displayed with operating system output graphics according to an embodiment of the present invention. Operating system
output frame buffer 10 is an area of memory used to store the current display data of the computer system (not shown). The operating system output frame buffer may be allocated in any memory available to the operating system. A frame buffer is a set of storage locations to store a two-dimensional array of pixel data. The operating system output frame buffer may be associated with operating system software of the computer system, which controls the generation and display of the data signals on a computer monitor (not shown in FIG. 1). In one embodiment, the operating system software comprises the Windows 95®, Windows 98®, or Windows NT® operating system software available from Microsoft Corporation, although other operating system software supporting graphical user interfaces may also be employed. In this example, the operating systemoutput frame buffer 10 contains application program display data signals for three overlapping windows shown pictorially in FIG. 1 and labeled 12, 14, and 16, respectively. - Transparent
graphics frame buffer 18 is an area of memory used to store the display data of transparent graphics for substantially simultaneous display with the display data signals of the operating system output frame buffer. This area of memory may be allocated in any memory available in the system. In this example, display components such as aclock 20 andstock ticker 22 are shown as sample application program display features which illustrate the use of transparency, although generally any display components or objects may be made transparent through the use of embodiments of the present invention. - The display components of the operating system output frame buffer and the transparent graphics frame buffer may be combined by color mixing24 the corresponding pixels of each buffer while interleaving the resulting pixels of the color mixing operation with the operating system output frame buffer's pixels to form the display components of
visible display buffer 28. The visible display buffer shows in pictorial form the three overlappingwindows clock 20 andstock ticker 22 displays appearing as transparent display components overlaying portions of the windows. In this example, the transparent display components are partially overlaying the other display components. However, it should be understood that the transparent display components may be entirely within the boundaries of one or more non-transparent windows or display components on the display. Of course, in certain application programs and with certain display components, the display of data from two display components with one substantially or even completely on top of the other may present image quality problems for the user. Nonetheless, in other application programs the ability to overlay transparent display components in a well designed manner is advantageous and desirable. - In addition, embodiments of the present invention allow transparent display components overlaying background windows to have little or no effect on input operations to a selected background window. For example, a user may interact with an input window of an application program being displayed in a background window while a transparent display component is partially or completely overlaying the background window. The operating system software may accept the user input events or key strikes to the input window (such as a mouse entry or text entry) without substantial interference with the display of the transparent display components.
- In accordance with embodiments of the present invention, a method for producing transparency effects employs minimal mixing of display contents. Instead, it relies on the human eye's inability to distinguish between the color of adjacent pixels on a computer monitor (in essence, the human eye averages each pixel with its neighbor). Some mixing is employed, because large computer monitors and low display resolutions may result in a “checkerboard” effect when pixels are interleaved in this manner. In one embodiment, one half of the pixels from a first frame buffer (such as the operating system output frame buffer) are averaged with one half of the pixels from a second frame buffer (such as the transparent graphics frame buffer) as the pixels of the two frame buffers are interleaved into a display buffer whose data is currently being rendered visible on a display. By averaging a fraction of the pixels, there may be a decrease in the processing power used when providing the transparency effect. In alternate embodiments, different percentages of pixels may be averaged (e.g., one fourth of the pixels, one eighth of the pixels, one sixteenth of the pixels, one thirty-second of the pixels, or any one Nth of the pixels where N is a positive integer), and the percentages may be changed dynamically.
- FIG. 2 is a diagram illustrating a sample system capable of being operated with a method for producing transparency displays in accordance with the present invention.
Sample system 100 may be used, for example, to execute the processing for the methods described herein.Sample system 100 is representative of computer systems based on the PENTIUM®, PENTIUM® Pro, and PENTIUM® II microprocessors available from Intel Corporation, although other systems (including personal computers (PCs) having other microprocessors, engineering workstations, set-top boxes and the like) may also be used.Sample system 100 includesmicroprocessor 102 andcache memory 104 coupled to each other throughprocessor bus 105.Sample system 100 also includes first I/O bus 108 and second I/O bus 118.Processor bus 105 and first I/O bus 108 may be bridged byhost bridge 106, whereas first I/O bus 108 and second I/O bus 118 may be bridged by I/O bus bridge 110. Coupled to first /O bus 108 may bemain memory 112 andvideo memory 114. Coupled tovideo memory 114 may bevideo display 116. Coupled to second I/O bus 118 may bemass storage 120, and keyboard andpointing devices 122. - These elements perform their conventional functions well known in the art. In particular,
mass storage 120 may be used to provide long-term storage for the executable instructions for a method for providing transparent displays in accordance with embodiments of the present invention, whereasmain memory 112 may be used to store on a shorter term basis the executable instructions of a method for providing transparent displays in accordance with embodiments of the present invention during execution bymicroprocessor 102. In addition, the instructions may be stored on other machine readable mediums accessible by the system, such as compact disk read only memories (CD-ROMs), digital versatile disks (DVDs), and floppy disks, for example. - FIG. 3 is a diagram of a software and hardware stack for implementing transparent graphics according to one embodiment of the present invention.
Application programs 200 specifically designed to use transparent display objects call functions provided bytransparency support software 202 to define and update the transparent display objects. That is, certain calls to such functions may be programmed into application programs in order to use transparency display features. In response,transparency support 202 calls the operating system graphics rendering application programming interface (graphics API) 204 in this embodiment. In the Windows 95® and Windows 98® operating systems, for example, this may be the Graphics Device Interface (GDI). Thetransparency support software 202 also calls the operating system's video hardware control abstraction application programming interface (video control API) 206 in this embodiment. In the Windows95® and Windows 98® operating systems, this may be the DirectDraw API, available from Microsoft Corporation. In some operating systems, thegraphics API 202 andvideo control API 206 may not be distinguishable from each other as they may exist within the same application programming interface. Thegraphics API 204 may be used to render requested graphics to the transparentgraphics frame buffer 18 shown in FIG. 1. Thevideo control API 206 may be used to control frame buffer visibility and to access the contents of all frame buffers. In this embodiment, thegraphics API 204 andvideo control API 206 interact withdisplay driver software 208 to communicate withvideo card 210. Thevideo card 210 controls the video display in the system of FIG. 2. Video card accessesvideo memory 114 to obtain display data.Other application programs 212 which do not employ transparency interact with thegraphics API 204 to create and update display objects. - Generally, images may be displayed on a display such as a computer monitor, for example, by creating a frame buffer of pixel data in
video memory 114. This frame buffer may be designated as a visible portion of video memory byvideo control API 206. If there is a sufficient amount of video memory available, multiple frame buffers may be defined, only one of which may be used at a time (by the video card 210) to obtain the data signals for building the current visible display. In a well known double buffering technique, a first frame buffer is considered to be the “visible” buffer and thevideo card 210 reads data signals from it to obtain the current display data signals, while a second frame buffer (or “non-visible” buffer) is written to with new display data. In this embodiment, the video control API is then called upon to “flip” the frame buffers by designating the second frame buffer to be the visible buffer and designating the first frame buffer to be the non-visible buffer. Use of this technique provides for the smooth update of display data, resulting in aesthetically pleasing displays for the user. Embodiments of the present invention may extend this concept to employ extra frame buffers to provide the transparent display data signals in conjunction with normal display data. - FIG. 4 is a diagram illustrating an embodiment of multiple frame buffers used for providing transparent graphics. One designated portion of the video memory may be assigned to be displayed as visible on the computer monitor at a time. This is called the “visible display”. That is, the visible display comprises the display data from an area of video memory that is currently displayed on the computer monitor for viewing by a user. Generally, in this embodiment the
graphics API 204 of the operating system software writes data signals into the operating systemoutput frame buffer 10 usingdisplay driver 208 and/orvideo control API 206. In most current systems, the operating system output frame buffer, resident invideo memory 114, is used for the visible display. However, in embodiments of the present invention, other frame buffers may be used as the visible display. A first workingframe buffer 300 and a secondworking frame buffer 302, both resident invideo memory 114 or other accessible memory, store display data according to embodiments of the present invention. In this embodiment, each frame buffer stores an array of pixel data signals. The size of the array in this embodiment is dependent on the current display characteristics of the system. Frame buffer array sizes may, for example, be 640 pixels by 480 pixels, 800 pixels by 600 pixels, or 1280 pixels by 1024 pixels, or other appropriate sizes dependent on the computer monitor and operating system software settings. Each pixel includes red (R), green (G), blue (B), and optionally, opacity (A) components. Alternatively, other color coding schemes such as YUV or YUVA may also be used. Transparentgraphics frame buffer 18, resident inmain memory 112, in this embodiment stores transparent display data created bytransparency support software 202,video control API 206, andgraphics API 204. - In one embodiment, data signals from the transparent
graphics frame buffer 18 may be color mixed and interleaved with data signals from operating systemoutput frame buffer 10, and then stored in one of the working frame buffers. This mixed and interleaved data may be stored into a working frame buffer when the working frame buffer is in a “non-visible” state (that is, in this embodiment the data stored in the frame buffer is not currently displayed on the computer monitor). While one of the working frame buffers is being written to in a non-visible state, the other working frame buffer may be in a “visible” state and used as the source of current display data. When the color mixing and interleaving operations are complete for a working frame buffer, the non-visible working frame buffer may be designated the visible working frame buffer and vice versa. This double buffering process may be repeated at a rate of at least 8-15 times per second in this embodiment to provide a visually appealing display to a user. - In embodiments of the present invention, interleaving of the pixels of the transparent graphics frame buffer and the operating system output frame buffer may be accomplished as follows. In one embodiment, alternating pixels in the selected working frame buffer may be written by a mix of a transparent graphics frame buffer pixel value and a spatially corresponding operating system output frame buffer pixel value. The other pixels in the selected working frame buffer may be written with pixels from the operating system output frame buffer. In another embodiment, pixels from the operating system output frame buffer may be block transferred to the selected working frame buffer and pixels from the transparent graphics frame buffer may be subsequently spatially multiplexed and color averaged with the pixels of the selected working frame buffer.
- FIG. 5 is a diagram illustrating an embodiment of one method of alternating pixel mixing between the transparent graphics frame buffer and the operating system output frame buffer. A “T+OS Mix” pixel in the selected working frame buffer comprises a color averaged mix of a pixel from the transparent graphics frame buffer (the T value) and a pixel from the operating system output frame buffer (the OS value). An “OS” pixel in the selected working frame buffer contains a spatially corresponding pixel copied from the operating system output frame buffer. In this embodiment, color averaging may be performed through a weighted averaging scheme on each color component of each pixel from corresponding positions within the two frame buffers, although in other embodiments, different color mixing techniques may also be employed. In one embodiment, weighted averaging may be accomplished by multiplying a component value of a first pixel by a weight value and multiplying the same component value of a second pixel by a different weight value. The two weighted color components may then be added together and the resulting sum may be divided by the sum of the two weight values. This method is also known as alpha blending. By using this alternating pattern, the computer processing employed to create the transparent effect may be cut in half in comparison to a mixing of all pixels of the frame buffers. The pixel data movement within the video memory may be performed by a block transfer operation provided by the drawing API in this embodiment.
- FIG. 6 is a flow diagram illustrating an embodiment for initializing a system to provide transparent graphics. At
block 400, the operating system display output control information may be determined. This control information comprises the size of the display, color resolution, and other data. Next, atblock 402, two working frame buffers may be allocated in video memory in this embodiment. These operations may be performed by calls to the video control API in this embodiment. Atblock 404, a block transfer operation may be performed to copy data from the normally visible operating system output frame buffer to a selected one of the two working frame buffers. Assume for this example that the second working frame buffer is selected first, although the first working frame buffer may also be used as the initial working frame buffer. The block transfer may be performed by a call to the video control API in this embodiment. Atblock 406, the operating system output frame buffer may be set to a “non-visible” state by a call to the video control API. Atblock 408, the selected working frame buffer (for example, the second working frame buffer) may be made visible by a call to the video control API in this embodiment. In some embodiments, block 406 and block 408 may be accomplished by a single call to the video control API. At this point, the video card's current display output data is obtained from the selected working frame buffer, not the operating system output frame buffer. In alternate embodiments, other APIs may also be used to effect the same results. - FIG. 7 is a flow diagram showing an embodiment of double buffering control processing. After starting
block 410, a block transfer operation may be performed atblock 412 to copy the operating system output frame buffer to the non-visible first working frame buffer by a call to the video control API in this embodiment. Atblock 414, an operation may be performed to write the mixed and interleaved contents of the first working frame buffer and the transparent graphics frame buffer to the first working frame buffer. Atblock 416, the first working frame buffer is made visible and the second working frame buffer is made non-visible, in effect, flipping the two frame buffers as the current display output data source. Atblock 418, a block transfer operation may be performed to copy the operating system output frame buffer to the non-visible second working frame buffer by a call to the video control API in this embodiment. Atblock 420, an operation may be performed to write the color mixed and interleaved contents of the second working frame buffer and the transparent graphics frame buffer to the second working frame buffer. Atblock 422, the second working frame buffer is made visible and the first working frame buffer is made non-visible, in effect, flipping the two frame buffers as the current display output data source. This process may be repeated by returning to block 412. During each of the previous blocks, the operating system software may be concurrently writing additional display data into the operating system output frame buffer. - The color mixing and interleaving operation of
blocks block 426, a memory location in the currently non-visible (either the first or the second) working frame buffer may be determined for a reference point (e.g., point M 304) of the transparent graphics frame buffer. Atblock 428, a data signal value for a pixel from the currently non-visible working frame buffer may be read and the spatially corresponding pixel(s) from the transparent graphics frame buffer may be determined. This correspondence is not necessarily a 1:1 ratio since the transparent graphics frame buffer image may be stretched or reduced to fit a portion of the working frame buffer. This pixel correspondence determination is well known in the art and is commonly used in stretch block transfers in operating system software (e.g., the StretchBlt function in the Windows95® operation system). Next, atblock 430, in this embodiment the weighted average of the pixel from the working frame buffer and the pixel from the transparent graphics frame buffer may be computed. The weighted averages of the individual pixel components may be determined on a color component by color component basis. That is, red components may be averaged, blue components may be averaged, and green components may be averaged. The weight that is given to each of the components determines the resulting transparency of the pixel, however the same weight value may be used for all components of a given pixel. It is the weight associated with a pixel that affects, at least in part, the level of transparency. These weights may be manipulated by the application program employing transparency to achieve various mixing ratios. Furthermore, the application program employing transparency may provide user interface elements that allow the user to control the mixing ratios directly or indirectly. - The result of the weighted averaging computation may be placed into the same location in the working frame buffer at
block 432 as the current pixel being processed. Atblock 434, the next location in the working frame buffer to be processed may be determined, taking into account the current interleaving pattern (e. g., using every second pixel, every fourth pixel, horizontally or vertically alternating lines, etc.). Atblock 436, if more pixels of the working frame buffer and the transparent graphics frame buffer are to be processed, processing continues withblock 428 with the next pixel. Otherwise, color mixing and interleaving processing ends atblock 438. - Some operating systems, such as Microsoft Corporation's Windows 98® and Windows 2000™, for example, support the concurrent use of multiple display monitors by a single computer system. In these operating systems, an unlimited number of display monitors may be supported per computer system. The monitors may be arranged in a way that creates a contiguous region. The size and color depth of each monitor may be set independently. The bounding rectangle of all monitors makes up a virtual screen. In such systems, the desktop window of the graphical user interface covers the virtual screen, rather than the screen of a single physical monitor. Because existing application programs expect one monitor with an origin of (0, 0), the virtual screen contains one monitor with the origin (0, 0). This monitor is known as the primary monitor. FIG. 9 is a diagram illustrating multiple display monitors and a virtual screen. Each physical display device may be represented by a monitor handle. A display monitor has the same monitor handle value through out its life. Selected operating system functions that return a display device context (DC) may return a DC for a monitor. A DC comprises an area of memory used as a non-visible drawing surface or frame buffer.
- The capability for multiple display monitors in a system may be useful for implementing transparent graphics for the output data of an application program without employing modifications to the application program. According to an embodiment of the present invention, a primary monitor or display may be used for normal, non-transparent display data and a second monitor or display may be used for transparent display data. The primary display may be accessed by a primary display driver and the second display may be accessed by a transparency virtual display driver. However, the second display is virtual only; it does not exist as hardware in the system. In other embodiments, more than two monitors and associated display drivers may be employed. In one embodiment, the “continuous desktop” described above may be used to support automatic selection of a display monitor for transparent display operations. Selection of a monitor may be made by determining a drawing location within the virtual screen. In this way, an application program may not have to be aware of the multiple display monitors.
- FIG. 10 is a diagram of an alternate software and hardware stack for implementing transparent graphics for an application without native transparency support according to an embodiment of the present invention. In this embodiment, an application program or user may direct selected output data from the application program to be represented on a display in a transparent manner without employing modifications to the application program code. A “contiguous desktop” or separate desktops may be used to support selection of the transparency function. A user may position a window of an application program through the use of a mouse or other pointing device, which may result in a call to the operating system. An
application program 500, which is not specifically designed and coded to create, use and destroy transparent display objects itself, may call functions provided by operating system graphics rendering application programming interface (graphics API) 502 in one embodiment in order to select transparent display of the output data of the application program. In some embodiments, selection of the multiple display monitors may be presented to a user through well-known selectable tabs in a display properties window of a control panel window. This allows a user to control monitor layout. In some operating systems, each application program may have a system control menu with an entry to allow output data from an application program to be sent to a specific display monitor. A particular one of the multiple display monitors may be a virtual monitor associated with transparent display output. In the Windows 95® and Windows 98® operating systems, the graphics API may be the Graphics Device Interface (GDI), available from Microsoft Corporation. -
Graphics API 502 may initialize transparencyvirtual display driver 504 in response to the user selection of transparency to make available a virtual display to be written to by all application programs. Transparency virtualdisplay device driver 504 calls video hardware control abstraction application programming interface (video control API) 506 in this embodiment. In the Windows95® and Windows 98® operating systems, this may be the DirectDraw API, available from Microsoft Corporation. In some operating systems,graphics API 502 andvideo control API 506 may not be distinguishable from each other as they may exist within the same application programming interface. In this embodiment,graphics API 502 is aware that support for multiple display monitors is provided by the operating system. Transparencyvirtual display driver 504 may be used to render requested graphics to the transparentgraphics frame buffer 18 shown in FIG. 1 indirectly by calling video control API functions to create display surfaces on the primary display. Thevideo control API 506 may be used to control frame buffer visibility and to access the contents of all frame buffers. All frame buffers may be created byprimary display driver 508. In this embodiment,graphics API 504 andvideo control API 506 interact with primarydisplay driver software 508 to communicate withvideo card 510. Transparencyvirtual display driver 504 may also callprimary display driver 508 to communicate with the video card.Video card 510 controls the video display in the system of FIG. 2. Video card accessesvideo memory 512 to obtain display data. Anotherapplication program 514 may also call graphics API functions in the well-known manner to display data. - FIG. 11 is a diagram of another alternate software and hardware stack for implementing transparent graphics for an application without native transparency support according to an embodiment of the present invention. In this case, the operating system does not provide support for multiple display monitors, such as in the Windows 95® operating system. Therefore, the primary display driver may be hidden from
graphics API 502.Graphics API 502 may communicate with transparencyvirtual display driver 504 for all display driver function calls. FIG. 12 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to an embodiment of the present invention. In this embodiment, an application program or a user may direct selected output data to be represented on a display in a transparent manner without employing modifications to the application program code. A software component called a transparencyvirtual display driver 602 may be installed and be recognizable by the operating system. The operating system recognizes the transparency virtual display driver as a display driver component and may not be aware that transparency may be provided. In this embodiment, the transparency virtual display driver may be associated with a non-existent video card andvirtual display 604. While the transparency virtual display driver is “visible” to application programs and operating system software components, no actual hardware is associated with it. As discussed above, some operating systems, such as Microsoft Corporation's Windows 98® and Windows 2000™, for example, support the concurrent use of multiple displays by a single computer system. When using such operating systems, a transparencyvirtual display driver 602 referencing a “virtual” video card may co-exist according to the operating system with aprimary display driver 606 for an existingvideo card 608 and associatedprimary display 610. - However, rather than implementing transparency display requests by writing display data to an operating system output frame buffer,
primary display driver 606 implements the requests by writing display data to a transparent graphics frame buffer. The frame buffers may be managed as disclosed above. In this embodiment, however, the interface between the application programs and the display drivers has been generalized so that an application program may direct display output data to be shown transparently by determining a location for drawing on the contiguous desktop or by user selection of a specific monitor. Thus, transparent display output may be provided without modifying the application program code to specifically support transparency. - For example, in FIG. 12, a user may interact with
operating system 600 to select which application program(s) may be associated with each display device (or display monitor). For instance,application program 612 may be selected to produce transparent display output data forvirtual display 604 andapplication program 614 may be selected to produce normal, non-transparent display output data forprimary display 610. When a transparent virtual display is selected as the display monitor for an application program, graphics API and videocontrol API components 620 withinoperating system 600 route display requests fromapplication program 612 to transparencyvirtual display driver 602. Transparency virtual display driver callsprimary display driver 606 over line 622to create a memory-based display device context (DC). The DC is a non-visible drawing surface existing in video or system memory. The DC may be a transparent graphics frame buffer as shown in FIG. 1. The display monitor or “screen” of the transparent virtual display driver exists only as the memory-based DC (e.g., transparent graphics frame buffer). Transparencyvirtual display driver 602 routes all requests received online 616 to draw to its virtual display to the memory-based DC controlled byprimary display driver 606 vialine 624. In this embodiment, all transparency support exists in atransparency support component 626 within the transparency virtual display driver, not in the application program. The transparent frame buffer may exist in non-displayed memory onvideo card 608 or in system memory. - In some embodiments of the present invention, multiple transparent virtual displays and associated transparent virtual display drivers may be provided, with each virtual display supporting a predetermined level of display transparency so that a user may select a desired level of transparency for a given application program or set of application programs. In another embodiment, multiple transparency virtual display drivers may be installed for a given virtual display, with each of the multiple transparency virtual display drivers using a different level of transparency (e.g., different degrees of alpha blending).
- When a transparency virtual display driver (TVDD) is used in a system supporting multiple monitors, such as those employing operating systems such as Windows 98® and Windows 2000™, for example, installation, loading, execution, and mouse cursor control operations may be implemented as follows in accordance with one embodiment of the present invention.
- Installation of the transparency capability proceeds with the user initiating the execution of an install program on the system. The install program copies TVDD files to the system's mass storage. The install program identifies a first existing primary display driver (PDD) in a monitor list in a system registry of the operating system. The install program adds a new TVDD to a monitor list in the registry with substantially the same settings as the first existing PDD. The install program repeats these steps as necessary for additional existing display drivers. The install program may then reboot the system.
- The loading of transparency functionality proceeds with the operating system (OS) beginning its boot sequence. The OS loads the first PDD, requests the capabilities of this driver, and initializes the driver to gain access to the driver's frame buffer. The OS then loads the first TVDD and requests the capabilities of the TVDD. The first TVDD requests capabilities from the first PDD and returns them to the OS as the first TVDD's capabilities. The OS initializes the first TVDD. The first TVDD requests a transparent graphics frame buffer in system memory from the first PDD with properties substantially the same as the PDD's frame buffer (via the first PDD's access to the video control API). The first TVDD initializes its internal
transparency support component 626 to provide transparency for the TVDD's transparent graphics frame buffer vialine 624. The first TVDD returns to the OS a representation of its transparent graphics frame buffer. The OS then continues loading other display drivers as necessary. - Execution processing proceeds with a procedure call to the graphics API by the application program to draw to the screen of the system. The graphics API translates the drawing request into one or more display driver primitive operations. The OS decides, for each primitive, to which display driver they belong. The OS then makes a procedure call to the appropriate display driver to implement each primitive. If a selected display driver for the primitive is the PDD, the PDD performs normal display processing as is well-known in the art. If a selected display driver is a TVDD, the TVDD fields the primitive and implements the primitive by drawing to the TVDD's transparent graphics frame buffer by calling an associated PDD to process the requested primitive. For example, if the TVDD is asked by the OS to draw a line from X to Y, the TVDD requests its associated PDD to draw a line from X to Y on the TVDD's transparent graphics frame buffer under the control of the PDD. The TVDD alerts its transparency support module that the transparent graphics frame buffer has been updated.
- When a predetermined amount of time has passed or a predetermined amount of the TVDD's transparent graphics frame buffer has changed via graphics API draw primitives, the transparency support component mixes the contents of the transparent graphics frame buffer with those of the associated PDD's operating system output frame buffer. Mixed results may be placed on the PDD's visible display buffer (or onto a second buffer and subsequently flipped to the visible frame buffer).
- When a contiguous desktop is provided, mouse cursor control processing proceeds with the user moving a mouse cursor for the system. The OS fields the interrupt generated by the movement of the mouse and determines which monitor the cursor is on. The OS then delivers a “new cursor position” call to the appropriate display driver. If the “new cursor position” call is delivered to the PDD, normal cursor processing may be performed and the PDD handles drawing the cursor on its own visible frame buffer. If the “new cursor position” call is delivered to a TVDD, the TVDD queries its associated PDD to draw the cursor at the requested position. This allows users to move the mouse cursor to a TVDD virtual display and interact with transparent applications belonging to it. Control may then be returned to the OS.
- In one embodiment, when a TVDD's transparency support component mixes the contents of the frame buffers, the transparency support component may determine where the mouse cursor is on the display. If, and only if, the mouse cursor is over the TVDD's virtual display, the transparency support component may mix the frame buffers differently such that the contents of that TVDD's transparent graphics frame buffer appear to be a “solid” or non-transparent layer and the associated PDD's operating system output frame buffer appears to be the transparent layer. This allows the user to know that he or she is interacting with application programs on the TVDD virtual display rather than with application programs on the PDD's primary display.
- When a transparency virtual display driver is used in a system that does not support multiple monitors, such as those employing the Windows 95® operating system, for example, installation, loading, execution, and mouse cursor control operations may be implemented as follows in accordance with one embodiment of the present invention. FIG. 13 is a diagram of a system architecture for implementing transparent graphics for an application without native transparency support according to yet another embodiment of the present invention. In this embodiment, all calls from graphics API and
video control API 620 may be implemented by transparencyvirtual display driver 602, which in turn callsprimary display driver 606. - Installation of the transparency capability proceeds with the user initiating the execution of an install program on the system. The install program copies TVDD files to the system's mass storage. The install program identifies the existing primary display driver (PDD) in the system registry. The install program stores the name and location of the existing PDD in a private storage area and places its own name in the existing PDD's place. The install program then changes attributes of the PDD in the registry by keeping its existing settings, but by doubling, for example, the screen width of the primary display. In other embodiments, other multiples of a screen width may be used. The install program may then reboot the system.
- The loading of transparency functionality proceeds with the operating system (OS) beginning its boot sequence. The OS first loads the TVDD. The TVDD accesses the area of private storage and locates the PDD. The TVDD then loads the PDD. The OS next requests the capabilities of the TVDD. The TVDD requests the capabilities from the PDD and returns them to the OS, but doubles, for example, the screen width information. The OS initializes the TVDD. The TVDD initializes the PDD. The TDD requests a double width frame buffer in system memory from the PDD and passes it back to the OS as the combination operating system output frame buffer and transparent graphics frame buffer existing side by side. The TVDD initializes its internal transparency support component to provide transparency for applications in a certain portion of the double width virtual screen by using the double width frame buffer as both the transparent graphics frame buffer and the operating system output frame buffer.
- Execution processing proceeds with a procedure call to the graphics API by the application program to draw to the screen of the system. The graphics API translates the drawing request into one or more display driver primitive operations. The graphics API then makes a procedure call to TVDD for each primitive. The TVDD requests the PDD to apply the primitive to the double width frame buffer. The TVDD alerts its transparency support module that the double width frame buffer has been updated. The TVDD then passes an appropriate return code to the OS. The values of the return code may depend on the primitive type and capabilities of the PDD.
- When a predetermined amount of time has passed or a predetermined amount of the double width frame buffer has changed via graphics API draw primitives, the transparency support component mixes a first section (e.g., the left section) of the double width frame buffer (with a given alpha value) with a second section (e.g., the right section with non-transparent content). Mixed results may be placed on the PDD's visible display buffer (or onto a second buffer and subsequently flipped to the visible frame buffer). The use of first and second sections may be transposed depending on the position of the mouse cursor as discussed further below. In other embodiments, multiple sections may be used to support multiple levels of transparency (e.g., different degrees of alpha blending).
- Mouse cursor control processor proceeds with the user moving a mouse cursor for the system. The OS fields the interrupt generated by the movement of the mouse and delivers a “new cursor position” call to the TVDD with the cursor position on the double wide virtual screen. If the cursor is on a first section (e.g., the right section) of the virtual screen, the first section of the screen may be treated as the “solid” or non-transparent section of the screen and the second section (e.g., the left section) as the transparent section of the screen. If the cursor is on the second section of the screen, the second section may be treated as the “solid” or non-transparent section and the first section as the transparent section. This arrangement allows application programs to receive input from either section of the screen and allows the user to know to which “layer” data is being inputted. The PDD may then be called to draw the cursor at a position equal to the cursor position over the non-transparent section of the double width virtual screen. For example, if the primary display width is X, then the virtual screen width is 2X. If the cursor is at position X+1, the right section of the screen may be the non-transparent section and the cursor would be drawn at position1 (because it is one unit to the right of the threshold of the non-transparent section). Control may then be returned to the OS.
- While this invention has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications of the illustrative embodiments, as well as other embodiments of the invention, which are apparent to persons skilled in the art to which the inventions pertains are deemed to lie within the spirit and scope of the invention.
Claims (25)
1. A method of creating transparent graphics for an application program lacking native transparency support comprising:
selecting a virtual display to receive display data output from the application program;
displaying other display data non-transparently on a primary display;
drawing the display data on the virtual display; and
representing the display data from the virtual display transparently on the primary display along with the other display data.
2. The method of , further comprising receiving the display data by a virtual display driver controlling the virtual display and forwarding the display data to a primary display driver controlling the primary display.
claim 1
3. The method of , further comprising routing requests to display the display data from the application program by an operating system to the virtual display driver.
claim 2
4. The method of , wherein drawing display data on the virtual display comprises storing the display data in a transparent graphics frame buffer.
claim 1
5. The method of , further comprising storing the other data in an output frame buffer.
claim 4
6. The method of , further comprising color mixing and interleaving pixel data of the transparent graphics frame buffer with pixel data from the output frame buffer to produce resulting pixel data, and displaying the resulting pixel data on the primary display.
claim 5
7. The method of , wherein the transparent graphics frame buffer comprises a memory-based display device context.
claim 4
8. The method of , further comprising providing a plurality of virtual displays, each virtual display supporting a different predetermined level of transparency.
claim 1
9. The method of , wherein selecting comprises selecting one of the virtual displays to display data from the application program according to a desired level of transparency.
claim 8
10. The method of , further comprising determining a location of a cursor and displaying the display data non-transparently on the primary display when the cursor location is on the virtual display and displaying the other display data transparently.
claim 1
11. A system for creating transparent graphics for an application program lacking native transparency support comprising:
a virtual display driver to receive display data from the application program to be displayed transparently;
a primary display to display the display data transparently and to display other display data non-transparently; and
a primary display driver to control the transparent display of the display data received from the virtual display driver and the display of the other display data on the primary display.
12. The system of , further comprising a transparent graphics frame buffer to store display data to be displayed transparently.
claim 11
13. The system of , wherein the transparent graphics frame buffer comprises a memory-based display device context.
claim 12
14. The system of , further comprising an output frame buffer to store the other display data.
claim 11
15. The system of , further comprising a plurality of virtual display drivers, each virtual display driver supporting a different predetermined level of transparency.
claim 11
16. The system of , further comprising a graphics application programming interface to interconnect the virtual display driver and the primary display driver.
claim 11
17. An article comprising a machine readable medium having stored therein a plurality of machine readable instructions executable by a processor, the machine readable instructions comprising instructions to select a virtual display to receive display data output from an application program, to display other display data non-transparently on a primary display, to draw the display data on the virtual display, and to represent the display data from the virtual display transparently on the primary display along with the other display data.
18. The article of , further comprising instructions to receive the display data by a virtual display driver controlling the virtual display and to forward the display data to a primary display driver controlling the primary display.
claim 17
19. The article of , further comprising instructions to route requests to display the display data from the application program to the virtual display driver.
claim 17
20. The article of , wherein instructions to draw display data on the virtual display comprise instructions to store the display data in a transparent graphics frame buffer.
claim 17
21. The article of , further comprising instructions to store the other display data in an output frame buffer.
claim 20
22. The article of , further comprising instructions to color mix and interleave pixel data of the transparent graphics frame buffer with pixel data from the output frame buffer to produce resulting pixel data, and instructions to display the resulting pixel data on the primary display.
claim 21
23. The article of , further comprising instructions to provide a plurality of virtual displays, each virtual display supporting a different predetermined level of transparency.
claim 17
24. The article of , wherein instructions to select a virtual display comprise instructions to select one of the virtual displays to display data from the application program according to a desired level of transparency.
claim 23
25. The article of , further comprising instructions to determine a location of a cursor and to display the display data non-transparently on the primary display when the cursor location is on the virtual display and displaying the other display data transparently.
claim 17
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/251,580 US6359631B2 (en) | 1999-02-16 | 1999-02-16 | Method of enabling display transparency for application programs without native transparency support |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/251,580 US6359631B2 (en) | 1999-02-16 | 1999-02-16 | Method of enabling display transparency for application programs without native transparency support |
Publications (2)
Publication Number | Publication Date |
---|---|
US20010040584A1 true US20010040584A1 (en) | 2001-11-15 |
US6359631B2 US6359631B2 (en) | 2002-03-19 |
Family
ID=22952564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/251,580 Expired - Lifetime US6359631B2 (en) | 1999-02-16 | 1999-02-16 | Method of enabling display transparency for application programs without native transparency support |
Country Status (1)
Country | Link |
---|---|
US (1) | US6359631B2 (en) |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020003537A1 (en) * | 2000-07-10 | 2002-01-10 | Konami Corporation | Three-dimensional image processing unit and computer readable recording medium storing three-dimensional image processing program |
US20020075407A1 (en) * | 2000-12-15 | 2002-06-20 | Philips Electronics North America Corporation | Picture-in-picture repositioning and/or resizing based on video content analysis |
US20020149599A1 (en) * | 2001-04-12 | 2002-10-17 | Honeywell International Inc. | Methods and apparatus for displaying multiple data categories |
US20060070012A1 (en) * | 2004-09-27 | 2006-03-30 | Scott Milener | Method and apparatus for enhanced browsing |
US20060074984A1 (en) * | 2004-09-27 | 2006-04-06 | Scott Milener | Graphical tree depicting search or browsing history |
EP1675395A1 (en) * | 2003-10-15 | 2006-06-28 | Sony Corporation | Reproducing device, reproducing method, reproducing program, and recording medium |
US20060143568A1 (en) * | 2004-11-10 | 2006-06-29 | Scott Milener | Method and apparatus for enhanced browsing |
US20060184893A1 (en) * | 2005-02-17 | 2006-08-17 | Raymond Chow | Graphics controller providing for enhanced control of window animation |
US20070008338A1 (en) * | 2005-05-28 | 2007-01-11 | Young-Chan Kim | Display system, display apparatus, and method of controlling video source and display apparatus |
US20070030289A1 (en) * | 2005-08-05 | 2007-02-08 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
WO2007018385A1 (en) | 2005-08-05 | 2007-02-15 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
US20070083825A1 (en) * | 2002-07-10 | 2007-04-12 | Imran Chaudhri | Method and apparatus for displaying a window for a user interface |
US20070139430A1 (en) * | 2005-12-21 | 2007-06-21 | Microsoft Corporation | Rendering "gadgets" with a browser |
WO2007105998A1 (en) * | 2006-03-10 | 2007-09-20 | Front Media Ab | A method, client device, computer program product and system for processing image information for a display |
US20070229542A1 (en) * | 2006-03-30 | 2007-10-04 | Taco Van Ieperen | Method and graphical interface for embedding animated content into a computer application |
US20080082907A1 (en) * | 2006-10-03 | 2008-04-03 | Adobe Systems Incorporated | Embedding Rendering Interface |
EP1911273A1 (en) * | 2005-08-05 | 2008-04-16 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
US20080192043A1 (en) * | 2004-05-11 | 2008-08-14 | Konami Digital Entertainment Co., Ltd. | Display, Displaying Method, Information Recording Medium, and Program |
US20090102811A1 (en) * | 1999-12-01 | 2009-04-23 | Silverbrook Research Pty Ltd | Method of displaying hyperlinked information using mobile phone |
US20110157181A1 (en) * | 2009-12-31 | 2011-06-30 | Nvidia Corporation | Methods and system for artifically and dynamically limiting the display resolution of an application |
US8037527B2 (en) | 2004-11-08 | 2011-10-11 | Bt Web Solutions, Llc | Method and apparatus for look-ahead security scanning |
US20110289394A1 (en) * | 2010-05-20 | 2011-11-24 | Lg Electronics Inc. | Mobile terminal and controlling method thereof |
US8327440B2 (en) | 2004-11-08 | 2012-12-04 | Bt Web Solutions, Llc | Method and apparatus for enhanced browsing with security scanning |
US20130328908A1 (en) * | 2012-06-11 | 2013-12-12 | Research In Motion Limited | Transparency information in image or video format not natively supporting transparency |
US8732610B2 (en) | 2004-11-10 | 2014-05-20 | Bt Web Solutions, Llc | Method and apparatus for enhanced browsing, using icons to indicate status of content and/or content retrieval |
US8839142B2 (en) | 2007-06-08 | 2014-09-16 | Apple Inc. | Desktop system object removal |
WO2015046900A1 (en) * | 2013-09-27 | 2015-04-02 | Samsung Electronics Co., Ltd. | Method and device for sharing content |
US9171350B2 (en) | 2010-10-28 | 2015-10-27 | Nvidia Corporation | Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up |
US9256265B2 (en) | 2009-12-30 | 2016-02-09 | Nvidia Corporation | Method and system for artificially and dynamically limiting the framerate of a graphics processing unit |
US9292196B2 (en) | 2010-10-19 | 2016-03-22 | Apple Inc. | Modifying the presentation of clustered application windows in a user interface |
US9542202B2 (en) | 2010-10-19 | 2017-01-10 | Apple Inc. | Displaying and updating workspaces in a user interface |
US9658732B2 (en) | 2010-10-19 | 2017-05-23 | Apple Inc. | Changing a virtual workspace based on user interaction with an application window in a user interface |
CN107528918A (en) * | 2017-09-15 | 2017-12-29 | 湖南新云网科技有限公司 | Application program for mobile terminal management method and system based on lucidification disposal |
US10152192B2 (en) | 2011-02-21 | 2018-12-11 | Apple Inc. | Scaling application windows in one or more workspaces in a user interface |
US10740117B2 (en) | 2010-10-19 | 2020-08-11 | Apple Inc. | Grouping windows into clusters in one or more workspaces in a user interface |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6683630B1 (en) * | 1999-08-06 | 2004-01-27 | Microsoft Corporation | Methods and arrangements for allowing independent program modules to access shared display device resources |
BR0014349A (en) * | 1999-09-27 | 2002-06-04 | Canal Plus Sa | Window system |
US6832312B1 (en) * | 1999-12-22 | 2004-12-14 | Evga.Com | Process for automatically installing video display software upon detecting new video display controller |
JP3902907B2 (en) * | 2000-06-29 | 2007-04-11 | キヤノン株式会社 | Image processing apparatus and method, and image forming apparatus |
US7038690B2 (en) * | 2001-03-23 | 2006-05-02 | Microsoft Corporation | Methods and systems for displaying animated graphics on a computing device |
US6919900B2 (en) * | 2001-03-23 | 2005-07-19 | Microsoft Corporation | Methods and systems for preparing graphics for display on a computing device |
US7239324B2 (en) * | 2001-03-23 | 2007-07-03 | Microsoft Corporation | Methods and systems for merging graphics for display on a computing device |
US6917362B2 (en) * | 2002-01-25 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | System and method for managing context data in a single logical screen graphics environment |
US20030189594A1 (en) * | 2002-04-04 | 2003-10-09 | International Business Machines Corporation | Dynamic text visibility program |
US7451457B2 (en) * | 2002-04-15 | 2008-11-11 | Microsoft Corporation | Facilitating interaction between video renderers and graphics device drivers |
US7219352B2 (en) * | 2002-04-15 | 2007-05-15 | Microsoft Corporation | Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays |
AU2002952371A0 (en) * | 2002-10-31 | 2002-11-14 | Robert Van Der Zijpp | Mutli Image to Merged Image Software Process |
US8659615B2 (en) * | 2003-01-31 | 2014-02-25 | Nvidia Corporation | System and method for providing transparent windows of a display |
CN100456715C (en) * | 2003-07-31 | 2009-01-28 | 腾讯科技(深圳)有限公司 | Method and system for realizing image information exchange via instant communication system |
US7643675B2 (en) * | 2003-08-01 | 2010-01-05 | Microsoft Corporation | Strategies for processing image information using a color information data structure |
US7274370B2 (en) * | 2003-12-18 | 2007-09-25 | Apple Inc. | Composite graphics rendered using multiple frame buffers |
KR100792284B1 (en) * | 2004-03-10 | 2008-01-07 | 삼성전자주식회사 | Method for setting driver program of image processing device and image processing system with transparent function |
US20050281417A1 (en) * | 2004-06-18 | 2005-12-22 | Gregory Toprover | Media device |
US9401822B2 (en) * | 2005-06-09 | 2016-07-26 | Whirlpool Corporation | Software architecture system and method for operating an appliance exposing key press functionality to a network |
JP4693159B2 (en) * | 2005-07-20 | 2011-06-01 | 株式会社バンダイナムコゲームス | Program, information storage medium, and image generation system |
US7681200B2 (en) * | 2005-07-22 | 2010-03-16 | Microsoft Corporation | Secure hardware desktop buffer composition |
US8543420B2 (en) * | 2007-09-19 | 2013-09-24 | Fresenius Medical Care Holdings, Inc. | Patient-specific content delivery methods and systems |
US20070226642A1 (en) * | 2006-03-22 | 2007-09-27 | Business Objects, S.A. | Apparatus and method for displaying transparent windows when copying or moving items between windows |
US8194088B1 (en) | 2006-08-03 | 2012-06-05 | Apple Inc. | Selective composite rendering |
US20080084395A1 (en) * | 2006-10-05 | 2008-04-10 | Christopher James Dawson | Motion based adjustment of display transparency |
US8584028B2 (en) * | 2006-10-31 | 2013-11-12 | Microsoft Corporation | Adaptable transparency |
US20080209311A1 (en) * | 2006-12-29 | 2008-08-28 | Alex Agronik | On-line digital image editing with wysiwyg transparency |
US8358314B2 (en) * | 2008-02-08 | 2013-01-22 | Apple Inc. | Method for reducing framebuffer memory accesses |
US8261238B2 (en) * | 2008-03-04 | 2012-09-04 | Microsoft Corporation | Shield for user interface testing |
US8125495B2 (en) | 2008-04-17 | 2012-02-28 | Microsoft Corporation | Displaying user interface elements having transparent effects |
US8698741B1 (en) | 2009-01-16 | 2014-04-15 | Fresenius Medical Care Holdings, Inc. | Methods and apparatus for medical device cursor control and touchpad-based navigation |
US20160320938A9 (en) * | 2009-03-17 | 2016-11-03 | Litera Technologies, LLC | System and Method for the Auto-Detection and Presentation of Pre-Set Configurations for Multiple Monitor Layout Display |
US8632485B2 (en) * | 2009-11-05 | 2014-01-21 | Fresenius Medical Care Holdings, Inc. | Patient treatment and monitoring systems and methods |
US10799117B2 (en) | 2009-11-05 | 2020-10-13 | Fresenius Medical Care Holdings, Inc. | Patient treatment and monitoring systems and methods with cause inferencing |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4555775B1 (en) * | 1982-10-07 | 1995-12-05 | Bell Telephone Labor Inc | Dynamic generation and overlaying of graphic windows for multiple active program storage areas |
US5212770A (en) * | 1989-12-06 | 1993-05-18 | Eastman Kodak Company | Data-handling and display system capable of supporting multiple application programs and output devices |
EP0605945B1 (en) * | 1992-12-15 | 1997-12-29 | Sun Microsystems, Inc. | Method and apparatus for presenting information in a display system using transparent windows |
US5748866A (en) * | 1994-06-30 | 1998-05-05 | International Business Machines Corporation | Virtual display adapters using a digital signal processing to reformat different virtual displays into a common format and display |
US5768607A (en) * | 1994-09-30 | 1998-06-16 | Intel Corporation | Method and apparatus for freehand annotation and drawings incorporating sound and for compressing and synchronizing sound |
US5841420A (en) * | 1995-08-18 | 1998-11-24 | International Business Machines Corporation | Method and system in a data processing system windowing environment for displaying previously obscured information |
US5574836A (en) * | 1996-01-22 | 1996-11-12 | Broemmelsiek; Raymond M. | Interactive display apparatus and method with viewer position compensation |
US6118427A (en) * | 1996-04-18 | 2000-09-12 | Silicon Graphics, Inc. | Graphical user interface with optimal transparency thresholds for maximizing user performance and system efficiency |
US5850232A (en) * | 1996-04-25 | 1998-12-15 | Microsoft Corporation | Method and system for flipping images in a window using overlays |
US6038031A (en) * | 1997-07-28 | 2000-03-14 | 3Dlabs, Ltd | 3D graphics object copying with reduced edge artifacts |
-
1999
- 1999-02-16 US US09/251,580 patent/US6359631B2/en not_active Expired - Lifetime
Cited By (118)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8035848B2 (en) | 1999-12-01 | 2011-10-11 | Silverbrook Research Pty Ltd | Method of filling in form using handheld display device |
US8040554B2 (en) * | 1999-12-01 | 2011-10-18 | Silverbrook Research Pty Ltd | Method of revealing hidden content on a printed substrate using handheld display device |
US8358432B2 (en) * | 1999-12-01 | 2013-01-22 | Silverbrook Research Pty Ltd | Method of playing and controlling audio using handheld display device |
US8358433B2 (en) | 1999-12-01 | 2013-01-22 | Silverbrook Research Pty Ltd | Method of revealing hidden content via handheld display device |
US8358430B2 (en) | 1999-12-01 | 2013-01-22 | Silverbrook Research Pty Ltd | Method of displaying hyperlinked information via handheld display device |
US8358429B2 (en) | 1999-12-01 | 2013-01-22 | Silverbrook Research Pty Ltd | Method of interacting with printed content via handheld display device |
US8314967B2 (en) * | 1999-12-01 | 2012-11-20 | Silverbrook Research Pty Ltd | Handheld display device for interacting with printed hyperlinks |
US8300262B2 (en) * | 1999-12-01 | 2012-10-30 | Silverbrook Research Pty Ltd | Method of playing video using handheld display device |
US8284408B2 (en) | 1999-12-01 | 2012-10-09 | Silverbrook Research Pty Ltd | Handheld display device having processor for rendering display output with real-time virtual transparency and video playback option |
US8279456B2 (en) | 1999-12-01 | 2012-10-02 | Silverbrook Research Pty Ltd | Handheld display device having processor for rendering display output with real-time virtual transparency and form-filling option |
US8279455B2 (en) | 1999-12-01 | 2012-10-02 | Silverbrook Research Pty Ltd | Handheld display device having processor for rendering display output to provide real-time virtual transparency |
US8274694B2 (en) | 1999-12-01 | 2012-09-25 | Silverbrook Research Pty Ltd. | Method for accessing hyperlinks and hyperlinked content via mobile phone |
US20120081325A1 (en) * | 1999-12-01 | 2012-04-05 | Silverbrook Research Pty Ltd | Method of accessing digital content using mobile phone with orientation determination |
US8139260B2 (en) * | 1999-12-01 | 2012-03-20 | Silverbrook Research Pty Ltd | Handheld display device for associating multimedia objects with printed substrates |
US8115962B2 (en) * | 1999-12-01 | 2012-02-14 | Silverbrook Research Pty Ltd | Method of displaying hyperlinked information using handheld display device |
US8111408B2 (en) * | 1999-12-01 | 2012-02-07 | Silverbrook Research Pty Ltd | Mobile phone for interacting with underlying substrate |
US8102561B2 (en) | 1999-12-01 | 2012-01-24 | Silverbrook Research Pty Ltd | Method of playing and controlling video using handheld display device |
US8098396B2 (en) | 1999-12-01 | 2012-01-17 | Silverbrook Research Pty Ltd | Handheld display device for playing video associated with printed substrate |
US8089654B2 (en) | 1999-12-01 | 2012-01-03 | Silverbrook Research Pty Ltd | Interactive application for retrieving content via imaging of printed substrate |
US8081340B2 (en) * | 1999-12-01 | 2011-12-20 | Silverbrook Research Pty Ltd | Mobile phone for displaying hyperlinked information |
US8081341B2 (en) * | 1999-12-01 | 2011-12-20 | Silverbrook Research Pty Ltd | Method of displaying hyperlinked information using mobile phone |
US8064092B2 (en) * | 1999-12-01 | 2011-11-22 | Silverbrook Research Pty Ltd | System for retrieving display data for handheld display device |
US8064091B2 (en) * | 1999-12-01 | 2011-11-22 | Silverbrook Research Pty Ltd | Handheld display device for playing and controlling video associated with printed substrate |
US20090102811A1 (en) * | 1999-12-01 | 2009-04-23 | Silverbrook Research Pty Ltd | Method of displaying hyperlinked information using mobile phone |
US20090104937A1 (en) * | 1999-12-01 | 2009-04-23 | Silverbrook Research Pty Ltd | Method of associating multimedia object with substrate |
US20090104936A1 (en) * | 1999-12-01 | 2009-04-23 | Silverbrook Research Pty Ltd | Mobile phone for displaying hyperlinked information |
US8059305B2 (en) * | 1999-12-01 | 2011-11-15 | Silverbrook Research Pty Ltd | Handheld display device for playing and controlling audio associated with printed substrate |
US8045208B2 (en) * | 1999-12-01 | 2011-10-25 | Silverbrook Research Pty Ltd | Method of translating printed text using handheld display device |
US8035850B2 (en) | 1999-12-01 | 2011-10-11 | Silverbrook Research Pty Ltd | Method and system for retrieving display data |
US20100144396A1 (en) * | 1999-12-01 | 2010-06-10 | Silverbrook Research Pty Ltd | Mobile phone for interacting with underlying substrate |
US20100184470A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method of playing and controlling video using handheld display device |
US20100184467A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method of revealing hidden content on a printed substrate using handheld display device |
US20100182411A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method and system for retrieving display data |
US20100184474A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method of filling in form using handheld display device |
US20100184461A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for interacting with printed hyperlinks |
US20100184475A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for filling in forms |
US20100184463A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for associating multimedia objects with printed substrates |
US20100182268A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for interacting with printed substrate |
US20100184468A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for revealing hidden content on a printed substrate |
US20100184476A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Interactive application for retrieving content via imaging of printed substrate |
US20100184471A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for playing and controlling video associated with printed substrate |
US20100184462A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd. | Method of displaying hyperlinked information using handheld display device |
US20100185433A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method of translating printed text using handheld display device |
US20100184477A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | System for retrieving display data for handheld display device |
US20100184472A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method of playing and controlling audio using handheld display device |
US20100182269A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method of playing video using handheld display device |
US20100182647A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for magnifying printed information |
US20100184473A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for playing and controlling audio associated with printed substrate |
US20100184464A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Method of associating multimedia object with printed substrate |
US20100184469A1 (en) * | 1999-12-01 | 2010-07-22 | Silverbrook Research Pty Ltd | Handheld display device for playing video associated with printed substrate |
US20100304728A1 (en) * | 1999-12-01 | 2010-12-02 | Silverbrook Research Pty Ltd | Method for accessing hyperlinks and hyperlinked content via mobile phone |
US8035849B2 (en) | 1999-12-01 | 2011-10-11 | Silverbrook Research Pty Ltd | Handheld display device for filling in forms |
US8035847B2 (en) * | 1999-12-01 | 2011-10-11 | Silverbrook Research Pty Ltd | Handheld display device for revealing hidden content on a printed substrate |
US8031357B2 (en) | 1999-12-01 | 2011-10-04 | Silverbrook Research Pty Ltd | Handheld display device for interacting with printed substrate |
US8023140B2 (en) * | 1999-12-01 | 2011-09-20 | Silverbrook Research Pty Ltd | Handheld display device for magnifying printed information |
US20020003537A1 (en) * | 2000-07-10 | 2002-01-10 | Konami Corporation | Three-dimensional image processing unit and computer readable recording medium storing three-dimensional image processing program |
US6842183B2 (en) * | 2000-07-10 | 2005-01-11 | Konami Corporation | Three-dimensional image processing unit and computer readable recording medium storing three-dimensional image processing program |
US20020075407A1 (en) * | 2000-12-15 | 2002-06-20 | Philips Electronics North America Corporation | Picture-in-picture repositioning and/or resizing based on video content analysis |
US7206029B2 (en) * | 2000-12-15 | 2007-04-17 | Koninklijke Philips Electronics N.V. | Picture-in-picture repositioning and/or resizing based on video content analysis |
US20020149599A1 (en) * | 2001-04-12 | 2002-10-17 | Honeywell International Inc. | Methods and apparatus for displaying multiple data categories |
US20070089066A1 (en) * | 2002-07-10 | 2007-04-19 | Imran Chaudhri | Method and apparatus for displaying a window for a user interface |
US10365782B2 (en) | 2002-07-10 | 2019-07-30 | Apple Inc. | Method and apparatus for displaying a window for a user interface |
US8601384B2 (en) * | 2002-07-10 | 2013-12-03 | Apple Inc. | Method and apparatus for displaying a window for a user interface |
US8533624B2 (en) | 2002-07-10 | 2013-09-10 | Apple Inc. | Method and apparatus for displaying a window for a user interface |
US9552131B2 (en) | 2002-07-10 | 2017-01-24 | Apple Inc. | Method and apparatus for displaying a window for a user interface |
US20070083825A1 (en) * | 2002-07-10 | 2007-04-12 | Imran Chaudhri | Method and apparatus for displaying a window for a user interface |
US8204357B2 (en) | 2003-10-15 | 2012-06-19 | Sony Corporation | Reproducing device, reproducing method, reproducing program and recording medium |
US20070003221A1 (en) * | 2003-10-15 | 2007-01-04 | Toshiya Hamada | Reproducing device, reproducing method, reproducing program and recording medium |
EP1675395A4 (en) * | 2003-10-15 | 2009-11-25 | Sony Corp | Reproducing device, reproducing method, reproducing program, and recording medium |
EP1675395A1 (en) * | 2003-10-15 | 2006-06-28 | Sony Corporation | Reproducing device, reproducing method, reproducing program, and recording medium |
US20080192043A1 (en) * | 2004-05-11 | 2008-08-14 | Konami Digital Entertainment Co., Ltd. | Display, Displaying Method, Information Recording Medium, and Program |
US20060074984A1 (en) * | 2004-09-27 | 2006-04-06 | Scott Milener | Graphical tree depicting search or browsing history |
US10382471B2 (en) | 2004-09-27 | 2019-08-13 | Cufer Asset Ltd. L.L.C. | Enhanced browsing with security scanning |
US10592591B2 (en) | 2004-09-27 | 2020-03-17 | Cufer Asset Ltd. L.L.C. | Enhanced browsing with indication of prefetching status |
US20060070012A1 (en) * | 2004-09-27 | 2006-03-30 | Scott Milener | Method and apparatus for enhanced browsing |
US9584539B2 (en) | 2004-09-27 | 2017-02-28 | Cufer Asset Ltd. L.L.C. | Enhanced browsing with security scanning |
US9942260B2 (en) | 2004-09-27 | 2018-04-10 | Cufer Asset Ltd. L.L.C. | Enhanced browsing with security scanning |
US7840911B2 (en) * | 2004-09-27 | 2010-11-23 | Scott Milener | Method and apparatus for enhanced browsing |
US11122072B2 (en) | 2004-09-27 | 2021-09-14 | Cufer Asset Ltd. L.L.C. | Enhanced browsing with security scanning |
US8037527B2 (en) | 2004-11-08 | 2011-10-11 | Bt Web Solutions, Llc | Method and apparatus for look-ahead security scanning |
US8959630B2 (en) | 2004-11-08 | 2015-02-17 | Bt Web Solutions, Llc | Enhanced browsing with security scanning |
US8327440B2 (en) | 2004-11-08 | 2012-12-04 | Bt Web Solutions, Llc | Method and apparatus for enhanced browsing with security scanning |
US9270699B2 (en) | 2004-11-08 | 2016-02-23 | Cufer Asset Ltd. L.L.C. | Enhanced browsing with security scanning |
US8732610B2 (en) | 2004-11-10 | 2014-05-20 | Bt Web Solutions, Llc | Method and apparatus for enhanced browsing, using icons to indicate status of content and/or content retrieval |
US20060143568A1 (en) * | 2004-11-10 | 2006-06-29 | Scott Milener | Method and apparatus for enhanced browsing |
US20060184893A1 (en) * | 2005-02-17 | 2006-08-17 | Raymond Chow | Graphics controller providing for enhanced control of window animation |
US20070008338A1 (en) * | 2005-05-28 | 2007-01-11 | Young-Chan Kim | Display system, display apparatus, and method of controlling video source and display apparatus |
US20070030289A1 (en) * | 2005-08-05 | 2007-02-08 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
EP1935174A1 (en) * | 2005-08-05 | 2008-06-25 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
WO2007018385A1 (en) | 2005-08-05 | 2007-02-15 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
US8174617B2 (en) | 2005-08-05 | 2012-05-08 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
EP1911273A1 (en) * | 2005-08-05 | 2008-04-16 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
EP1911273A4 (en) * | 2005-08-05 | 2009-10-14 | Samsung Electronics Co Ltd | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
EP1935174A4 (en) * | 2005-08-05 | 2009-11-11 | Samsung Electronics Co Ltd | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
US20070139430A1 (en) * | 2005-12-21 | 2007-06-21 | Microsoft Corporation | Rendering "gadgets" with a browser |
WO2007105998A1 (en) * | 2006-03-10 | 2007-09-20 | Front Media Ab | A method, client device, computer program product and system for processing image information for a display |
US7876333B2 (en) * | 2006-03-30 | 2011-01-25 | Smart Technologies Ulc | Method and graphical interface for embedding animated content into a computer application |
US20070229542A1 (en) * | 2006-03-30 | 2007-10-04 | Taco Van Ieperen | Method and graphical interface for embedding animated content into a computer application |
US8612847B2 (en) * | 2006-10-03 | 2013-12-17 | Adobe Systems Incorporated | Embedding rendering interface |
US20080082907A1 (en) * | 2006-10-03 | 2008-04-03 | Adobe Systems Incorporated | Embedding Rendering Interface |
US8839142B2 (en) | 2007-06-08 | 2014-09-16 | Apple Inc. | Desktop system object removal |
US9256265B2 (en) | 2009-12-30 | 2016-02-09 | Nvidia Corporation | Method and system for artificially and dynamically limiting the framerate of a graphics processing unit |
US20110157181A1 (en) * | 2009-12-31 | 2011-06-30 | Nvidia Corporation | Methods and system for artifically and dynamically limiting the display resolution of an application |
US9830889B2 (en) * | 2009-12-31 | 2017-11-28 | Nvidia Corporation | Methods and system for artifically and dynamically limiting the display resolution of an application |
US20110289394A1 (en) * | 2010-05-20 | 2011-11-24 | Lg Electronics Inc. | Mobile terminal and controlling method thereof |
US10740117B2 (en) | 2010-10-19 | 2020-08-11 | Apple Inc. | Grouping windows into clusters in one or more workspaces in a user interface |
US9542202B2 (en) | 2010-10-19 | 2017-01-10 | Apple Inc. | Displaying and updating workspaces in a user interface |
US9292196B2 (en) | 2010-10-19 | 2016-03-22 | Apple Inc. | Modifying the presentation of clustered application windows in a user interface |
US9658732B2 (en) | 2010-10-19 | 2017-05-23 | Apple Inc. | Changing a virtual workspace based on user interaction with an application window in a user interface |
US11150780B2 (en) | 2010-10-19 | 2021-10-19 | Apple Inc. | Updating display of workspaces in a user interface for managing workspaces in response to user input |
US9171350B2 (en) | 2010-10-28 | 2015-10-27 | Nvidia Corporation | Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up |
US10152192B2 (en) | 2011-02-21 | 2018-12-11 | Apple Inc. | Scaling application windows in one or more workspaces in a user interface |
US8878867B2 (en) * | 2012-06-11 | 2014-11-04 | Blackberry Limited | Transparency information in image or video format not natively supporting transparency |
US20130328908A1 (en) * | 2012-06-11 | 2013-12-12 | Research In Motion Limited | Transparency information in image or video format not natively supporting transparency |
US10572212B2 (en) | 2013-09-27 | 2020-02-25 | Samsung Electronics Co., Ltd. | Method and device for sharing content |
WO2015046900A1 (en) * | 2013-09-27 | 2015-04-02 | Samsung Electronics Co., Ltd. | Method and device for sharing content |
CN105579985A (en) * | 2013-09-27 | 2016-05-11 | 三星电子株式会社 | Method and device for sharing content |
CN107528918A (en) * | 2017-09-15 | 2017-12-29 | 湖南新云网科技有限公司 | Application program for mobile terminal management method and system based on lucidification disposal |
Also Published As
Publication number | Publication date |
---|---|
US6359631B2 (en) | 2002-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6359631B2 (en) | Method of enabling display transparency for application programs without native transparency support | |
US6151030A (en) | Method of creating transparent graphics | |
US6501464B1 (en) | On-screen transparent keyboard interface | |
US7168048B1 (en) | Method and structure for implementing a layered object windows | |
US5850232A (en) | Method and system for flipping images in a window using overlays | |
US5999191A (en) | Method and apparatus for presenting information in a display system using transparent windows | |
US6882354B1 (en) | Scroll bars with user feedback | |
US6917362B2 (en) | System and method for managing context data in a single logical screen graphics environment | |
JP2512250B2 (en) | Video display workstation | |
JP3413201B2 (en) | Graphics control plane for windowing and other display operations | |
JP2976879B2 (en) | Window display with depth | |
US6151034A (en) | Graphics hardware acceleration method, computer program, and system | |
US5574836A (en) | Interactive display apparatus and method with viewer position compensation | |
US20100235736A1 (en) | Virtual Magnifying Glass with on-the Fly Control Functionalities | |
US20030128242A1 (en) | Opacity desktop with depth perception | |
US20100201623A1 (en) | Method and system for displaying information | |
US8976187B2 (en) | System for accelerating composite graphics rendering | |
JPS6232527A (en) | Display picture control system | |
CN114924824B (en) | Visual object blurring method, visual object rendering method and computing device | |
US8631342B2 (en) | Computer display control system and method | |
US20060168537A1 (en) | Computer display control system and method | |
Voorhies et al. | Virtual graphics | |
JP2003530614A (en) | System and method for changing the direction of rotation of display data | |
US6654023B1 (en) | Method and apparatus for controlling mip map transitions in a video graphics system | |
Pinedo | Window clipping methods in graphics accelerators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DELEEUW, WILLIAM C.;REEL/FRAME:009906/0704 Effective date: 19990407 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |