The present invention relates to a method and associated apparatus for providing a user selectable hardware zoom in a video display system.
Computers are important tools in today's society, and the computer display is an essential component of one's workspace. The importance of computer displays for the efficiency of work is demonstrated by the presence of larger displays and multiple displays when the display “real estate” becomes important to one's work. In some cases, larger displays allow for more “real estate” to be displayed. Dual displays are usually driven by independent display controllers, and the operating system (e.g. Windows 98™) is informed that the “desktop” or display surface is to be displayed on one side by one display controller and on the other side by the other display controller. This is typically done using two independent graphics subsystem accessing two separate and independent memory subsystems. Dual displays have an advantage over larger displays in many cases because with CRT monitors, the depth of the monitor is in proportion to the screen size, and large screens take up significant physical desktop surface area. It can sometimes be impossible to set up a 20″ CRT monitor, while it is possible to set up two 15″ monitors on the same desktop surface. The cost of two 15 inch monitors is also typically less than half that of one 20 inch monitor.
While providing a greater physical surface area for the computer display output provides satisfactory results in many work environments, there is a need to have better display detail for work requiring attention to detail, such as graphics work, in which a zoom or scaling of the area to be worked on is essential. Conventional zoom is done by the application programs themselves, i.e. the user selects a zoom level for a display, and the application provides a magnified view of the object being worked on, such as a document, drawing or image; mostly, this zoom covers or replaces the previous image on the display. Some application programs provide a smaller window with a representation of a whole page of a document or image, while the main viewing portion of the display provided the zoomed image.
Conventional zooming techniques operate to satisfaction when the applications provide them, however, the user often needs to command the application program to switch between zoom levels in order to edit a document correctly, since perspective is essential to proper editing. There is therefore a need to provide for a display-based zoom for providing a user with the ability to view an accurate zoom of a portion of a main display surface on one display, while being able to view the entire main display surface on the other in the case of multiple monitor configuration.
It is also known in the art to provide a single display controller hardware zoom in which the zoom operates to scale a fixed portion of a main surface memory, such as, for example, an area which is one quarter the size of the main surface memory, in which each pixel of the main surface memory is displayed as four pixels in the zoom display. The portion of the main surface memory can be displaced or dragged using the mouse. The known hardware zoom does not provide for a user defined magnification ratio to be used, and is limited to a fixed or a set of pre-defined magnification ratios,
It is an object of the present invention to provide a method for implementing a hardware zoom in which a user specifies a point and a dimension of a window or frame associated with the point within a main display, and the hardware zoom automatically scales a maximum portion of the window selected to a full screen view. The full screen zoom may be provided on a different display than the main display, with the main display remaining unchanged by the selection. This allows the user to simply define any area on the display using an input device with the result that the window automatically gets scaled full screen. This offers the flexibility of not limiting the user to determine a scale factor, but to instead define the area that they are interested in working on and having it zoomed full screen to the desired display and resolution. Once the frame has been defined, the frame can be moved relative to the movement of an input device if a panning feature is enabled.
It is also an object of the present invention to provide a method for implementing a hardware zoom which allows for a non-integer fraction of a main display surface memory to be zoomed. By a non-integer fraction is meant a fraction which is not 1/n, where n is an integer, and thus a 1:n scaling is not possible. Such non-integer fractions, as user defined by selecting a zoom window using a GUI, provide a more user friendly operation.
In accordance with a first broad aspect of the present invention, there is provided a method of controlling a display controller system to provide a display surface zoom, said display controller system having a main surface in a frame buffer memory and output to at least one zoom display device, the method comprising the steps of: receiving user input defining coordinates of a frame portion within said main surface in the frame buffer memory; determining a resolution of said at least one zoom display device and adjusting an aspect ratio of said portion defined by said user input to correspond to said resolution; programming said display controller system to implement said display surface zoom to provide a full screen view of said portion on said at least one zoom display device; in said display controller system, scaling said portion of said main surface in the frame buffer memory; in said display controller system, converting said scaled portion of said main surface in the frame buffer memory into a display signal; and outputting said display signal from said display controller system to said at least one zoom display device.
In accordance with a second broad aspect of the present invention, there is provided a method of controlling a display controller system to provide a display surface zoom, said display controller system having a main surface in a frame buffer memory and output to at least one zoom display device, the method comprising the steps of: receiving user input defining coordinates of a fractional portion of said main surface in the frame buffer memory to be scaled and displayed, said fractional portion being a non-integer fraction of said main surface of the frame buffer memory; determining a resolution of said at least one zoom display device and adjusting an aspect ratio of said portion defined by said user input to correspond to said resolution; programming said display controller system to implement said display surface zoom to provide full screen view of said portion on said at least one zoom display device; scaling said portion of said main surface in the frame buffer memory; converting said scaled portion of said main surface in the frame buffer memory into a display signal; and outputting said display signal to said at least one zoom display device.
There are two basic ways of determining the resolution of the zoom display device and adjusting the aspect ratio of the portion. The first way is to determine the suitable aspect ratio based on the resolution of the zoom display and to force the user selection of the frame portion to choose a frame portion of the same aspect ratio. The second way is to allow the user to define any frame portion and then to adjust the frame portion with respect to the aspect ratio based on the resolution of the zoom display.
According to aspects of this invention, one graphics controller with one or multiple Cathode Ray Tube Controllers (CRTC's) allows the user to select any rectangular area (zoom window) on one display and have it zoomed full screen on the second display (or on any other of a larger number of displays) in realtime.
The zoom on the second display can be filtered to avoid pixelation (i.e. an image not illustrating coarse pixels) or unfiltered (i.e. an image illustrating coarse pixels) to facilitate pixel by pixel viewing and editing. User input can also define a user's choice of filtering or non-filtering.
The location of the selected zoom area once defined can be static in order to fix the zoom window on one region of the display or locked to the movement of any user input through an input device (keyboard, absolute or relative pointing device, e.g. mouse). This user input may further include a cursor control device input used to control a cursor, and the portion of the main surface memory to be scaled and output is caused to be dragged or moved over the main surface memory b movement of the cursor.
With the present invention, the user can view both the entire application (or the desktop in general) on one screen and any area of this desktop zoomed to full screen on the second display. This can be extended to include multiple defined areas on multiple secondary displays and even multiple defined areas on one secondary display. For the latter, the user will need to toggle between the various zoom areas once they have been defined.
The user may also reselect a different area or zoom window (any size) whenever desired.
It is also possible to use a single display device, and to toggle between a display of the main surface memory and one of the user selected zoom windows on the same display. In the case of a multiple display desktop displaying the main surface memory, the invention may also allow the user to toggle between a zoom window and the main surface memory for one or all display devices.
The invention may also provide for an automatic recognition of an application program being run on the user's computer and to store user defined zoom window parameters in association with a particular application program. In this way, user activation of the zoom function can cause the particular window or set of windows associated with the application program to be displayed on the zoom display. Thus switching between applications programs may automatically cause the zoom window to change accordingly.
The invention will be better understood by way of the following non-limiting detailed description of a number of preferred embodiments with reference to the appended drawings, in which:
In the first preferred embodiment, two independent display controllers (a primary display and a secondary display controller) are each able to generate a stream of pixel data and associated synchronization signals (syncs) from pixel data contained in a display memory (surfaces). The two display controllers can drive a variety of output ports including any combination of RGB D/A converters, video encoder, and TDMS Panel Link or LCD interface. This permits many display combinations such as but not limited to two RGB monitors, two TV monitors, two flat panel displays or any mix of them.
These surfaces can be in a variety of pixel formats including but not limited to RGB (8, 16, 24, 32) and YUV (4:2:0, 4, 2, 2): The output of each CRTC can be displayed on a CRT monitor, TV or flat Panel displays via appropriate converters, encoders and transmitters. The multiplexers 33 and 34 allow routing of the output of each CRTC to either display. This allows either display to receive the output from either CRTC.
The user zoom controller 16 in the preferred embodiments is provided by software at the level of at least the device driver and utilities which allow the user to select from a variety of options to use the zoom capabilities. These can include but are not limited to: Filtering: on or off; Panning or Mouse Following: on or off; Destination resolution: Automatic or user defined (from any allowed resolution); Toggling between different zoomed surfaces and/or main display surface; and Enabling and disabling association with applications.
Enabling and disabling zoom is done via (but riot limited to) pre assigned (or user defined) Hot-keys or other combinations of keys (or mouse buttons) or icon buttons etc. Furthermore each of the above options can be easily toggled on and off or they can be automatic and user defined using pre-assigned (or user defined) hot keys or the like.
The resolution of the destination can be either automatically calculated or user defined (step 103). When it is user defined, the software uses this resolution (step 104). In the preferred embodiment, it is automatic, it could be chosen in a variety of ways ranging from (but not limited to) the closest standard resolution (to the resolution of the zoom window) to the largest resolution possible etc. These resolutions determination options can also be specified by the user. Once the destination resolution is chosen, the scaling factor is determined (step 106). This determination of the scaling factor is within the general knowledge of those skilled in the art.
The resolution and thus the dimensions of the pixel array of the secondary zoom display device may be very different from the resolution and dimensions of the primary display device. For example, the secondary display could be a portrait display providing a zoom of a full page of text displayed within the main surface memory when a word processor application is running. This can allow a whole 8½″ by 11″ document page to be zoomed to full size and edited on the second display using a display as small as a 13″ monitor, whereas a 20″ monitor is required to view the same page when the monitor is operated in landscape mode. As mentioned above, there is a significant cost difference between a 13″ and a 20″ display, making the secondary 13″ display operating in portrait mode an efficient use of display resources. The primary display can then be accessed for all toolbars and menus within the application, and the fixed portion of the main display containing the document page is displayed on the secondary display as a full page. If the secondary portrait display is configured to operate in portrait mode, then the selected window is directly zoomed. Portrait monitors and some flat panel displays can operate in this manner. If the secondary display operates in landscape mode and is simply turned on its side, then the selected window in the main surface memory may be copied into a buffer in memory 50 in a way so as to rotate the surface 90 degrees. The rotated surface can then be displayed on the landscape monitor turned 90 degrees on its side to provide a portrait display of the selected window.
With knowledge of the destination resolution, a buffer of this resolution is reserved in memory (step 105) for the zoomed area (zoom buffer). As will be appreciated, multiple buffers can be allocated if double or triple buffering is desired and when multiple zoom windows are defined. The secondary CRTC is then programmed (step 107) to read from this zoom buffer (or set of zoom buffers). If the panning or mouse following feature is enabled (step 108) then the location of the zoom window is consistently updated (step 109), see
The parameters associated with a zoom window or set of zoom windows or the selected portion or set or portions of the main surface memory to be displayed on the zoom display can be stored in association with a particular application program. This option may be selected or deselected by the user. When zoom windows are associated with applications, the launch of an application or switching to an application may automatically select the zoom window or set of zoom windows for the application. In the case that a number of zoom windows can be defined for the same display, and the user is allowed to toggle through the zoom windows, the selection of an application can be used to switch to the zoom window associated with the application, and thereafter, the user can toggle through the other zoom windows if a different zoom window is desired.
In this embodiment, the 3D drawing engine 60 of the graphics controller is used to scale the pixels from the main display buffer to the zoom buffer. While the scaling capabilities of the 3D drawing engine are typically used for scaling textures for 3D objects, the capability can easily be leveraged to scale any type of surface with pixels by treating the surface as a texture. If filtering is enabled then the 3D engine scales with filtering enabled. The type of filtering can include but is not limited to bilinear filtering.
Once the CRTC is programmed to operate according to the invention, it constantly reads from the appropriate zoom buffer and outputs to the display, while the 3D Drawing engine 60 keeps refreshing the appropriate zoom buffer with the scaled pixels from within the zoom window (the window may or may not be moving depending on the status of the panning feature).
It will be appreciated that the hardware cursor which is overlaid on top of the main display may also need to be scaled so that is can be seen on the secondary display. Alternatively, the hardware cursor can simply be BLIT (bit block transferred or copied) into the zoom buffer directly (see
CRTC111 reads the full image for the primary display from the primary display buffer (with the hardware cursor overlay) and CRTC212 reads the zoomed image from the zoom buffer and displays it on the secondary display (with the overlaid zoomed hardware cursor). It will be appreciated that the second display will always be a realtime zoomed version of the primary display. The user could chose to do all editing by looking at either display and it will get instantly updated on both displays.
Step 110 determines if filtering has been enabled or not. If so, a selected region is scaled using the 3D drawing engine texture mapper into the appropriate zoom buffer using filtering for ach pixel (step 111). If filtering has not been enabled, a selected region is scaled using the 3D drawing engine texture mapper into the appropriate zoom buffer without any filtering. Once the zoom operation is enabled, the hotkey is also detected (step 100′) to determine if the zoom operation should be disabled (step 113). Alternatively to using the 3D drawing engine 60, the backend scaler of CRTC212 can also be used to scale the zoomed window (see
While the description of the invention uses two controllers as the preferred embodiment, it can easily be extended or scaled to additional controllers.
It will be appreciated that the zoom control can accept user input for adjusting a non-integer scale value to be increased and to be decreased by very small steps by redefining a new zoom window whose length or width or both can be selected to the nearest pixel on the main display. This allows for the input to cause a sliding zoom magnification in either the upwards and downwards direction, i.e. either to increase the zoom magnification to a maximum value or to decrease the zoom magnification down to a minimum value, which may be actual size.
The present application is a continuation of U.S. patent application Ser. No. 09/526,441, filed on Mar. 16, 2000, now abandoned the contents of which are hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4751507 | Hama et al. | Jun 1988 | A |
5027110 | Chang et al. | Jun 1991 | A |
5300948 | Tsujido et al. | Apr 1994 | A |
5886682 | Biggs | Mar 1999 | A |
5936606 | Lie | Aug 1999 | A |
6288702 | Tachibana et al. | Sep 2001 | B1 |
6515678 | Boger | Feb 2003 | B1 |
6788309 | Swan et al. | Sep 2004 | B1 |
Number | Date | Country | |
---|---|---|---|
20060050090 A1 | Mar 2006 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09526441 | Mar 2000 | US |
Child | 11247165 | US |