Data processing systems, such as general purpose computers, often employ tabs in a window to allow switching among multiple presentations using the same window for graphical user interface on the screen of a display device. Typically, tabs are designed to take up only a small portion of display real estate in a window. As a result, each tab is usually identified via a text label with small font size. To further save display space for a window, multiple tabs are commonly presented overlapping with each other.
However, tabs are usually labeled in small size fonts. It may not be user friendly to identify a tab by a small text label. This is especially true when the number of tabs is large and the tabs appear crowded. Worse yet, as the tabs are displayed overlapping with each other, additional user actions to reveal hidden tabs may be required for tab identification.
Therefore, traditional representation of tabs can create confusion and clutter when switching presentations in a window for a graphical user interface.
An embodiment of the present invention can include methods and apparatuses that generate a thumbnail image for each tab in a window based on a snapshot of the window providing an interface for a presentation corresponding to the tab. In one embodiment, an expanded tab bar may be displayed to replace the tab bar inside the window. One or more thumbnail images may be displayed in the expanded tab bar. The thumbnail images may be morphed or displayed (e.g. in response to a command received while the expanded tab bar is displayed) from the expanded tab bar into snapshot images arranged in a two dimensional grid over an area covering at least a center portion of the window. A user interface operation may be detected on a particular snapshot image to update the window for providing interface for a particular presentation corresponding to the particular snapshot image.
In another embodiment, snapshot images may be generated to present tabs in a tab bar of a window. Each snapshot image for a tab may indicate the window providing interface for a separate presentation corresponding to the tab. An area covering an center portion of the window on a display screen may be determined for the snapshot images. In one embodiment, the area may be constrained according to a minimal visible image size and an available area on the display screen surrounding the window. The snapshot images may be displayed for a user to identify the separate presentations over the area arranged in a two dimensional grid encompassed by the surrounding area of the window.
In yet another embodiment for switching presentations for a window, a plurality of tabs may be presented in a tab bar of the window. Each tab may correspond to one of the presentations. A dragging operation on the tabs may be detected to present a plurality of thumbnails on top of the window in a display screen. Each thumbnail may correspond to one of the tabs. When a clicking operation or other selection operation on a particular thumbnail is detected, the window may be updated to provide an interface for a particular task or presentation corresponding to the particular thumbnail.
In certain embodiments of the present invention, multiple modes may be provided for presenting tabs with images which are rich in visual information to improve tab navigation. Each mode can correspond to an alternative way to present tabs. In a drop down mode, tabs can be dropped down into thumbnail like images arranged as a cover flow view or in other formats. In an exposé mode, a tab bar including tabs aligned along a single dimension can be exploded into a two dimensional grid of images in thumbnail view. An area including significant amount of extra screen real estate in addition to a target window with tabs can be utilized to enhance presentations of the tabs as thumbnail like images without losing a solid connection to the target window. Smooth transitions between tabs presented in different modes can be provided via animation while reinforcing the correspondence between thumbnail like images and the tabs. Additionally, a tab can be dragged around as a mini-window image before turning into a window.
Other features and embodiments are described further below. It will be understood that the present invention may be implemented in a variety of data processing systems, such as general purpose computers, handheld computers, embedded systems, cellular telephones, and other consumer electronic devices. It will also be understood that the present invention may be implemented in software which is stored on a computer readable medium which will cause a data processing system to perform one or more of the methods described herein.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements and in which:
The subject invention will be described with reference to numerous details set forth below, and the accompanying drawings will illustrate the invention. The following description and drawings are illustrative of the invention and are not to be construed as limiting the invention. Numerous specific details are described to provide a thorough understanding of the present invention. However, in certain instances, well known or conventional details are not described in order to not unnecessarily obscure the present invention in detail.
The present description includes material protected by copyrights, such as illustrations of graphical user interface images. The owners of the copyrights, including the assignee of the present invention, hereby reserve their rights, including copyright, in these materials. 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 file or records, but otherwise reserves all copyrights whatsoever. Copyright Apple Inc. 2009.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.
The processes depicted in the figures that follow, are performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, etc.), software (such as is run on a general-purpose computer system or a dedicated machine), or a combination of both. Although the processes are described below in terms of some sequential operations, it should be appreciated that some of the operations described may be performed in different order. Moreover, some operations may be performed in parallel rather than sequentially.
The present invention will be described relative to the Macintosh Operating System (OS). It will be understood that one or more embodiments described herein may also be employed in other operating systems or in other software products, such as the Windows operating system or a mobile device operating system (e.g. an operating system for a smart phone or other cellular telephone.)
In one embodiment, tabs may be presented with visually rich images such as thumbnails to facilitate tab switching for a window. A thumbnail representing a tab may be generated from a snapshot of the window which provides interface for a presentation associated with the tab. A user can drag on the bottom edge of a tab bar including tabs in a default view (or presented in a traditional manner) to expand the tab bar for displaying thumbnail like images for the tabs arranged in a horizontal flow, similar to, for example an Apple TV-style cover flow. A user can drag an expanded tab bar (e.g. in expanded view) back into a collapsed view or a default view. A tab bar may be collapsed by default. A user can also expand a default tab bar by dragging on a draggable part of the default tab bar, e.g. a dot on the left end of the tab bar.
In one embodiment, when a mouse is near a draggable area, such as the bottom edge or a left dot of a default tab bar, the cursor may change (e.g. in shape, color and/or size etc.) to indicate interactivity. As the tab bar expands, tabs may morph into thumbnail like images and the tab bar may morph into a coverflow (or an expanded tab bar) that displays front-facing thumbnail like images. The cover flow may center on a selected tab. Front-facing thumbnail like images may include visible titles for easy skimming. In one embodiment, the bottom of a default tab bar may turn into a scrollbar for navigating through the cover flow. A user can navigate an expanded tab bar by using a scrollbar, a mouse wheel, or by clicking directly on the thumbnail like images. Using the scrollbar or the mouse wheel may move the thumbnail like images without changing the current tab selection.
In one embodiment, a thumbnail like image or a thumbnail tab for the selected tab may include a selection background to indicate the current selection. When the thumbnail tab of the current selection scrolls off to the side, the selection background may shrink accordingly, but may still be visible for a user to click on it to center a cover flow on the selected thumbnail tab. A thumbnail tab may be displayed in a slanted manner on either side of a cover flow. When a thumbnail tab is clicked on, whether front-facing or slanted, a cover flow may center on the clicked-on thumbnail tab and select it. Existing keyboard shortcuts for going to the previous and next tabs may function in a similar way, along with corresponding animation of a cover flow. Activating a thumbnail tab, e.g. via a hot-key, may cause an area above and around the thumbnail tab to darken considerably.
In one embodiment, tab operations, such as closing, dragging, and opening tabs, may be available in an expanded or collapsed tab bar to keep the tab bar expanded. A thumbnail tab may be closed via close button appearing on mouse over. In one embodiment, a button may reside on the top right of a cover flow for opening new tabs. When clicked, the button may create and select a new tab at the end of the cover flow. The button may open a new tab according to a location where a plus button opens a new tab in the default tab mode. For example, if a new tab is opened in the middle of a tab list in the default tab mode, a new tab may be opened in the middle of a tab list for the cover flow. In one embodiment, a user can rearrange tabs by dragging a front-facing thumbnail tab to cause a cover flow to scroll accordingly either by a mouse wheel or by dragging the tab toward slanted thumbnail tabs on the left or right side of the cover flow.
At least certain embodiments of the present invention provide an ordered grid view of thumbnail like images to present tabs in a two-dimensional manner, e.g. in a tab exposé view, to support presentation switching in a window, such as a Safari® window for a browser application. In one embodiment, a thumbnail like image may include a text label, e.g. contained in a small semi-transparent pill at the bottom of the image. Visually, the window and a surrounding area may be significantly darkened in the tab exposé view. Thumbnail like images may be displayed on top of the darkened area to represent all of the window's tabs. The darkened area may include extra screen real estate in addition to the area of the window. Actual amount of the extra screen real estate may be adjusted automatically based on the screen size, the number of tabs in the tab expose, and/or available screen real estate.
A simple mapping between a two-dimensional grid in a tab exposé and a one-dimensional tab bar may be animated to reveal an ordered transition. In one embodiment, a selected tab or thumbnail tab (e.g. a rectangular snapshot) may zoom up to fill content area of a window while the rest of a tab exposé view or grid view may either animate back into place or fade away. A tab exposé may be activated via a menu-item, e.g. “Show All Tabs”, in a window menu associated with a hot-key, e.g. Command+Shift+T. Other activation mechanisms may be possible including, for example, mouse or trackpad gestures, a dedicated mouse button, screen hot corners, or a button in a tab bar. Typically, a tab exposé may not take over the entire screen. System windows, such as a Finder window for object search, may remain mostly unobscured during tabs operation. A system window may immediately dismiss a tab exposé when activated (e.g. clicked on). In one embodiment, if a window is in a full screen mode or a maximized mode, a corresponding tab exposé may take over the full screen.
A tab exposé in a grid may appear in a quick animation starting with the first thumbnail in the top-left part of the grid, and proceeding in a left-to-right order, wrapping from the end of one line to the beginning of the next. The timing of the animations may be such that the entire animation for all the tabs be complete in a certain amount of time, which may vary depending on the total number of tabs present, up to a maximum amount of time. The first item, e.g. top left item, in the grid may represent the first item, e.g. leftmost item, in the tab bar. Subsequent tabs may be ordered, e.g. left-to-right, wrapping as needed. The last item, e.g. bottom right item, in the grid may represent the last item, e.g. rightmost item, in the tab bar. A mouse hovering over a thumbnail like image may cause a thumbnail like image to be highlighted (e.g. selected), which may be represented by a noticeable glow or outline around the image. Arrow keys can also be used to change selection. Once a thumbnail like image is chosen, either by a mouse click or the keyboard, another quick animation may occur to duplicate a corresponding window.
In one embodiment, dragging a thumbnail tab or thumbnail like image out from a cover flow or a tab exposé may cause a similar behavior as in dragging a tab out of a collapsed tab bar. For example, a thumbnail tab may morph into a window preview, which may be a mini window based on a snapshot of a window performing a presentation corresponding to the thumbnail tab. Dropping a dragged-out tab, e.g. represented by a mini window, may cause a new window to be created outside of an original window for the tab.
According to one embodiment, tabs may be presented in different modes, e.g. a regular mode, a drop down mode or an exposé mode for ease of rearranging the tabs. For example, a two dimensional grid in an exposé mode may allow two dimensional movements for tabs to change relative positions or change a two dimensional order among the tabs within the grid, such as based on a modifier key and/or a drag and drop operations via a mouse. In one embodiment, changes of relative positions or order among tabs in one mode, e.g. an exposé mode, may be synchronized automatically to other modes, e.g. causing an reorder of the tabs in a regular mode and/or an expanded mode.
The plurality of presentations associated with window 101 may be performed by different applications or a single application running in the data processing system coupled to the display device. For example, a browser application associated with a window may open several documents, each document opened may correspond to a separate presentation for the window. In another embodiment, multiple instances of a terminal emulation application may use a single window to interface with a user. Each instance of the terminal emulation application may be a separate presentation for the window.
In one embodiment, window 101 can include a tab bar 103 having tabs for switching among separate presentations corresponding to the tabs in the tab bar. In one embodiment, a tab can include a label, e.g. a text or a title, indicating the corresponding presentation, such as “label1” in tab 111. A tab may be a user interface control allowing a system to detect user interface actions, such as clicking, selecting, dragging and/or dropping, for example, via an input device such as a mouse guided by a cursor hovering over the tab on a display screen. When clicked, a tab can cause window 101 to provide interface functions, for example, in workspaces 107, 109, for a presentation corresponding the tab clicked (or selected) as the current presentation. In some embodiments, a tab in a tab bar may be highlighted or marked to indicate a currently selected presentation for a window, such as tab 115 for current presentation “label3” using window 101.
Tab bar 103 may include other user interface controls such as top and bottom edges 105 and dot 119 which can be moved by dragging. In some embodiments, a tab bar may automatically add a scrollbar to scroll tabs along the tab bar if there is not enough space available on the tab bar to display all the tabs. The tab bar may include other indicators, such as “>>”, “>”, “<<”, “<”, etc., to indicate existence of additional tabs in the tab bar. In some embodiments, a list of all the tabs may be displayed in a menu style when “>>” is clicked. In one embodiment, tabs in the tab bar may be displayed in an array having an order, e.g. from left to right according to time of creation. A user may drag and drop a tab from/to a tab bar for rearranging the order of the tabs in the tab bar. When a tab in a tab bar is clicked or selected to switch a window to a presentation associated with the tab, tabs in the tab bar may be repositioned to indicate the selection of the presentation, e.g. shifted left or right to place the selected tab in the middle portion of the tab bar. In one embodiment, the last tab (e.g. containing an indicator “>>”) may be pushed off into a menu (e.g. a cover flow menu), and a selected tab may appear in its place (e.g. also containing the indicator “>>”). Button 121 in tab bar 103 may allow new tabs to be created and opened. A close button may appear when a mouse hovering over a tab to allow closing the tab.
In one embodiment, a tab in an expanded view may be presented as a thumbnail tab including a thumbnail generated from a snapshot image of a corresponding presentation using a window. The snapshot image may represent a live view of the window providing interface functions for the presentation when the thumbnail is generated. For example, a snapshot image may be taken from a live view of a browser navigating to a document located via an URL (Universal Resource Locator). In one embodiment, a thumbnail may include a snapshot image reduced in size, such as according to a dimension (width or height) of a tab bar in an expanded view.
In one embodiment, thumbnails for all tabs in a tab bar may be generated regardless whether there is enough real estate inside an expanded tab bar to display each thumbnail tab front-facing without overlapping with each other. One or more thumbnail tabs may be displayed in a slanted manner to indicate existence of additional tabs in a tab bar. A thumbnail tab may be highlighted or marked with selection background as currently selected thumbnail tab, such as tab 215 corresponding to tab 115 of
In one embodiment, a dragging operation can be detected via edges 105 or dot 119 to expand tab bar 103 of
In one embodiment, tab bar 203 in an expanded view (or an expanded tab bar) may allow scrolling via a scrollbar, direct scrolling (e.g. dragging a front-facing tab), and/or a mouse wheel. Navigating tab bar 203 using a scrollbar or a mouse wheel may move tabs in the tab bar without changing tab selection, thus maintaining the current presentation in window 101. When a selected tab marked with selection background scrolls off to the side, in one embodiment, the selection background may shrink accordingly, but still be visible to allow clicking on the selected tab. In one embodiment, when a thumbnail tab is clicked, regardless whether it is displayed front facing or slanted in the cover flow of tabs in a tab bar, the cover flow may automatically scroll (e.g. with animated horizontal shifting) the tabs to center the thumbnail tab clicked-on and mark it as selected.
In one embodiment, tab exposé mode can display tabs as snapshot images over a display area larger than a tab bar in a window for easier tab identification and more efficient tab navigation to switch presentations in the window. The display area may be allocated based on the window plus an extra amount of screen real estate without taking over the entire screen. For example, all tabs in window 101 may be presented as snapshot images 301, 303 . . . 321 over display area 323 covering window 101. The extra amount of screen real estate used in addition to the window in the tab exposé mode may be dynamically determined considering, for example, the entire screen size, the window size, and/or the number of tabs opened in a system, etc. Other factors may apply. In one embodiment, the exposé mode may significantly darken the window and a surrounding area in the display area to display the snapshot images for the tabs over the darkened area, e.g. area 323. Portions of the display screen other than the display area may remain obscured to allow activation of other applications, e.g. a system finder, and to dismiss the exposé mode.
Snapshot images 301, 303 . . . 321 may be arranged in an ordered grid view, for example, according to an order of tabs in tab bar 103. The top left item 301 in the grid may represent the leftmost tab in tab bar 103. Subsequent tabs in tab bar 103 may be ordered left to right and top to bottom, wrapped as needed, within display area 323. Snapshot images 307, 309 . . . 313 in the grid may correspond to tabs 111, 113 . . . 117 in tab bar 103. For example, snapshot image 307 may be an image resized (or of the same size) from thumbnail image 211. The bottom right item 321 may represent the rightmost tab in tab bar 103. Other arrangements of items in a grid, such as left right, left aligned, right aligned, etc are possible.
Similar to a thumbnail tab, each snapshot image of a window may be a simple rectangular image including a snapshot (reduced in size) of a corresponding live presentation using the window. The snapshot image may include a semi-transparent pill displaying a text label beneath the snapshot, e.g. label “label1” in item 307. A snapshot image in a grid may include the same label as displayed in a corresponding tab in a tab bar, e.g. as shown in item 307 and tab 111. A snapshot image may be based on a corresponding thumbnail tab resized from an expanded tab bar (e.g. cover flow).
In one embodiment, animation may be activated, e.g. via an option setting for the window, to transition presentation of tabs in a tab bar of window between different modes, such as a compressed mode, a pull down mode or an exposé mode. When animation is activated, presenting tabs in an exposé mode may appear in a quick animation. The animation may ease transitions between different modes and reinforce that snapshot images that appear represent the tabs. An animation to present tabs as snapshot images in an exposé mode may include, for example (e.g. starting substantially simultaneously):
In one embodiment, a cursor hovering over a snapshot image in an exposé mode may identify the snapshot image for selection. A special key, such as arrow key, in a keyboard may allow a user to select different snapshot images for selection. An identified snapshot image may be represented by a noticeable glow or outline around the snapshot image. In one embodiment, an identified snapshot image may be selected, for example, via a mouse click or a keyboard press. Once a snapshot image for a window is selected from a grid in an exposé mode, the selected snapshot image may zoom up to fill content area of the window, such as areas 109, 107 of window 101, while the rest of the grid may animate back into place in a tab bar (e.g. as tabs in a default tab bar or thumbnail images in an expanded tab bar) of the window or simply fade away. In the meanwhile, the darkened area in the exposé mode may light back up, e.g. in an animated fashion, for a pull down mode or a compressed mode. One snapshot image may be highlighted or marked as selected in the tab bar in the pull down or compressed mode. The animation may include scrolling the tab bar to center the selected snapshot image. In one embodiment, animating snapshot images in a grid back to a tab bar may indicate an order to arrange the tabs in the tab bar.
In some embodiments, if a tab is dragged out of a tab bar in a window to a location outside of the window on a display screen, the tab may be morphed into a window preview, such as a resized snapshot of a live interface to a corresponding presentation using the window. Dragging out a thumbnail tab from a cover flow or an expanded tab bar may behave the same as or similar to dragging out a tab from a collapsed tab bar. The window preview may track the location, for example, according to the movement of a cursor via a mouse. In one embodiment, when a tab is dropped at a destination location, e.g. via releasing a mouse button while the cursor is pointed at the destination location, a window preview may grow into a new window (e.g. including content of the window preview) at the destination location to provide interface for a presentation corresponding to the tab. An animation may indicate the tab morphing from the tab bar into the new window while the original window, from which the tab is dragged, is being updated, for example, including removing the tab from the tab bar and/or selecting the next tab in order in the tab bar.
A window, such as window 101 of
Tab management module 509 may include a sizing and placement engine which could determine the size for an image updated from a snapshot generated for a presentation. For example, the image may appear as a thumbnail tab in an expanded tab bar, such as tab 211 of
The processing logic of process 600 can generate a snapshot or retrieve a previously stored snapshot from a window which provides user interface functions for a presentation. Each generated snapshot may be a live or near live snapshot of a presentation using the window. A near live snapshot may be a previously stored snapshot having a time stamp within a certain age, e.g. from the time when a dragging operation is detected. A thumbnail may be an image resized from a snapshot. For example, the processing logic of process 600 may resize a snapshot for a thumbnail tab according to a dimension of an expanded tab bar to present a tab in a cover flow, such as tab bar 207 of
At block 603, the processing logic of process 600 can expand a collapsed tab bar to display thumbnail tabs as an expanded tab bar. A thumbnail tab may include a generated thumbnail and a text label, such as tab 211 of
In one embodiment, at block 605, the processing logic of process 600 may detect (or receive) a clicking operation on a thumbnail tab of an expanded tab bar, for example, via mouse or keyboard actions while a cursor hovering over the thumbnail tab. In response, the processing logic of process 600 can update the window to provide interface functions for a presentation corresponding to the thumbnail tab clicked. For example, a particular thumbnail tab clicked may correspond to a document for a browser application using the window. The processing logic of process 600 can highlight the thumbnail tab clicked on to indicate a currently selected tab, such as tab 215 of
At block 607, according to one embodiment, the processing logic of process can detect a user interface operation to collapse an expanded tab bar, such as tab bar 207 of
The processing logic of process 700 may determine the display area according to a plurality of constraints, such as a minimal visible image size, the number of tabs (each corresponding to a snapshot image), an available area surrounding the window on the display screen, and/or other sizing constraints. The constraints may allow each snapshot image to be displayed in a maximum snapshot image size if the window is of a size larger than a maximal size determined by the maximum snapshot image size and the total number of tabs in the tab bar. For example, the maximal size may be obtained as (the maximum snapshot image size+spacing parameter)*the total number of tabs. The display area may be encompassed by the available area.
In one embodiment, the minimal visible image size may be preset depending on screen resolution of the display screen. An available area surrounding a window may be dynamically determined according to the dimension and location of the window. For example, the larger the portion of the screen the window occupies, the less the area surrounding the window may be available. Some regions of the display screen may not be available for the display area. For example, system windows providing system application, such as file folder, document finder, job control, etc. may be prohibited from being obstructed by the display area for an exposé mode. In one embodiment, a single size may be selected for all the snapshot images for the tabs. The processing logic of process 700 may assign a maximal size as one of the constraints for displaying the snapshot images.
At block 707, the processing logic of process 700 may determine display locations for snapshot images in a display area, such as area 323 of
In one embodiment, at block 709, the processing logic of process 700 can generate animation effects to morph tabs from a tab bar (e.g. thumbnail images from an expanded tab) in a window to snapshot images displayed in a display area on top of the window. The processing logic of process 700 may darken the window and a surrounding area, such an area substantially correspond to area 323 of
At block 711, according to one embodiment, the processing logic of process 700 may detect a clicking operation on a snapshot image displayed in an exposé mode on top of a darkened window, such as snapshot image 307 on top of window 101 of
At block 803, the processing logic of process 800 may detect a release operation, e.g. based on a mouse button release signal during a dragging operation of a tab from a window, at the destination location while presenting a preview image for a presentation corresponding to the tab near or at the destination location. In response, the processing logic of process 800 can generate a new window, e.g. window 403 of
At block 805, the processing logic of process 800 may update the source window to remove the tab from a tab bar, such as tab bar 103 of
Turning now to
Turning now to
As shown in
The mass storage 1211 is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or a flash memory or other types of memory systems which maintain data (e.g. large amounts of data) even after power is removed from the system. Typically, the mass storage 1211 will also be a random access memory although this is not required. While
Portions of what was described above may be implemented with logic circuitry such as a dedicated logic circuit or with a microcontroller or other form of processing core that executes program code instructions. Thus processes taught by the discussion above may be performed with program code such as machine-executable instructions that cause a machine that executes these instructions to perform certain functions. In this context, a “machine” may be a machine that converts intermediate form (or “abstract”) instructions into processor specific instructions (e.g., an abstract execution environment such as a “virtual machine” (e.g., a Java Virtual Machine), an interpreter, a Common Language Runtime, a high-level language virtual machine, etc.), and/or, electronic circuitry disposed on a semiconductor chip (e.g., “logic circuitry” implemented with transistors) designed to execute instructions such as a general-purpose processor and/or a special-purpose processor. Processes taught by the discussion above may also be performed by (in the alternative to a machine or in combination with a machine) electronic circuitry designed to perform the processes (or a portion thereof) without the execution of program code.
An article of manufacture may be used to store program code. An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions. Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).
The preceding detailed descriptions are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the tools used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be kept in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present invention also relates to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the required purpose, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), RAMs, EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the operations described. The required structure for a variety of these systems will be evident from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
The foregoing discussion merely describes some exemplary embodiments of the present invention. One skilled in the art will readily recognize from such discussion, the accompanying drawings and the claims that various modifications can be made without departing from the spirit and scope of the invention.
The present application is related to U.S. patent applications Ser. No. 12/549,338 filed on Aug. 27, 2009, now pending, Ser. No. 11/760,759, filed on Jun. 9, 2007, which has been published on Dec. 11, 2008, publication No. US2008/0807343 A1, now pending, the disclosures of which are hereby incorporated herein by reference in their entirety.