A technique for manipulating the layering order of graphical objects in a digital canvas or document is disclosed. A graphics object that is included in a layer in the digital canvas or document is selected. The digital canvas or document is searched in order to define a subset of graphics objects that includes the selected graphics object and any other graphics objects that overlap with the selected graphics object. A layering-order control enables a user to move the layer associated with the selected graphics object to a depth in the digital canvas or document that includes a layer associated with one of the other graphics objects in the subset of graphics objects. The concurrent re-positioning of multiple layers associated with two or more selected graphics objects is also disclosed.
|
1. A computer-implemented method for manipulating a layering order of graphics objects in a digital canvas or document comprised of a plurality of layers, the method comprising:
defining a subset of the graphics objects in the digital canvas or document that includes a first graphics object associated with a first layer located at a first depth in the digital canvas or document and any other graphics object in the digital canvas or document that overlaps with the first graphics object; and
in response to a reordering command specifying a second layer that is located at a second depth in the digital canvas or document and is associated with at least one other graphics object in the subset, moving: (i) the first layer to the second depth in the digital canvas or document, (ii) each layer that includes a graphics object in the subset and that is located at a respective depth within an inclusive range defined by the first depth and the second depth towards the first depth to a next closest location in depth at which another layer that includes a graphics object in the subset is located, and (iii) the second layer towards the first depth to a next location in depth at which another layer that includes a graphics object in the subset is located, wherein the reordering command does not move a third layer that includes a graphics object that is not in the subset and is located at a depth between the first depth and the second depth, wherein the reordering command is generated responsive to changing a position of a selectable layering-order control from a first position to a second position, of a plurality of positions of the selectable layering-order control.
14. A system for manipulating a layering order of graphics objects in a digital canvas or document comprised of a plurality of layers, the system comprising:
a memory; and
a processor coupled to the memory, wherein the processor is configured to:
define a subset of the graphics objects in the digital canvas or document that includes a first graphics object associated with a first layer located at a first depth in the digital canvas or document and any other graphics object in the digital canvas or document that overlaps with the first graphics object, and
in response to a reordering command specifying a second layer that is located at a second depth in the digital canvas or document and is associated with at least one other graphics object in the subset, move: (i) the first layer to the second depth in the digital canvas or document, (ii) each layer that includes a graphics object in the subset and that is located at a respective depth within an inclusive range defined by the first depth and the second depth towards the first depth to a next closest location in depth at which another layer that includes a graphics object in the subset is located, and (iii) the second layer towards the first depth to a next location in depth at which another layer that includes a graphics object in the subset is located, wherein the reordering command does not move a third layer that includes a graphics object that is not in the subset and is located at a depth between the first depth and the second depth, wherein the reordering command is generated responsive to changing a position of a selectable layering-order control from a first position to a second position, of a plurality of positions of the selectable layering-order control.
8. A non-transitory computer readable storage medium, storing instructions that when executed by a processor, cause the processor to manipulate a layering order of graphics objects in a digital canvas or document comprised of a plurality of layers, by performing the steps of:
defining a subset of the graphics objects in the digital canvas or document that includes a first graphics object associated with a first layer located at a first depth in the digital canvas or document and any other graphics object in the digital canvas or document that overlaps with the first graphics object; and
in response to a reordering command specifying a second layer that is located at a second depth in the digital canvas or document and is associated with at least one other graphics object in the subset, moving: (i) the first layer to the second depth in the digital canvas or document, (ii) each layer that includes a graphics object in the subset and that is located at a respective depth within an inclusive range defined by the first depth and the second depth towards the first depth to a next closest location in depth at which another layer that includes a graphics object in the subset is located, and (iii) the second layer towards the first depth to a next location in depth at which another layer that includes a graphics object in the subset is located, wherein the reordering command does not move a third layer that includes a graphics object that is not in the subset and is located at a depth between the first depth and the second depth, wherein the reordering command is generated responsive to changing a position of a selectable layering-order control from a first position to a second position, of a plurality of positions of the selectable layering-order control.
2. The method of
3. The method of
updating a stacking-order indicator to reflect a relative layering order of the plurality of layers in the digital canvas or document, wherein the stacking-order indicator is configured to depict the second layer at the first depth, wherein one or more layer icons in the stacking-order indicator are color coordinated to visually distinguish between the plurality of layers.
4. The method of
5. The method of
6. The method of
responsive to the reordering command, updating each position of the selectable layering-order control to correspond to the relative layering order of each of the plurality of layers in the digital canvas or document.
7. The method of
9. The computer readable storage medium of
10. The computer readable storage medium of
11. The computer readable storage medium of
12. The computer readable storage medium of
13. The computer readable storage medium of
15. The system of
16. The system of
|
1. Field of the Invention
The invention relates generally to graphics rendering and, more specifically, to a system and method for intuitive manipulation of the layering order of graphics objects.
2. Description of the Related Art
In conventional two-dimensional computer graphics, layered modeling produces a target image by painting overlapping layers on a digital canvas or document in the order of decreasing depth. Many applications employ layered modeling techniques to render graphics objects in a digital canvas or document. For example, Microsoft Powerpoint and Adobe Photoshop both employ layers to allow users to create and manipulate graphics objects.
With these applications, a user typically changes the layering order of graphics objects by adjusting the absolute depth of the layer containing the graphics object the user wants to reorder. One approach used for adjusting the absolute depth of layers requires a user to first select a graphics object and then use a menu to change the depth of the layer associated with the graphics object. For example, a user of Powerpoint or other Microsoft Office applications must first select the graphics object and then use a textual list that is part of the right-click menu to change the absolute depth of the layer associated with the selected graphics object. The textual list of commands includes commands that change the absolute depth of the layer by one position, such as Bring Forward and Send Backward, as well as commands that move the layer to the absolute top or bottom of all layers in the document, such as Bring to Front and Send to Back.
Another approach used for adjusting the absolute depth of layers requires a user to change the absolute depth of a layer by dragging a layer up or down in a layer palette tool. For example, Photoshop and the GNU Image Manipulation Program (GIMP) employ a layer palette tool for manipulating the absolute depth of layers in composite images. The layer palette tool displays graphical thumbnails that represent each of the individual layers in the canvas. The user changes the absolute depth of a layer by dragging the thumbnail representing the selected layer above or below the layer immediately adjacent to the selected layer.
One drawback to these approaches is that when two overlapping graphics objects are associated with different layers that have a large disparity in the absolute depth of the digital canvas or document, the user may be required to repeat a command multiple times before the two graphics objects switch relative positions in the layering order. For example, a user may have to select the Bring Forward command five times in order to move a layer up five positions in absolute depth, or a user may have to drag a layer up five positions in the user palette tool to move the layer up five positions in absolute depth. Furthermore, when two non-overlapping graphics objects switch relative position in the layering order, the rendered display of the digital canvas or document remains the same. Therefore, the user may be confused as to whether any layers have actually changed position in the absolute depth in the digital canvas or document.
As the foregoing illustrates, what is needed in the art is an improved approach for manipulating the layering order of graphics objects in a digital canvas or document.
One embodiment of the present invention sets forth a computer-implemented method for manipulating a layering order of graphics objects in a digital canvas or document comprised of a plurality of layers, where each layer is located at a different depth in the digital canvas or document. The method includes the steps of defining a subset of the graphics objects in the digital canvas or document that includes a first graphics object associated with a first layer located at a first depth in the digital canvas or document and any other graphics object in the digital canvas or document that overlaps with the first graphics object, and, in response to a reordering command that specifies a second layer located at a second depth in the digital canvas or document and is associated with at least one other graphics object in the subset of graphics objects, moving the first layer to the second depth in the digital canvas or document.
One advantage of the above approach is that the reordering command moves the selected graphics object above or below at least one other graphics object in a defined subset of graphics objects. Thus, even if there is a large disparity in absolute depth between the selected graphics object and the other graphics object in the defined subset of graphics objects, a single reordering command moves the selected graphics object above or below the other graphics object in the digital canvas or document while simultaneously moving the selected graphics object above or below any intervening layers in the digital canvas or document. Furthermore, because every manipulation based on a reordering command results in two overlapping graphics objects changing relative positions in absolute depth in the digital canvas or document, the rendered display of the digital canvas or document is changed in response to the reordering command, thereby allowing an end-user to clearly see and understand the changes he or she is making in the digital canvas or document.
So that the manner in which the above recited features of the invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
In the following description, numerous specific details are set forth to provide a more thorough understanding of the invention. However, it will be apparent to one of skill in the art that the invention may be practiced without one or more of these specific details. In other instances, well-known features have not been described in order to avoid obscuring the invention.
As shown, system 100 includes one or more processing units, such as central processing unit (CPU) 102, and a system memory 104 communicating via a bus path that may include a memory bridge 105. CPU 102 includes one or more processing cores, and, in operation, CPU 102 is the master processor of system 100, controlling and coordinating operations of other system components. System memory 104 stores software applications and data for use by CPU 102. CPU 102 runs software applications and optionally an operating system. Memory bridge 105, which may be, e.g., a Northbridge chip, is connected via a bus or other communication path (e.g., a HyperTransport link) to an I/O (input/output) bridge 107. I/O bridge 107, which may be, e.g., a Southbridge chip, receives user input from one or more user input devices 108 (e.g., keyboard, mouse, joystick, digitizer tablets, touch pads, touch screens, still or video cameras, motion sensors, and/or microphones) and forwards the input to CPU 102 via memory bridge 105.
One or more display processors, such as display processor 112, are coupled to memory bridge 105 via a bus or other communication path (e.g., a PCI Express, Accelerated Graphics Port, or HyperTransport link); in one embodiment display processor 112 is a graphics subsystem that includes at least one graphics processing unit (GPU) and graphics memory. Graphics memory includes a display memory (e.g., a frame buffer) used for storing pixel data for each pixel of an output image. Graphics memory can be integrated in the same device as the GPU, connected as a separate device with the GPU, and/or implemented within system memory 104.
Display processor 112 periodically delivers pixels to a display device 110 (e.g., a screen or conventional CRT, plasma, OLED, SED or LCD based monitor or television). Additionally, display processor 112 may output pixels to film recorders adapted to reproduce computer generated images on photographic film. Display processor 112 can provide display device 110 with an analog or digital signal.
A system disk 114 is also connected to I/O bridge 107 and may be configured to store content and applications and data for use by CPU 102 and display processor 112. System disk 114 provides non-volatile storage for applications and data and may include fixed or removable hard disk drives, flash memory devices, and CD-ROM, DVD-ROM, Blu-ray, HD-DVD, or other magnetic, optical, or solid state storage devices.
A switch 116 provides connections between I/O bridge 107 and other components such as a network adapter 118 and various add-in cards 120 and 121. Network adapter 118 allows system 100 to communicate with other systems via an electronic communications network, and may include wired or wireless communication over local area networks and wide area networks such as the Internet.
Other components (not shown), including USB or other port connections, film recording devices, and the like, may also be connected to I/O bridge 107. For example, an audio processor may be used to generate analog or digital audio output from instructions and/or data provided by CPU 102, system memory 104, or system disk 114. Communication paths interconnecting the various components in
In one embodiment, display processor 112 incorporates circuitry optimized for graphics and video processing, including, for example, video output circuitry, and constitutes a graphics processing unit (GPU). In another embodiment, display processor 112 incorporates circuitry optimized for general purpose processing. In yet another embodiment, display processor 112 may be integrated with one or more other system elements, such as the memory bridge 105, CPU 102, and I/O bridge 107 to form a system on chip (SoC). In still further embodiments, display processor 112 is omitted and software executed by CPU 102 performs the functions of display processor 112.
Pixel data can be provided to display processor 112 directly from CPU 102. In some embodiments of the present invention, instructions and/or data representing a scene are provided to a render farm or a set of server computers, each similar to system 100, via network adapter 118 or system disk 114. The render farm generates one or more rendered images of the scene using the provided instructions and/or data. These rendered images may be stored on computer-readable media in a digital format and optionally returned to system 100 for display. Similarly, stereo image pairs processed by display processor 112 may be output to other systems for display, stored in system disk 114, or stored on computer-readable media in a digital format.
Alternatively, CPU 102 provides display processor 112 with data and/or instructions defining the desired output images, from which display processor 112 generates the pixel data of one or more output images, including characterizing and/or adjusting the offset between stereo image pairs. The data and/or instructions defining the desired output images can be stored in system memory 104 or graphics memory within display processor 112. In an embodiment, display processor 112 includes 3D rendering capabilities for generating pixel data for output images from instructions and data defining the geometry, lighting shading, texturing, motion, and/or camera parameters for a scene. Display processor 112 can further include one or more programmable execution units capable of executing shader programs, tone mapping programs, and the like.
In one embodiment, application 131 is stored in system memory 104. Application 131 may be any application that when executed on CPU 102 allows users to select and manipulate graphics objects in a document or canvas, such as Adobe Photoshop or GIMP. In alternative embodiments, application 131 may be a Web application, such as a Flash program, that is stored on a remote server and accessed through network adapter 118.
It will be appreciated that the system shown herein is illustrative and that variations and modifications are possible. The connection topology, including the number and arrangement of bridges, may be modified as desired. For instance, in some embodiments, system memory 104 may be connected to CPU 102 directly rather than through a bridge, and other devices may communicate with system memory 104 via memory bridge 105 and CPU 102. In other alternative topologies display processor 112 may be connected to I/O bridge 107 or directly to CPU 102, rather than to memory bridge 105. In still other embodiments, I/O bridge 107 and memory bridge 105 may be integrated in a single chip. In addition, the particular components shown herein are optional. For instance, any number of add-in cards or peripheral devices might be supported. In some embodiments, switch 116 is eliminated, and network adapter 118 and add-in cards 120, 121 connect directly to I/O bridge 107.
Each graphics object included in digital canvas 202 is associated with a distinct layer in digital canvas 202. For example, graphics object 210 is associated with the layer located at absolute depth 0, graphics object 214 is associated with the layer located at absolute depth 1, graphics object 211 is associated with the layer located at absolute depth 2, graphics object 212 is associated with the layer located at absolute depth 3, graphics object 215 is associated with the layer located at absolute depth 4, and graphics object 213 is associated with the layer located at absolute depth 5. In one embodiment, each layer may be associated with one or more graphics objects. In alternative embodiments, each layer may only be associated with a single graphics object. As described in further detail herein, a user may adjust the layering order of a subset of the graphics objects included in digital canvas 202 to effect changes in the positions of the graphics objects in the subset of graphics objects relative to one another independently of the other graphics objects in the digital canvas 202.
In one embodiment, graphics application environment 200 determines whether two graphics objects overlap by generating a bounding box around each of the graphics objects and then comparing the bounding boxes, such as by comparing the pixel locations of the upper left and lower right corners of the bounding boxes, to determine whether the bounding boxes intersect. In alternative embodiments, graphics application environment 200 may use rendering techniques to determine whether two graphics objects overlap. For example, by rendering each graphics object in a separate frame, graphics application environment 200 may compare the pixel locations in the separate frames in order to determine whether the graphics objects overlap. In yet other embodiments, graphics application environment 200 may determine whether two graphics objects overlap in a two-stage process. In a first stage, graphics application 200 determines if the two graphics objects overlap using the bounding box technique described above, and then, if the bounding boxes intersect, proceeds to a second stage where the graphics application environment 200 implements a pixel based technique, such as the rendering technique described above. In this manner, graphics application environment 200 limits use of the computationally expensive pixel based approach to only those graphics objects that could overlap based on an intersection of the associated bounding boxes. It will be appreciated that graphics application environment 200 may implement any technically feasible technique for determining whether two graphics objects overlap and that all such techniques are within the scope of the invention.
As also shown in
In one embodiment, stacking-order indicator 208 is a graphical depiction of the relative layering order of the subset layers in the digital canvas 202. For example, stacking-order indicator 208 includes four layer icons 208-1, 208-2, 208-3, and 208-4. Layer icon 208-1 indicates the relative position of the subset layer associated with graphics object 210, layer icon 208-2 indicates the relative position of the subset layer associated with graphics object 211, layer icon 208-3 indicates the relative position of the subset layer associated with graphics object 212, and layer icon 208-4 indicates the relative position of the subset layer associated with graphics object 213. As a user adjusts layering-order control 206, reordering the subset layers in the digital canvas 202, the layer icons in stacking-order indicator 208 also change relative position to reflect the new relative layering order of the subset layers. For example, if the subset layer associated with selected graphics object 210 is initially located at absolute depth 0, and the subset layer associated with graphics object 211 is initially located at absolute depth 1, and a user adjusts layering-order control 206, moving the subset layer associated with selected graphics object 210 to a new location at absolute depth 1, and moving the subset layer associated with graphics object 211 to a new location at absolute depth 0, then, layer icon 208-1 would move from the first position of stacking-order indicator 208 to the second position of stacking-order indicator 208. Likewise, layer icon 208-2 would move from the second position of stacking-order indicator 208 to the first position of stacking-order indicator 208. Thus, layer icon 208-1 and layer icon 208-2 would change relative positions in stacking-order indicator 208 to reflect the new relative layering order of the subset layers.
In addition, the layer icons included in stacking-order indicator 208 are color coordinated to visually distinguish between the different subset layers associated with the different graphics objects in the defined subset of graphics objects 204. For example, layer icon 208-1 is white corresponding to a color associated with the subset layer associated with selected graphics object 210. Layer icons 208-2, 208-3, and 208-4 are other different colors corresponding to the different colors associated with the different subset layers in the digital canvas 202. In alternative embodiments, layer icons 208-1, 208-2, 208-3, and 208-4 may implement other ways, such as using textual descriptions, to distinguish between the different subset layers in digital canvas 202.
As the foregoing illustrates, graphics application environment 200 provides the user with three visual cues in order to indicate the relative layering order of the subset layers in digital canvas 202. First, digital canvas 202 is displayed with selected graphics object 210 shown in context with all overlapping graphics objects. Second, the position of layering-order control 206 communicates the position of the subset layer associated with selected graphics object 210 relative to the other subset layers in the digital canvas 202. In the example of
As also shown in the example of
The three implementations described above in
It will also be appreciated that the system described above with respect to a single selected graphics object may also be implemented with multiple selected graphics objects. In one embodiment, graphics application environment 200 may select more than one graphics object in digital canvas 202. The defined subset of graphics objects 204 would then include the two or more selected graphics objects as well as all graphics objects in digital canvas 202 that overlap with at least one of the two or more selected graphics objects. For example with reference to
As shown, the method 400 begins at step 410, where graphics application environment 200 selects a graphics object 210 included in the digital canvas 202. For example, graphics application environment 200 could select the graphics object 210 in response to one or more signals from input devices 108, such as a keyboard, a multi-touch display, or a computer mouse. At step 420, graphics application environment 200 defines a subset of graphics objects 204 in the digital canvas 202. The subset of graphics objects 204 includes the selected graphics object 210 and any additional graphics objects in the digital canvas 202 that overlap with the selected graphics object 210. Again, in one embodiment, graphics application environment 200 determines whether any additional graphics objects overlap the selected graphics object 210 by comparing bounding boxes generated about each additional graphics object with a bounding box generated around the selected graphics object 210. In alternative embodiments, graphics application environment 200 may determine whether any additional graphics objects overlap the selected graphics object 210 using rendering techniques.
At step 430, graphics application environment 200 determines whether the defined subset of graphics objects 204 includes more than the selected graphics object 210. If the defined subset of graphics objects 204 includes only the selected graphics object 210, then no other graphics objects in the digital canvas 202 overlap with the selected graphics object 210 and the method terminates. However, if the defined subset of graphics objects 204 includes more than the selected graphics object 210, then at least one other graphics object in the digital canvas 202 overlaps with the selected graphics object 210, and the method proceeds to step 440.
At step 440, graphics application environment 200 displays layering-order control 206 and stacking-order indicator 208 superimposed over the digital canvas 202. A user may adjust the layering order of subset layers in the digital canvas 202 by manipulating layering-order control 206. At step 450, graphics application environment 200 adjusts the layering order of the subset layers in the digital canvas 202. In one embodiment, the user adjusts layering-order control 206 to change the absolute depth of the subset layer associated with selected graphics object 210. Graphics application environment 200 moves the subset layer associated with selected graphics object 210 to the absolute depth in the digital canvas 202 associated with the adjusted discrete control position of layering-order control 206. Various other subset layers and non-subset layers in the digital canvas 202 are also moved in order to reposition the subset layer associated with selected graphics object 210 at the new location in the absolute depth of the digital canvas 202.
It will be appreciated that the rendered display of the digital canvas or document changes when a first subset layer is repositioned relative to a second subset layer in the absolute depth in the digital canvas 202. Users typically only adjust the layering order of subset layers relative to other subset layers because adjusting the layering order of non-subset layers relative to other subset layers has no effect on the rendered display of the digital canvas or document. Thus, by limiting the reordering commands in the digital canvas or document to only reorder subset layers relative to other subset layers, the graphics application environment 200 may greatly reduce the granularity of tools used for manipulation of the layering order of the subset layers in the digital canvas or document.
In sum, the approach described above provides a mechanism for manipulating the layering order of graphics objects within a digital canvas or document. More specifically, when a graphics object is selected, a subset of graphics objects is defined that includes the selected graphics object as well as all graphics objects in the digital canvas or document that overlap with the selected graphics object. A subset of layers in the digital canvas or document is associated with the subset of graphics objects, where each individual subset layer is associated with one or more of the graphics objects in the subset of graphics objects.
A layering-order control enables a user to manipulate the relative positions or order of the subset layers in the digital canvas or document. The layering-order control includes a number of discrete control positions equal to the number of subset layers, where each discrete control position corresponds to a different subset layer in the digital canvas or document. For example, the first discrete control position could correspond to the subset layer at the highest absolute depth in the digital canvas or document, the second discrete control position could correspond to the subset layer at the second highest absolute depth in the digital canvas or document, etc. Upon selecting the graphics object in the digital canvas or document and defining the subset of graphics objects, an initial discrete control position of the layering-order control corresponds to the subset layer associated with the selected graphics object. When a user selects an adjusted discrete control position of the layering-order control, the subset layer associated with the selected graphics object is moved to the absolute depth associated with the adjusted discrete control position. The other subset layers are moved as needed to make room for the subset layer associated with the selected graphics object.
In one implementation, to make room for the subset layer associated with the selected graphics object, each subset layer and non-subset layer positioned between the absolute depth associated with the initial discrete control position and the absolute depth associated with the adjusted discrete control position, as well as the subset layer located at the absolute depth associated with the adjusted discrete control position, is “moved up” (meaning the absolute depth of the layer is decreased) or “moved down” (meaning the absolute depth of the layer is increased) one position towards the absolute depth associated with the initial discrete control position.
In another implementation, to make room for the subset layer associated with the selected graphics object, each subset layer positioned between the absolute depth associated with the initial discrete control position and the absolute depth associated with the adjusted discrete control position, as well as the subset layer positioned at the absolute depth associated with the adjusted discrete control position, is “moved up” (meaning the absolute depth of the subset layer is decreased) or “moved down” (meaning the absolute depth of the subset layer is increased) one relative subset layer position towards the relative subset layer position corresponding to the initial discrete control position. For each subset layer that is moved, the absolute depth of the subset layer is changed to reflect the absolute depth in the digital canvas or document corresponding to the relative subset layer position to which the subset layer is moved.
In yet another implementation, to make room for the subset layer associated with the selected graphics object, the subset layer located at an absolute depth associated with the adjusted discrete control position and the subset layer located at an absolute depth associated with the initial discrete control position are switched in the absolute depth in the digital canvas or document. The subset layer located at an absolute depth associated with the adjusted discrete control position is moved to the absolute depth associated with the initial discrete control position. Likewise, the subset layer located at an absolute depth associated with the initial discrete control position is moved to the absolute depth associated with the adjusted discrete control position.
One advantage of the above approach is that the reordering command moves the selected graphics object above or below at least one other graphics object in a defined subset of graphics objects. Thus, even if there is a large disparity in absolute depth between the selected graphics object and the other graphics object in the defined subset of graphics objects, a single reordering command moves the selected graphics object above or below the other graphics object in the digital canvas or document while simultaneously moving the selected graphics object above or below any intervening layers in the digital canvas or document. Furthermore, because every manipulation based on a reordering command results in two overlapping graphics objects changing relative positions in absolute depth in the digital canvas or document, the rendered display of the digital canvas or document is changed in response to the reordering command, thereby allowing an end-user to clearly see and understand the changes he or she is making in the digital canvas or document.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the present invention may be devised without departing from the basic scope thereof. For example, aspects of the present invention may be implemented in hardware or software or in a combination of hardware and software. One embodiment of the present invention may be implemented as a program product for use with a computer system. The program(s) of the program product define functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random-access semiconductor memory) on which alterable information is stored. Such computer-readable storage media, when carrying computer-readable instructions that direct the functions of the present invention, are embodiments of the present invention.
In view of the foregoing, the scope of the present invention is determined by the claims that follow.
Milne, Roger B., Ward, Jeffrey C., Kelly, Sean A., Ballagh, Jonathan, Troxel, William M.
Patent | Priority | Assignee | Title |
10175750, | Sep 21 2012 | Amazon Technologies, Inc | Projected workspace |
10698560, | Oct 16 2013 | 3M Innovative Properties Company | Organizing digital notes on a user interface |
10853626, | Aug 20 2018 | PlanetArt, LLC | Custom recommendations application for creating cards |
11151778, | Jan 18 2017 | International Business Machines Corporation | Optimized browser object rendering |
11442591, | Apr 09 2018 | Lockheed Martin Corporation | System, method, computer readable medium, and viewer-interface for prioritized selection of mutually occluding objects in a virtual environment |
11709584, | Aug 25 2017 | Omron Corporation | User interface development assistance device, user interface development assistance method, and non-transitory computer-readable recording medium |
11962930, | Jun 21 2019 | TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED | Method and apparatus for controlling a plurality of virtual characters, device, and storage medium |
9360339, | Jan 14 2013 | SAP SE | Rendering maps with canvas elements |
Patent | Priority | Assignee | Title |
7663620, | Dec 05 2005 | Microsoft Technology Licensing, LLC | Accessing 2D graphic content using axonometric layer views |
7747077, | Feb 14 2005 | Canon Kabushiki Kaisha | Image processing apparatus, image processing method, and image processing program |
8091030, | Dec 14 2006 | DISNEY ENTERPRISES, INC | Method and apparatus of graphical object selection in a web browser |
8209628, | Apr 11 2008 | Microsoft Technology Licensing, LLC | Pressure-sensitive manipulation of displayed objects |
20070113198, | |||
20070126732, | |||
20120030569, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 27 2010 | Disney Enterprises, Inc. | (assignment on the face of the patent) | / | |||
Aug 27 2010 | BALLAGH, JONATHAN | DISNEY ENTERPRISES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024922 | /0789 | |
Aug 27 2010 | MILNE, ROGER B | DISNEY ENTERPRISES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024922 | /0789 | |
Aug 27 2010 | KELLY, SEAN A | DISNEY ENTERPRISES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024922 | /0789 | |
Aug 27 2010 | TROXEL, WILLIAM M | DISNEY ENTERPRISES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024922 | /0789 | |
Aug 27 2010 | WARD, JEFFREY C | DISNEY ENTERPRISES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024922 | /0789 |
Date | Maintenance Fee Events |
Jan 03 2018 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 21 2021 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Jul 08 2017 | 4 years fee payment window open |
Jan 08 2018 | 6 months grace period start (w surcharge) |
Jul 08 2018 | patent expiry (for year 4) |
Jul 08 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 08 2021 | 8 years fee payment window open |
Jan 08 2022 | 6 months grace period start (w surcharge) |
Jul 08 2022 | patent expiry (for year 8) |
Jul 08 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 08 2025 | 12 years fee payment window open |
Jan 08 2026 | 6 months grace period start (w surcharge) |
Jul 08 2026 | patent expiry (for year 12) |
Jul 08 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |