|
Description  |
|
|
37 C.F.R. .sctn.1.71 Authorization
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it
appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
RELATED APPLICATIONS
______________________________________ Inventor Assignee Appl. No. Date Filed Class ______________________________________ Nguyen Radius, Inc. 07/447,110 12/6/89 231 Oyama Radius, Inc. 07/444,371 12/1/89 291 Oyama Radius, Inc. 07/444/373
12/1/89 291 ______________________________________
MICROFICHE APPENDIX
This document includes a microfiche Appendix comprising three microfiche for a total of 158 frames.
BACKGROUND OF THE INVENTION
Traditionally, computer display screens have been designed either to provide a "portrait" orientation, in which the vertical dimension is greater than the horizontal dimension, or to provide a "landscape" orientation, in which the horizontal
dimension is greater than the vertical dimension. Recent advances in technology have made possible the use of both portrait and landscape orientations with the same computer. Some computer display systems allow the user of the computer to reposition a
display screen between portrait and landscape orientations, and some computers allow the simultaneous use of multiple display screens. When the orientation of a display screen is repositioned between portrait and landscape orientations, some display
area is necessarily lost from view and other area is gained. In a computer system that uses "window" based displays, the area that is lost may include important portions of a window necessary to allow the user to move or resize the window. There may
also be other screens displaying data which do not change in orientation. In order to ensure that the resulting display is usable, some method for automatically redefining the coordinate system of the computer displays in the system, and resizing and
moving windows, is desirable.
SUMMARY OF THE INVENTION
Accordingly, the present intention provides a method to resize and move windows on a computer display system when a display screen comprising part or all of the computer display system is repositioned between portrait and landscape orientations.
Consideration is given to the display area lost due to the change in orientation, the display area gained due to the change in orientation, and, if multiple display screens are involved, whether the change in orientation of one screen should cause a
change in the coordinate definitions of any other screens.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1a shows the change from portrait to landscape orientation.
FIG. 1b shows the display area removed and added as the result of the change in orientation illustrated in FIG. 1a.
FIG. 2 shows a portrait orientation screen with two windows.
FIG. 3 shows how the screen of FIG. 2 is displayed in landscape orientation in accordance with the present invention.
FIG. 4 shows a portrait orientation screen with portions of two windows.
FIG. 5 shows how the screen of FIG. 4 is displayed in landscape orientation in accordance with the present invention.
FIGS. 6a and 6b show the portion of a display on a filed-orientation screen, both before and after the orientation of a second associated screen is repositioned from portrait to landscape orientation, respectively.
FIG. 7 shows a screen in portrait orientation with one window.
FIG. 8 shows a screen in portrait orientation with the same window as shown in FIG. 7 after that window has been enlarged by zooming in the traditional manner.
FIG. 9 shows how the screen of FIG. 8 is displayed in landscape orientation in accordance with the present invention.
FIG. 10 shows a screen in landscape orientation with the same window as shown in FIG. 8 after the screen orientation has been repositioned from portrait to landscape orientation with the automatic zoom feature operative in accordance with the
present invention.
FIG. 11 shows a control panel display window for selecting features in accordance with the present invention.
FIGS. 11(a) and 11(b) detail the window resizing portion of the control panel display window with the auto-rezoom facility of the window resizing feature enabled and disabled, respectively.
FIG. 12 shows a control panel display window for disabling features and providing custom commands for selected window types in accordance with the present invention.
FIG. 13(a) shows a block diagram of software patches to prior art software routines in accordance with the present invention.
FIG. 13(b) shows a block diagram of software support routines in accordance with the present invention.
FIG. 14 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- SlotManager.
FIG. 15 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- GetNextEvent.
FIG. 16 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- InitGraf.
FIG. 17 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- NewWindow.
FIG. 18 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- InitWindows.
FIG. 19 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- SelectWindow.
FIG. 20 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- CloseWindow.
FIG. 21 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- DragWindow.
FIG. 22 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- ShowHide.
FIG. 23 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- GrowWindow.
FIG. 24 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- SizeWindow.
FIG. 25 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- ZoomWindow.
FIG. 26 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- MenuSelect.
FIG. 27 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- TrackBox.
FIG. 28 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- GetMouse.
FIG. 29 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- Button.
FIG. 30 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- TextBox.
FIG. 31 shows a flow diagram of the software patch, in accordance with the present invention, to the prior art routine .sub.-- InitZone.
FIG. 32 shows a flow diagram of the software routine Check/Handle Flip in accordance with the present invention.
FIGS. 33(a), 33(b), 33(c) and 33(d) show a flow diagram of the software routine Compute New Window in accordance with the present invention.
FIGS. 34(a) and 34(b) show a flow diagram of the software routine Check Resize List in accordance with the present invention.
FIG. 35 shows a flow diagram of the software routine Resize Window in accordance with the .present invention.
FIG. 36 shows a flow diagram of the software routine Compute Resize Amount in accordance with the present invention.
FIGS. 37(a1)-37(a2), 37(b), 37(c1)-37(c2), 37(d) and 37 show a flow diagram of the software routine Rebuild Desktop in accordance with the present invention.
FIGS. 38 and 38(a)-38(b) show a flow diagram of the software routine Finder Cleanup in accordance with the present invention.
FIGS. 39 and 39(a)-39(b) show a flow diagram of the software routine Map Rectangle to Main Device in accordance with the present invention.
FIG. 40 shows a flow diagram of the software routine Process a New Window in accordance with the present invention.
FIGS. 41(a) and 41(b) show a flow diagram of the software routine Get Window's Graphic Device in accordance with the present invention.
DETAILED DESCRIPTION OF THE INVENTION
Referring now to FIG. 1a, there is shown a computer display screen which may be operated either in portrait orientation 1 or landscape orientation 2. With some display screens, it is possible to reposition, or "flip" the orientation of the
screen at any time. FIG. 1b shows that when such a flip occurs from portrait orientation 1 to landscape orientation 2, some display area 4 will be removed, a corresponding area 5 will be added, and some display area 3 will be neither removed nor added.
FIG. 2 shows a display 1 in portrait orientation with a smaller window 10, a larger window 11, a main menu bar 12 and two icons 13. In accordance with the present invention, a flip from the portrait orientation of FIG. 2 results in the resizing
or moving of the smaller and larger windows 10, 11, the main menu bar 12 and the two icons 13. The display which results from such a flip is shown in FIG. 3. The smaller window 10 is moved vertically upward to fit entirely within the confines of the
landscape display 2, the vertical dimension of the larger window 11 is reduced to fit entirely within the confines of the landscape display 2, the horizontal dimension of the main menu bar 12 is increased to completely reach from the left side of the
landscape display 2 to the right side of the landscape display 2, and the icons 13 are moved further away from the larger window 11.
It is desirable to have windows and menu text which were visible and accessible before a flip remain visible and accessible after a flip. It is also desirable to have the portions of windows which were accessible before the flip remain
accessible after a flip. If the computer display system makes use of other display screens than the one which is flipped, then it is desirable that the impact of a flip on those other display screens should be minimal. In addition, if the main menu bar
appears before the flip, then it must change in size in accordance with the new dimensions of the flipped display screen. Similarly, icons must remain accessible in both orientations of the display screen.
Accordingly, the present invention determines which display screen in a computer system having multiple display screens should control a particular window. This is accomplished by weighting the importance of the various edges of a window,
determining which window edges appear on which display screen, and computing a weighted sum for each display screen. One embodiment of the present invention uses the following weighting scheme:
8 is added to the weighted sum for a display screen if that display screen contains the top edge of the window.
4 is added to the weighted sum for a display screen if that display screen contains the left edge of the window.
2 is added to the weighted sum for a display screen if that display screen contains the right edge of the window.
1 is added to the weighted sum for a display screen if that display screen contains the bottom edge of the window.
Thus, if a display screen contains the entire window, the sum is 15, and if the display screen does not contain any portion of the window, the sum is 0. The display screen which has the highest sum for a window is considered to control that
window. If no display screen contains a sum greater than 0, the window is controlled by whichever display screen contains the main menu bar. The top edge of a window is considered the most important edge because it normally contains the title bar for
the window, which is used for manual placement, zooming, and closure of the window.
In accordance with the present invention, when a display screen which contains the entirety of a window is flipped, the window is resized and moved as required to ensure that the window remains in its entirety on the flipped display screen. An
example of this is shown in FIGS. 1 and 2, where the small and large windows 10 and 11 are retained entirely in the landscape display 2 after the flip. A vertical move of the smaller window 10 allows it to fit within the landscape display 2. The larger
window 10 in the portrait orientation display 1 of FIG. 2 is too tall to fit in the landscape display 2 of FIG. 3, even if the larger window 10 is moved as far up vertically as possible. Therefore, the larger window 10 is resized to a smaller vertical
dimension in order to allow the window 10 to fit in the landscape display 2 of FIG. 3. In the preferred embodiment of the invention, this resizing is accomplished by software which mimics the code generated by a pointing device (or "mouse") to resize
windows manually.
In the preferred embodiment, the initial location and size of windows 10 and 11 are stored in memory when the display screen is flipped so that flipping the display screen back to its original orientation results in a display identical to the
initial display. However, if the user changes the size or locations of windows on the flipped display screen, flipping the display screen back to its original orientation will not result in a display identical to the initial display.
Referring now to FIG. 4, windows 21 and 22 are shown only partially contained in the portrait display 1. In accordance with the present invention, when the display screen is flipped, the top-left edge of each of the windows 21, 22 is kept the
same distance from whichever edges of the display that the window extends beyond, as illustrated in FIG. 5. In FIG. 4, the window 21 extends below the bottom edge 23 of the portrait display 1. When the display screen is flipped as shown in FIG. 5, the
top-left edge of window 21 is maintained at the same distance from the lower edge 23 of the landscape display 2. Similarly, in FIG. 4, the window 22 extends past the right edge 24 of the portrait display 1. When the display screen is flipped, as shown
in FIG. 5, the top-left edge of window 22 is maintained at the same distance from the right edge 24 of the landscape display 2. The vertical dimension of window 22 is also decreased in the change of orientation from FIG. 4 to FIG. 5 to maintain the
lower edge of window 22 on the lower border of the landscape display 2, as illustrated in FIG. 5. As in the previously described situation, the initial location and size of the windows are stored in memory for use in the event the display screen is
flipped back to its original orientation without the user having made any changes to the size or location of the windows.
Referring now to FIG. 6a, a coordinate system is used to define locations on the display screens 34, 35. In this case, display screen 34 is a portrait orientation on a display screen capable of flipping, and display 35 is a portrait orientation
on a fixed-orientation display screen. One embodiment of the present invention uses a coordinate system having its origin 30 at the top-leftmost displayed pixel and including a first number that refers to the number of pixels below the origin, and a
second number that refers to the number of pixels to the right of the origin. Thus, as illustrated in FIG. 6a, if the portrait orientation of display screen 34 is 865 pixels high by 640 pixels wide, the bottom-rightmost pixel 32 will have the
coordinates (863, 639). Similarly, the top-leftmost pixel 31 of the fixed-orientation display 35 will have the coordinates (0,640) and the bottom-rightmost pixel 33 of the fixed-orientation display screen 35 will have the coordinates (863, 1279). A
window 38 contained entirely on the fixed-orientation display screen 35, as illustrated in FIG. 6a, has a top left corner 36 with the coordinates (100,800) and a lower right corner 37 with the coordinates (700, 1100).
When the display screen 34 is flipped, the coordinate system changes. Referring now to FIG. 6b, the portrait display screen 34 of FIG. 6a is illustrated as flipped to a landscape-oriented display screen 41. The origin 42 of the
landscape-oriented display screen 41 retains the coordinates (0,0), but the bottom-rightmost corner 44 of the landscape-oriented display screen 41 now has the coordinates (639, 863). The top-rightmost pixel 43 of the fixed-orientation display screen 35
now has the coordinates (0,864), and the bottom-rightmost pixel 45 of display screen 35 now has the coordinates (863, 1503). The coordinates of the top-leftmost corner 39 and bottom-rightmost 40 corner of the window 38 in the fixed portrait-oriented
display screen 35 become (100, 1024) and (700, 1324), respectively. The local coordinate system of the fixed-orientation display screen 35 thus changes as a result of flipping the portrait-oriented display screen 34 to a landscape-oriented display
screen 41. In the preferred embodiment, the coordinates of a window 38 controlled by a fixed-orientation display screen 35 are adjusted so that the location of the window 38 relative to the top-leftmost pixel 43 of the fixed-orientation display screen
35 remains unchanged after the other display screen 34 is flipped.
FIGS. 7 through 10 illustrate how windows may be enlarged via "zooming" in accordance with the present invention. In FIG. 7, the portrait-oriented display screen 1 completely contains a window 51, and also contains a title bar 12 and icons 13.
FIG. 8 shows the window 51 of FIG. 7 enlarged via conventional zoom processing available in the prior art. The zoomed window 52 in FIG. 8 is illustrated as enlarged to fill the screen as completely as possible without covering the menu bar 12 or the
icons 13. FIG. 9 shows the result of flipping the portrait-oriented display screen 1 of FIG. 8 to a landscape-oriented display screen 2. The vertical dimension of the window 52 in FIG. 8 is reduced in the window 53 of the landscape-oriented display
screen 2 of FIG. 9 in order that the entire window 53 remains on the landscape-oriented display screen 2 of FIG. 9. The icons 13 are also moved so that they fit in the rightmost area of the landscape-oriented display screen 2 of FIG. 9. Conventional
zoom processing of the window 52 in FIG. 8 thus does not result in sufficient expansion of the window 53 to fill the screen after the screen has been flipped to a landscape-oriented display screen 2, as illustrated in FIG. 9. In order to enlarge the
window 53 to completely fill the landscape-oriented display screen 2 of FIG. 9, second conventional zoom processing must be used to expand the window 54, as illustrated in FIG. 10. The window 54 is thus enlarged with a different form factor of height
and width to substantially fill the screen as completely as possible without covering the menu bar 12 or the icons 13.
In accordance with the Preferred embodiment of the present invention, a window may be automatically zoom processed when the display screen is flipped. FIG. 10 is illustrative of the result obtained when the display screen of FIG. 8 is flipped
from portrait to landscape orientation, and the window 52 is automatically zoom processed. In accordance with the present invention, automatic zoom processing maintains the same relative spacing between the edges of windows and the corresponding edges
of display screens so that the menu bar 12 and icons 13 remain accessible. Conventional data processing may be used (e.g., "Cleanup Desktop" program available from Apple Computer, Inc.) to move the icons 13 in response to a flip between orientations of
the display screen. Some windows, particularly windows known as "dialog boxes," are not capable of being resized by conventional window processing, and are not resized in accordance with the present invention following a flip between display screen
orientations.
Referring now to FIG. 11, there is shown a display of a control panel 66 which enables a user to disable certain features provided in accordance with the present invention. The image of a control panel switch 61 on this display 66 indicates that
the window positioning feature is enabled. Another image of a control panel switch 62 on this display 66 indicates that the window resizing feature is enabled. A third image of a control panel switch 63 on this display 66 indicates that the finder
cleanup feature, which relocates icons, is enabled. The image of a control 64 on this display 66 indicates adjustment of the display after the screen flip to account for any minor irregularities. Another image of a switch 65 is provided on this display
66 which indicates that all of the flip features are enabled. A user may alter any of the switch images 61 through 65 using conventional window-and-button technology by positioning a display cursor (not shown) over the desired switch position and
clicking a button on the mouse of the computer system (not shown).
Referring now to FIGS. 11(a) and 11(b), more detail is shown regarding the image of the window resizing control panel switch 62. The image of this control panel switch 62 indicates two functions. The first function, already described, is to
allow the window resizing feature to be disabled. The second function is to allow the auto-rezoom feature, in accordance with the present invention, to be disabled. When a user points to, and selects, the icon 90 of FIG. 11(a) with the mouse, using
conventional window-and-button technology, the icon 90 changes to the icon 91 of FIG. 11(b), indicating that the auto-rezoom feature has been disabled.
It is not feasible to reposition the windows provided with some conventional computer programs. FIG. 12 illustrates a control panel window that indicates to a user ways in which to customize specific windows of specific computer programs.
The preferred embodiment of the invention makes use of a number of prior art routines to move and resize windows. FIG. 13(a) illustrates these routines. In order for the invention to move or resize a window, certain information must be saved
for each window which is currently in use. The prior art routine NewWindow 104 implements the allocation and initialization of the required additional information. When a window is closed, the additional information is no longer needed. The prior art
routine CloseWindow 107 is used to de-allocate the storage allocated by NewWindow. The prior art routine GetNextEvent 102 is used to coordinate the flip-related actions such as flip detection, window movement and window resizing, with the operating
system of the computer.
In accordance with the invention, when a flip is detected, a list of existing windows is created. During software calls to the GetNextEvent routine 102, the prior art routines GetMouse 115 and Button 116 are used to simulate manual manipulation
of the mouse. The prior art routine ShowHide 109 is used to move and resize existing windows that are presently hidden from the user's view by a current application program.
Prior art routines Dragwindow 108, GrowWindow 110 and ZoomWindow 112 are used after a flip in accordance with the present invention to correct the limits of a prior art constant called "screenBits.bounds" which sets corresponding parameters for
window dragging, sizing and zooming. Some application programs employ prior art routines such as SizeWindow 111 instead of Zoomwindow 112. The prior art routines TrackBox 114 and SizeWindow 111 are used with such application programs.
The prior art routines InitGraf 103 and InitWindows 105 are used in accordance with the present invention to determine the amount of memory in an internal display buffer required to be allocated for an application program, where an application
supports such a buffer, to allow the application to properly present a display in either portrait or landscape orientation. Application programs sometimes allocate such a buffer, based on the "screenBits.bounds" constant, in order to speed up data
presentation and refresh.
The prior art routine MenuSelect 113 is used in accordance with the present invention to reposition the icons in the conventional icon-based user interface typically used with the invention. Similarly, the prior art routine TextBox 117 is used
to reposition menu bar application names when initiating such applications after a flip.
The prior art routines InitZone 118, GetNextEvent 102 and SelectWindow 106 are used in accordance with the present invention to allow processing of multiple application program windows which may be active in a "MultiFinder" environment typically
found in computers used with the invention. In the MultiFinder environment, there may be several application programs running without their windows being directly accessible ("background applications"). Typically the MultiFinder environment only allows
a single set of windows, those of the "foreground application", to be resized. In accordance with the present invention, a table of active application programs is maintained, and window resizing is accomplished whenever an application is selected to
become the foreground application. The prior art routine InitGraf 103 is employed to prevent the removal of software "patches" made in accordance with the present invention when a new application is initiated in the "MultiFinder" environment.
The prior art routine SlotManager 101 is used in accordance with the present invention to allow the definition of multiple video devices for versions of the operating system of the computer which would otherwise only allow one video device, and
therefore one orientation, per hardware slot. In accordance with the present invention, each possible display orientation is considered a separate device, and therefore it is essential that multiple devices be permitted.
Miscellaneous support software routines 119 are provided in accordance with the preferred embodiment. These routines 119 are illustrated in detail in FIG. 13(b) and their corresponding flow diagrams are given in FIGS. 32 through 41.
Referring now to FIG. 13(b), the routine Check/Handle Flipped Dolphin (abbreviated "FlipOut") 3201 is the main routine for detecting when a flip is made and altering the windows accordingly.
The routine Compute New Window Position (abbreviated "PositionWindow") 3301 calculates and modifies the bounding parameters of a window responsive to a display screen flip.
The routine Check Resize List 3401 builds and processes the list of windows which need to be resized responsive to a display screen flip.
The routine Resize Window 3501 generates phantom mouse clicks as required to resize a window responsive to a display screen flip.
The routine Compute Resize Amount (abbreviated "CalcWindResize") 3601 calculates the amount by which a window must be resized responsive to a display screen flip in order for the window to remain acce | | |