U.S. patent application number 14/569475 was filed with the patent office on 2015-04-09 for folding and unfolding images in a user interface.
The applicant listed for this patent is Facebook, Inc.. Invention is credited to Michael Matas, Charles Melcher, Austin Sarner, Kimon Tsinteris.
Application Number | 20150100924 14/569475 |
Document ID | / |
Family ID | 48869809 |
Filed Date | 2015-04-09 |
United States Patent
Application |
20150100924 |
Kind Code |
A1 |
Matas; Michael ; et
al. |
April 9, 2015 |
FOLDING AND UNFOLDING IMAGES IN A USER INTERFACE
Abstract
In one embodiment, presenting a folded version of an image in a
user interface (UI), the folded version of the image being included
in a UI component of the user interface; and in response to a user
pinching the folded version of the image with two fingers,
simulating and presenting an effect of the folded version of the
image being lifted off and floating above the UI component.
Inventors: |
Matas; Michael; (San
Francisco, CA) ; Tsinteris; Kimon; (San Francisco,
CA) ; Sarner; Austin; (San Francisco, CA) ;
Melcher; Charles; (New York, NY) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Facebook, Inc. |
Menlo Park |
CA |
US |
|
|
Family ID: |
48869809 |
Appl. No.: |
14/569475 |
Filed: |
December 12, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13490736 |
Jun 7, 2012 |
|
|
|
14569475 |
|
|
|
|
61593841 |
Feb 1, 2012 |
|
|
|
Current U.S.
Class: |
715/835 |
Current CPC
Class: |
G06F 3/04815 20130101;
G06F 40/137 20200101; G06F 3/017 20130101; G06F 3/04883 20130101;
G06F 3/04842 20130101; G06F 3/04847 20130101; G06T 11/60 20130101;
G06F 8/34 20130101; G06F 2203/04808 20130101; G06F 3/0485 20130101;
G06T 15/60 20130101; G06F 3/04817 20130101; G06F 3/0482 20130101;
G06F 40/103 20200101; G06F 3/0481 20130101; H04L 67/06 20130101;
H04L 67/18 20130101; G06F 3/0484 20130101; G06F 3/04845
20130101 |
Class at
Publication: |
715/835 |
International
Class: |
G06F 3/0484 20060101
G06F003/0484; H04L 29/08 20060101 H04L029/08 |
Claims
1. A method, performed by an electronic device, comprising:
displaying an image object and an associated geo-tag in a user
interface of a digital book, wherein the geo-tag comprises a visual
indicator that a location is associated with the image object; and
in response to a user interaction with the geo-tag, displaying a
map comprising a pointer to the location on the map.
2. The method of claim 1, wherein the image object is presented in
a full-screen mode in which the image object in its entirety
occupies an entire screen of the user interface.
3. The method of claim 2, wherein the map image is presented in a
full-screen mode in which the map image in its entirety occupies
the entire screen and replaces the image object in the user
interface.
4. The method of claim 1, wherein the pointer indicates the
location associated with a subject matter displayed in the image
object.
5. The method of claim 1, wherein the pointer indicates the
location where the image object was taken.
6. The method of claim 1, further comprising an indicator mapping a
current geographical location of the electronic device.
7. The method of claim 6, wherein the indicator mapping the current
geographical location of the electronic device is displayed
concurrently with the pointer.
8. The method of claim 3, further comprising: displaying a close
icon, and in response to a user interaction with the close icon,
closing the map image and presenting the image object in the user
interface in the full-screen mode.
9. The method of claim 1, further comprising: arranging a plurality
of components of the user interface in a hierarchy, the hierarchy
having one or more layers and each layer having at least one of the
components of the user interface; and presenting the user interface
according to a structure of the hierarchy, comprising: presenting
one or more objects in the hierarchy as overlaying and covering at
least a portion of one or more parent objects, the objects being
child components of at least one of the parent objects according to
the structure of the hierarchy, the objects being presented in a
first layer of the user interface and the parent objects being
presented in a second layer of the user interface beneath the first
layer, in response to a user interaction with an object of the one
or more objects, presenting the object with a child object
overlaying and covering at least a portion of the object, the child
object being a child component of the object according to the
structure of the hierarchy, the child object being presented in a
third layer of the user interface overlaying the first layer, and
in response to a user interaction with the child object, presenting
the child object in a full screen mode, the child object comprising
the image object and the associated geo-tag.
10. The method of claim 9, wherein the geo-tag is displayed only in
association with the child object.
11. The method of claim 9, wherein the geo-tag is displayed only
when the child object is presented in the full screen mode.
12. The method of claim 9, wherein the child object is displayed to
be floating directly on top of the object such that at least a
portion of the child object extends beyond a width or a length of
the object underneath the child object.
13. One or more computer-readable non-transitory storage media
embodying software that is operable when executed to: display an
image object and an associated geo-tag in a user interface of a
digital book, wherein the geo-tag comprises a visual indicator that
a location is associated with the image object; and in response to
a user interaction with the geo-tag, display a map comprising a
pointer to the location on the map.
14. The media of claim 13, wherein the image object is presented in
a full-screen mode in which the image object in its entirety
occupies an entire screen of the user interface, and wherein the
map image is presented in a full-screen mode in which the map image
in its entirety occupies the entire screen and replaces the image
object in the user interface.
15. The media of claim 13, wherein the pointer indicates: the
location associated with a subject matter displayed in the image
object, or the location where the image object was taken.
16. The media of claim 13, further comprising an indicator mapping
a current geographical location of the electronic device, wherein
the indicator mapping the current geographical location of the
electronic device is displayed concurrently with the pointer.
17. A system comprising: a memory comprising instructions
executable by one or more processors; and the one or more
processors coupled to the memory and operable to execute the
instructions, the one or more processors being operable when
executing the instructions to: display an image object and an
associated geo-tag in a user interface of a digital book, wherein
the geo-tag comprises a visual indicator that a location is
associated with the image object; and in response to a user
interaction with the geo-tag, display a map comprising a pointer to
the location on the map.
18. The system of claim 17, wherein the image object is presented
in a full-screen mode in which the image object in its entirety
occupies an entire screen of the user interface, and wherein the
map image is presented in a full-screen mode in which the map image
in its entirety occupies the entire screen and replaces the image
object in the user interface.
19. The system of claim 17, wherein the pointer indicates: the
location associated with a subject matter displayed in the image
object, or the location where the image object was taken.
20. The system of claim 17, further comprising an indicator mapping
a current geographical location of the electronic device, wherein
the indicator mapping the current geographical location of the
electronic device is displayed concurrently with the pointer.
Description
RELATED APPLICATION(S)
[0001] This application is a continuation under 35 U.S.C. .sctn.120
of U.S. patent application Ser. No. 13/490,736, filed Jun. 7, 2012,
which claims the benefit, under 35 U.S.C. .sctn.119(e), of U.S.
Provisional Patent Application No. 61/593,841, filed 1 Feb. 2012,
which is incorporated herein by reference.
TECHNICAL FIELD
[0002] This disclosure generally relates to presenting multimedia
objects, such as images or videos, in a user interface.
BACKGROUND
[0003] A user interface (UI), in the industrial design field of
human-machine interaction, is the space where interactions between
humans and machines occur. The goal of interactions between a
human, often referred to as a "user", and a machine at the user
interface is user's control of the machine and its operations
(e.g., through user input) and machine feedback (e.g., through
program output). A graphical user interface (GUI) is a type of user
interface that allows users to interact with software applications
executing on electronic or computing devices through multimedia
objects (e.g., images, videos, audios, etc.) rather than purely
text commands.
BRIEF DESCRIPTION OF THE DRAWINGS
[0004] FIG. 1 illustrates a portion of an example object
hierarchy.
[0005] FIGS. 2A-2D illustrate example modes for presenting a video
object in a user interface.
[0006] FIGS. 3A-3C illustrate example modes for presenting an image
object in a user interface.
[0007] FIG. 4 illustrates an example map associated with a geo-tag
attached to an image.
[0008] FIGS. 5A-5D illustrate an example transition of an image
between two presentation modes.
[0009] FIGS. 6A-6G illustrate example user manipulations of folded
images.
[0010] FIG. 7 illustrates rotating a floating image.
[0011] FIGS. 8A-8B illustrate simulating an object being picked up
in a three-dimensional virtual space.
[0012] FIG. 9 illustrates an example method that enables a user to
manipulate an image or a video.
[0013] FIG. 10 illustrates an example electronic device.
DESCRIPTION OF EXAMPLE EMBODIMENTS
[0014] In particular embodiments, a user interface (UI), and more
specifically, a graphical user interface (GUI) may include any
number of UI components or elements arranged in a hierarchy. The
components of a user interface may be presented to users according
to the hierarchical structure. In particular embodiments, some of
these UI components may correspond to or represent multimedia
objects, such as images, videos, or audios. Sometimes, these
multimedia UI components may be presented to users individually on
their own. Other times, they may be presented to users while
contained in other UI components, such as being included in a
window, a panel, or a web page. In particular embodiments, there
may be multiple presentations modes for presenting images or videos
in a user interface.
[0015] In particular embodiments, a user may interact with a
multimedia UI component using a suitable input device (e.g., a
finger or stylus on a touch-sensitive screen or a mouse). For
example, the user may play or pause a video, or zoom or pan or
rotate an image. In particular embodiments, depending on how or
where a multimedia UI component is presented to a user (e.g., which
presentation mode it is in), the user's interaction with the
multimedia UI component may result in different behaviors from the
multimedia UI component.
[0016] Object Hierarchy
[0017] In particular embodiments, objects may be organized into a
hierarchy. For example, objects may be organized into a hierarchy
based on how the individual objects are related to each other. The
object hierarchy may have any number of levels, and at each level,
there may be any number of objects. Parent-child or sibling
relationships may exist between specific objects in the hierarchy.
Within the hierarchy, a parent object is one level above the level
of its child objects. Two sibling objects are at the same level and
share the same parent object. In addition, any portion of the
hierarchy may also be considered a hierarchy in itself.
[0018] FIG. 1 illustrates a portion of an example object hierarchy
100 that includes a number of objects 110. In particular
embodiments, an object in a hierarchy may or may not have a parent.
If an object does not have a parent, it may be referred to as a
"root" object (e.g., object 110A). In particular embodiments, an
object in a hierarchy may or may not have any children. If an
object does not have any children, it may be referred to as a
"leaf" or "terminal" object (e.g., object 110B). If an object does
have children (e.g., object 110C), it may have any number of
children. In addition, objects sharing the same parent may be
referred to as each other's "siblings". For example, in FIG. 1,
object 110C is the parent of objects 110D and 110B. Objects 110D
and 110B are the children of object 110C and are siblings to each
other. Thus, a hierarchy of objects (e.g., object hierarchy 100)
not only includes the individual objects themselves but also
indicates the relationships among the specific objects. Moreover,
the position of a specific object within the hierarchy may indicate
its relationships with other objects in the hierarchy.
[0019] Objects may be of any applicable types. In particular
embodiments, an object may be a component of a user interface. In
this case, the object hierarchy may be a UI hierarchy (e.g., a
hierarchy of UI components). In other words, components of a user
interface may be organized into a hierarchy. The UI hierarchy may
have any number of layers corresponding to the levels of the object
hierarchy, and at each layer, there may be any number of UI
components. The position of a specific UI component within the
hierarchy may indicate its relationships with other UI components
in the hierarchy. The UI components may be presented to users
according to the hierarchical structure (e.g., in layers). In
particular embodiments, some of these UI components may be
multimedia objects, such as images, videos, or audios.
[0020] In particular embodiments, an object may correspond to a
piece of user-consumable content. In particular embodiments, an
object may be consumed by a user if the user may, for example and
without limitation, interact with, view, read, listen to,
manipulate, or handle the object. For example, some user-consumable
objects may be texts, images, videos, audios, feeds, executables
(e.g., application programs or games), websites, web pages, digital
books, photo albums, posts, or messages. In particular embodiments,
user-consumable content, or more specifically, user-consumable
objects, may be organized into a hierarchy based on, for example,
the relationships among the individual pieces of user-consumable
content. Consequently, a hierarchy of user-consumable content may
be represented as a hierarchy of objects, where individual objects
in the hierarchy may correspond to specific pieces of
user-consumable content (e.g., texts, images, videos, audios,
executables, etc.). In addition, the structure of the hierarchy
indicates the relationships among the specific pieces of
user-consumable content.
[0021] In particular embodiments, the relationships among the
objects in a hierarchy may correspond to how the objects are
organized and presented to users. In particular embodiments, when
presenting a hierarchy of objects to a user of a device, the
objects may be organized and presented according to the structure
of the object hierarchy. More specifically, the objects may be
presented in a user interface provided on the device according to
the structure of the object hierarchy so that the user interface
itself becomes hierarchical as well. Consequently, the user
interface may include a number of layers, respectively
corresponding to the levels in the object hierarchy. The positions
of the objects within the hierarchy are preserved in the user
interface, such that a specific object at a specific position in
the hierarchy is presented in the corresponding position in the
user interface. The relationships among the objects within the
hierarchy are maintained in the user interface. In other words,
there may be an one-to-one correspondence between an object in the
object hierarchy and a UI component in the user interface, such
that each object is represented by a UI component.
[0022] As an example, in the context of the desktop of a computing
device, the desktop may be a parent object, and sometimes the root
object of a hierarchy, whose child objects are the individual
software applications available on the desktop. A software
application, while itself being one of the child objects of the
desktop, is also the parent object of the individual components of
that software application. Different software applications may
include different components. For example, for a software
application that manages digital books (e.g., a book reader
application), its components may include the digital books
available, the individual chapters of each book, the pages of each
chapter, and the texts, images, videos, audios, or any graphical
user interface (GUI) or content or media elements on each page.
Each of these also corresponds to an object in the hierarchy. More
specifically, when these objects are organized in a hierarchy, the
book application may be the parent object of the digital books. A
digital book may be the parent object of the individual chapters of
that book. A chapter, while itself being one of the child objects
of the book, is also the parent object of the pages in that
chapter. A page is the parent object of the texts, images, videos,
audios, or any GUI or content or media elements on that page. A
text block, image, video, audio, or GUI or content or media element
is one of the child objects of the page to which it belongs.
Similarly, for a software application that manages news feeds, its
components may include the individual news channels and the news
stories within each channel. Each of these may correspond to an
object. When these objects are arranged in a hierarchy, the
news-feed application, while itself being one of the child objects
of the desktop, is also the parent object of the news channels. A
news channel in turn is the parent object of the news stories
included in that channel. Some of these objects may respectively
correspond to UI components of a user interface presented on the
computing device.
[0023] As another example, in the context of the Internet or the
World Wide Web, the Internet may be a parent object whose child
objects are the individual websites. A website, while itself being
one of the child objects of the Internet, is also the parent object
of the individual web pages of that website. A web page, while
itself being one of the child objects of the website to which it
belongs, is the parent object of the texts, images, videos, audios,
or links (e.g., Uniform Resource Locators (URLs)) included in the
web page. Each text block, image, video, audio, or link may also
correspond to a specific object in the hierarchy. Some of these
objects may respectively correspond to UI components of a web-based
user interface that may be presented to a user through a web
browser.
[0024] As a third example, a website, such as a social-networking
website, may also be arranged in such a hierarchical structure for
navigating the content of the social-networking website. In this
context, the social-networking website may be a parent object whose
child objects are the components (e.g., photo albums, user profile
pages, etc.) of the website. For example, a photo album, while
itself being a child object of the social-networking website, may
in turn be a parent object, and the individual photos within the
album may be the child objects of the photo album. A user's profile
page may be structured in such a hierarchical fashion as well. The
profile page itself may be considered a parent object, and the
individual objects on the profile page may be the child objects of
the profile page. In particular embodiments, a profile page may be
considered and rendered (e.g., for presentation to a user) as a
linear timeline of objects, such as, for example and without
limitation, photos, photo albums, check-ins, comments from other
users, attended events, tags, etc. In particular embodiments, child
objects in the hierarchy may also include applications the user has
added to the profile page, such as a Spotify music sharing
application. Moreover, individual stories, songs the user has
listened to, and playlists may be child objects at a lower
hierarchical level. In particular embodiments, child objects in the
hierarchy may include particular sections of a user's profile, such
as the user's education and employment information, or the public
"wall" of the user's profile page. This disclosure contemplates
representing and addressing any collection of content in a
hierarchical object or nodal structure. Again, these objects may
respectively correspond to UI components of a web-based user
interface that may be presented to a user through a web
browser.
[0025] As these examples illustrate, an object may be of any type
and this disclosure contemplates any applicable types of objects.
For example and without limitation, the term "object" may refer to
any type of content, including but not limited to images, videos,
captions, text blocks or boxes, user interface elements, URLs,
newsfeed stories, references to other objects, advertisements,
calendar events, units for displaying open graph analysis that may
be graphically rendered, applications, websites, web pages, books,
chapters. In particular embodiments, given a hierarchy of objects,
which may be a portion of another, larger hierarchy of objects, the
hierarchical relationships (e.g., parent-child or sibling
relationships, positions of the objects within the hierarchy)
between specific objects may direct some aspects of how these
objects behave in the context of a user interface or how the
objects are presented to a user.
[0026] Video Object
[0027] In particular embodiments, an object in a hierarchy may be a
video, which may be presented to a user for viewing. Consequently,
there may be a video component in a user interface corresponding to
the video object. In particular embodiments, there may be several
modes for presenting a video object in a user interface, and this
disclosure contemplates any applicable presentation modes for
presenting video objects. The video object may be presented to a
user in any one of these available modes. There may be different
video components in the user interface for presenting the video
object in different modes.
[0028] In particular embodiments, a video object may be presented
in a user interface in an index mode (also referred to as
table-of-content (TOC) mode), as illustrated in FIG. 2A. Sometimes,
a video object may be included in an index of user-consumable
content or in a table of content, and the index mode may be
suitable for presenting the video object in such a situation. As an
example, a digital book may include a number of chapters; each
chapter may include a number of pages; and each page may include a
number of text blocks, images, videos, etc. These objects (e.g.,
book, chapter, page, text block, image, video, etc.) may be
organized in a hierarchy, and each of these objects may correspond
to a UI component. As illustrated in FIG. 2A, given a specific
chapter, the pages in that chapter may be presented in a table of
content (TOC) 211 so that a user may browse through these pages
quickly and perhaps select a specific page to read in further
detail. Suppose that a specific page 213 includes a video 215.
Video 215 may be presented in TOC 211, as a part of page 213, in
the index mode. Video 215 may be shown in a thumbnail (i.e., small)
size, in proportion to the sizes of page 213 and TOC 211. As
another example, a social-networking website may include a number
of user accounts; each user account may include a number of media
folders or albums (among other items); and each media folder may
include a number of videos or images. Again, these objects (e.g.,
website, user account, media folder, video, image, etc.) may be
organized in a hierarchy. Given a specific media folder, the videos
in that folder may be presented in an index of video objects so
that a user may browse through these videos and perhaps select a
specific video for playback. In this case, each video object may be
presented in the index mode.
[0029] In particular embodiments, a video object may be presented
in a user interface in an on-page mode, as illustrated in FIG. 2B.
Sometimes, a video object may be included in another UI component
(e.g., a web page, a page of a book, etc.). When this other UI
component is presented, the video object may be presented as a part
of this other UI component. The on-page mode may be suitable for
presenting the video object in such a situation. As an example, as
illustrated in FIG. 2B, suppose that a page 223 of a digital book
includes a video 225. When page 223 is presented, video 225 is
presented as a part of page 223, in the on-page mode, together with
other content of page 223. Video 225 may be shown in a size that is
appropriate or in proportion to the size of page 223 (e.g., half or
a quarter of the size of page 223). As another example, a web page
may include a video object. When the web page is presented (e.g.,
displayed in a web browser), the video object may be presented in
the web page and as a part of the web page in the on-page mode,
together with other content of the web page.
[0030] In particular embodiments, a video object may be presented
in a user interface in a full-screen mode, as illustrated in FIG.
2C. Sometimes, a video object may be presented by itself. The
full-screen mode may be suitable for presenting the video object in
such a situation. For example, as illustrated in FIG. 2C, a video
235 is presented in the full-screen mode where it may be the only
or the main UI component displayed on the screen of a device and
may occupy substantially the entire display area of the screen
(e.g., greater than 90% of the display area of the screen or 100%
of the display area of the screen).
[0031] A user may interact with a video object presented in any of
the available modes, and in particular embodiments, depending on
which mode the video object is in, the user's interaction with the
video object may result in different behavioral responses. In some
cases, the user's interaction with the video object in one
presentation mode may cause the video object to automatically
transition to another presentation mode.
[0032] In particular embodiments, while in each of the presentation
modes (e.g., index mode, on-page mode, full-screen mode), there may
be playback control icons or buttons associated with a video object
(e.g., icon 217 in FIG. 2A, icon 227 in FIG. 2B, icon 237 in FIG.
2C). A user may tap on these control icons to cause the video to
start or pause playing. For example, while the video is being
played, a pause icon (e.g., icon 237 in FIG. 2C) may be associated
with the video. The user may tap on the pause icon to cause the
video to pause playing. On the other hand, while the video is
paused, a play icon (e.g., icon 227 in FIG. 2B) may be associated
with the video. The user may tap on the play icon to cause the
video to start or resume playing. The user may start or stop
playback of the video at any time.
[0033] In particular embodiments, while a video object is presented
in the index mode, such as video 215 in FIG. 2A, the user may
single tap any part of video 215 or pinch open video 215 (e.g.,
using two fingers on a touch-sensitive screen), which may cause the
video object to transition to the on-page mode, such as video 225
in FIG. 2B. In particular embodiments, while a video object is
presented in the on-page mode, such as video 225 in FIG. 2B, the
user may single tap any part of video 225 or pinch open video 225,
which may cause the video object to transition to the full-screen
mode, such as video 235 in FIG. 2C. Conversely, in particular
embodiments, while a video object is presented in the full-screen
mode, such as video 235 in FIG. 2C, the user may double tap any
part of video 235 or pinch close video 235 (e.g., using two fingers
on a touch-sensitive screen), which may cause the video object to
transition to the on-page mode, such as video 225 in FIG. 2B. In
particular embodiments, while a video object is presented in the
on-page mode, such as video 225 in FIG. 2B, the user may double tap
any part of video 225 or pinch close video 225, which may cause the
video object to transition to the index mode, such as video 215 in
FIG. 2A.
[0034] In particular embodiments, while a video object transitions
from one presentation mode to another presentation mode, the
playback status of the video is unaffected. That is, if the video
is being played while the mode transition occurs, the video
continues to play, until either the user stops the playback or the
video ends. On the other hand, if the video is paused while the
mode transition occurs, the video continues to pause. The user may
pause or resume playback of the video using, for example, the
appropriate control icon.
[0035] In particular embodiments, there is a consistency between
different presentation modes. When an object (e.g., image, video)
is presented in a user interface and the object is being
manipulated by a user (e.g., picked up, rotated, zoomed in or out,
etc.), the object itself, not the UI component representing the
object, is manipulated. This ensures the self-consistency of the
user interface. For example, while a video is being played, the
user may manipulate the video object (e.g., pinched down to the
index mode or pinched up to the full-screen mode). While the video
object is being manipulated by the user, the playback of the video
continues uninterrupted.
[0036] In particular embodiments, while in the index mode (e.g.,
video 215 in FIG. 2A) or the on-page mode (e.g., video 225 in FIG.
2B), if the user clicks or taps the play icon to start playing a
video, the video may automatically transition to the full-screen
mode (e.g., video 235 in FIG. 2C) and the control icon may fade
away. Conversely, in particular embodiments, while in the
full-screen mode, if the user pauses or stops the playback of the
video or if the video ends, the video may automatically transition
back to the index mode or the on-page mode (i.e., the original mode
in which the video had been presented when the user had caused the
video to transition to the full-screen mode by starting the
playback).
[0037] In particular embodiments, when a video object transitions
from one presentation mode to another presentation mode, the
display size for the visual portion of the video may change
accordingly. For example, when transitioning from the index mode to
the on-page mode, the size of the video images (i.e., the visual
portion of the video) may increase appropriately. Similarly, when
transitioning from the on-page mode to the full-screen mode, the
size of the video images may increase to occupy the entire display
area of the screen. Conversely, when transitioning from the
full-screen mode to the on-page mode or from the on-page mode to
the index mode, the size of the video images may decrease
appropriately. In other words, there may be a suitable size for
presenting the visual portion of a video object in each specific
mode, and while the video object is presented in a specific mode,
its visual portion is presented in the corresponding size for that
mode.
[0038] In particular embodiments, when a video object transitions
from one presentation mode to another presentation mode, the volume
level for the audio portion of the video may change accordingly. In
other words, there may be a suitable volume level for presenting
the audio portion of a video object in each specific mode, and
while the video object is presented in a specific mode, its audio
is presented in the corresponding volume level for that mode. For
example, while in the index mode, the audio of the video object may
be presented in a lower volume level so that it does not create
much disturbance. While in the on-page mode, the audio of the video
object may be presented in a volume level that is somewhat higher
(e.g., louder) than that of the index mode. While in the
full-screen mode, the audio of the video object may be presented in
a volume level that is somewhat higher (e.g., louder) than that of
the on-page mode (e.g., a higher volume level). While in each
presentation mode, the user may manually adjust (e.g., increase or
decrease) the volume level of the audio of the video object to
override the default volume level for that mode as desired.
[0039] In particular embodiments, while in the index mode (e.g.,
video 215 in FIG. 2A), if a video is being played, the user may not
be able to stop the playback directly in the index mode. Instead,
the user needs to transition to the on-page mode (e.g., video 225
in FIG. 2B) first and then uses the pause icon to pause or stop the
playback of the video.
[0040] In particular embodiments, while in the on-page mode (e.g.,
video 225 in FIG. 2B), a video object may "float" on top of the UI
component containing that video object. For example, as illustrated
in FIG. 2B, video 225 floats on top of page 223, and this floating
status is visually indicated by showing a small portion (e.g., the
top edge) of video 225 slightly outside the boundary of page 223.
In particular embodiments, the components of a user interface may
be presented according to a hierarchical structure. In this case,
page 223 may be the parent object of video 225. Thus, page 223 may
be at one layer beneath the layer of video 225 in the user
interface. Page 223 and video 225 are two separate UI components
corresponding to two objects. In particular embodiments, a floating
video object indicates that a user may interact with that video
object.
[0041] In particular embodiments, while in the on-page mode (e.g.,
video 225 in FIG. 2B), if a video is being played and the user
navigates away from the UI component (e.g., the page) containing
the video, the current position of the video may be recorded. If
the user comes back to the UI component (e.g., the page) containing
the video object at a later time, the video may resume playback
from the position where the user has left it.
[0042] In particular embodiments, while in the full-screen mode,
the playback control icon (e.g., icon 237 in FIG. 2C) associated
with a video may disappear after it has not been used for a while
(e.g., a few seconds) or if the user taps on the video. Only the
video itself is presented on the screen, as illustrated in FIG. 2D,
so that the user may watch the video undisturbed. The user may
bring back the control icon by single tapping the video in the
full-screen mode (e.g., video 235 in FIG. 2D) in order to pause or
resume playback of the video. In other words, while in the
full-screen mode, single tapping on the video may cause the
playback control icon associated with the video to appear or
disappear. In particular embodiments, while in the full-screen
mode, there may be a time indicator (e.g., slider icon 239 in FIG.
2C) associated with the video indicating how much time has elapsed
in the video as well as enabling the user to jump to different
positions in the video (e.g., be selecting a specific position
along slider icon 239).
[0043] In particular embodiments, while in each of the presentation
mode, if the user indicates that he or she no longer wishes to
watch a video by, for example, swiping to the next page or chapter,
closing the video object, or otherwise navigating away from the
video object, the audio portion of the video object may fade out,
instead of, for example, stopping abruptly.
[0044] Image Object
[0045] In particular embodiments, an object in a hierarchy may be
an image, which may be presented to a user for viewing.
Consequently, there may be an image component in a user interface
corresponding to the image object. In particular embodiments, there
may be several modes for presenting an image object in a user
interface, and this disclosure contemplates any applicable
presentation modes for presenting image objects. The image object
may be presented to a user in any one of these available modes.
There may be different image components in the user interface for
presenting the image object in different modes.
[0046] In particular embodiments, an image object may be presented
in a user interface in an index mode (also referred to as
table-of-content (TOC) mode), as illustrated in FIG. 3A. Sometimes,
an image object may be included in an index of user-consumable
content or in a table of content, and the index mode may be
suitable for presenting the image object in such a situation. As an
example, a digital book may include a number of chapters; each
chapter may include a number of pages; and each page may include a
number of text blocks, images, videos, etc. These objects (e.g.,
book, chapter, page, text block, image, video, etc.) may be
organized in a hierarchy, and each of these objects may correspond
to a UI component. As illustrated in FIG. 3A, given a specific
chapter, the pages in that chapter may be presented in a table of
content (TOC) 311 so that a user may browse through these pages
quickly and perhaps select a specific page to read in further
detail. Suppose that a specific page 313 includes an image 315.
Image 315 may be presented in TOC 311, as a part of page 313, in
the index mode. Image 315 may be shown in a thumbnail (i.e., small)
size, in proportion to the sizes of page 313 and TOC 311. Different
images may have different sizes or resolutions. When an image is
included in a page, it may occupy a portion of the page, as in the
case of image 315 (e.g., occupying a quarter or half of the page)
or it may occupy the entire page, as in the case of image 317. When
images 315 and 317 are presented in the index mode, their sizes may
decrease in proportion to the sizes of the pages that contain them.
As another example, a social-networking website may include a
number of user accounts; each user account may include a number of
media folders or albums (among other items); and each media folder
may include a number of videos or images. Again, these objects
(e.g., website, user account, media folder, video, image, etc.) may
be organized in a hierarchy. Given a specific media folder, the
images in that folder may be presented in an index of image objects
so that a user may browse through these images and perhaps select a
specific image for viewing. In this case, each image object may be
presented in the index mode.
[0047] In particular embodiments, an image object may be presented
in a user interface in an on-page mode, as illustrated in FIG. 3B.
Sometimes, an image object may be included in another UI component
(e.g., a web page, a page of a book, etc.). When this other UI
component is presented, the image object may be presented as a part
of this other UI component. The on-page mode may be suitable for
presenting the image object in such a situation. As an example, as
illustrated in FIG. 3B, suppose that a page 323 of a digital book
includes an image 325. When page 323 is presented, image 325 is
presented as a part of page 323, in the on-page mode, together with
other content of page 323. Image 325 may be shown in a size that is
appropriate or in proportion to the size of page 323. Different
images may have different sizes or resolutions and may occupy
different areas or portions of a page. For example, an image may
occupy a quarter of a page (e.g., top-left quarter, top-right
quarter, bottom-left quarter, bottom-right quarter) or half of a
page (e.g., top half, bottom half, left half, right half). As
another example, a web page may include an image object. When the
web page is presented (e.g., displayed in a web browser), the image
object may be presented in the web page and as a part of the web
page in the on-page mode, together with other content of the web
page.
[0048] In particular embodiments, an image object may be presented
in a user interface in a full-screen mode, as illustrated in FIG.
3C. Sometimes, an image object may be presented by itself. The
full-screen mode may be suitable for presenting the image object in
such a situation. For example, as illustrated in FIG. 3C, an image
335 is presented in the full-screen mode where it may be the only
or the main UI component displayed on the screen of a device and
may occupy substantially the entire display area of the screen
(e.g., greater than 90% of the display area of the screen or 100%
of the display area of the screen).
[0049] In particular embodiments, while an image object is
presented in the index mode, such as image 315 in FIG. 3A, the user
may single tap any part of image 315 or pinch open image 315 (e.g.,
using two fingers on a touch-sensitive screen), which may cause the
image object to transition to the on-page mode, such as image 325
in FIG. 3B. In particular embodiments, while an image object is
presented in the on-page mode, such as image 325 in FIG. 3B, the
user may single tap any part of image 325 or pinch open image 325,
which may cause the image object to transition to the full-screen
mode, such as image 335 in FIG. 3C. Conversely, in particular
embodiments, while an image object is presented in the full-screen
mode, such as image 335 in FIG. 3C, the user may double tap any
part of image 335 or pinch close image 335 (e.g., using two fingers
on a touch-sensitive screen), which may cause the image object to
transition to the on-page mode, such as image 325 in FIG. 3B. In
particular embodiments, while an image object is presented in the
on-page mode, such as image 325 in FIG. 3B, the user may double tap
any part of image 325 or pinch close image 325, which may cause the
image object to transition to the index mode, such as image 315 in
FIG. 3A.
[0050] In particular embodiments, an image object may have multiple
cropped versions in addition to the original, full-size image. The
cropped versions may be presented in different modes when
appropriate. For example, when an image object is presented in the
index mode or the on-page mode, sometimes, the area for displaying
the image may be relatively small in comparison to the size of the
image. To fit the image in the display area, the image may be
re-sized down (e.g., to a smaller size) or a cropped version of the
image may be displayed. For example, as illustrated in FIG. 5A, a
cropped version 510 of an image is shown in the on-page mode when
the image is included in a page of a digital book. In particular
embodiments, when a user single taps or pinches open cropped
version 510 of the image to cause the image to transition to the
full-screen mode, initially, the image may still be shown in the
cropped version, as illustrated in FIG. 5B. However, in FIG. 5B,
the cropped version of the image occupies the entire screen of the
user's device, instead of being included in a page. The image may
gradually zoom or pan out, as illustrated in FIG. 5C, until
eventually the original, complete image is shown, as illustrated in
FIG. 5D. In addition, in particular embodiments, there may be audio
commentary associated with an image. While the image is zooming
out, as illustrated in FIGS. 5B, 5C, 5D, the audio commentary
associate with the image may be played automatically.
[0051] In particular embodiments, while an image object is
presented in each of the presentation modes (e.g., index mode,
on-page mode, full-screen mode), text may be overlaid on top of the
image (e.g., text 319 in FIG. 3A, text 329 in FIG. 3B, text 339 in
FIG. 3C). For example, the text may be a caption or description of
the associated image.
[0052] In particular embodiments, while in the on-page mode (e.g.,
image 325 in FIG. 3B), an image object may "float" on top of the UI
component containing that image object. For example, as illustrated
in FIG. 3B, image 325 floats on top of page 323, and this floating
status is visually indicated by showing a small portion (e.g., the
top edge and bottom edge) of image 325 slightly outside the
boundary of page 323. In particular embodiments, the components of
a user interface may be presented according to a hierarchical
structure. In this case, page 323 may be the parent object of image
325. Thus, page 323 may be at one layer beneath the layer of image
325 in the user interface. Page 323 and image 325 are two separate
UI components corresponding to two objects. In particular
embodiments, a floating image object indicates that a user may
interact with that image object.
[0053] In particular embodiments, while an image object is
presented in the full-screen mode, a geo-tag may be associated with
or attached to the image object. The geo-tag may represent a
geographical location. For example, as illustrated in FIG. 3C, a
geo-tag, as represented by geo-tag icon 337, is associated with or
attached to image 335 in the full-screen mode. When a user
interacts with geo-tag icon 337 (e.g., single tap or click it), the
underlying geo-tag may cause a map 400 to be presented, as
illustrated in FIG. 4. With some implementations, map 400 may be
presented in the full-screen mode, replacing image 335. Map 400 may
include an indicator 401 indicating the geographical location of
the subject matter in image 335 or where image 335 had been taken
and another indicator 403 indicating, if known and enabled by the
user and user's device, the current geographical location of the
electronic device, and thus its user, displaying the map. In
addition, there is a close icon 405 that enables the user to close
map 400 and return to the image with which the corresponding
geo-tag is associated (e.g., image 337 in FIG. 3C).
[0054] In particular embodiments, while an image object is
presented in the on-page mode where the image is included in
another UI component (e.g., a web page, a page of a digital book),
sometimes, the display area for the image is smaller than the size
of the image. To fit the image in the available display area, in
particular embodiments, a portion or a cropped version of the
original image may be displayed. There may be different ways to
crop an image, depending on, for example, the dimension or size of
the image, the position of the image in the other UI component
containing the image, or the size of the display area for the
image.
[0055] As an example, when an image is presented in the left or
right half of a page, the image may be folded in half vertically.
FIG. 6A illustrates an image 611 included in a page 610. Image 611
is placed in the left half of page 610 and is folded in half
vertically. As another example, when an image is presented in the
top or bottom half of a page, the image may be folded in half
horizontally. FIG. 6D illustrates an image 621 included in a page
620. Image 621 is placed in the top half of page 620 and is folded
in half horizontally. Both images 611 and 621 are presented in the
on-page mode, being included in pages 610 and 620 respectively.
[0056] As illustrated in FIG. 6A, image 611 floats on top of page
610, since the top and bottom edges of image 611 extend beyond the
boundary of page 610. Similarly, as illustrated in FIG. 6D, image
621 floats on top of page 620, since the top edge of image 621
extends beyond the boundary of page 620. In particular embodiments,
when a first UI component (e.g., image, video, text box, URL,
caption, etc.) floats on top of a second UI component (e.g., page)
that contains the first UI component, it is a visual indication
that the first UI component may be manipulated by the user in
various manners.
[0057] In particular embodiments, when an image floats on top of a
page, such as in the case of image 611 floating on top of page 610
as illustrated in FIG. 6A or image 621 floating on top of page 620
as illustrated in FIG. 6D, a user may "lift" the image up and off
the page by pinching the image with two fingers through a
touch-sensitive screen, as illustrated in FIG. 6G. The two fingers
may be placed anywhere near one or more edges of the image. With a
folded image, when the image is pinched up and lifted off the page,
the entire image appears, but remains folded at an angle relative
to the distance between the two fingers the user uses to pinch the
image. If the user pinches out beyond a predetermined or specified
threshold distance (e.g., by moving the two fingers apart) and then
takes his fingers off the image (e.g., by lifting the fingers off
the touch-sensitive screen), the image may transition to the
full-screen mode and expand to fill the entire screen. For the
example illustrated in FIG. 6G, image 611 has been lifted off page
610 when a user places two fingers near the left and right edges of
image 611 and pinches image 611 up. Image 611 remains folded
vertically, but both left and right sides of image 611 are visible.
A horizontally folded image may be lifted off a page similarly.
[0058] In particular embodiments, once the user has pinched up an
image, the user may drag the image to various positions on the
screen or rotate the image by moving the fingers pinching the image
appropriately.
[0059] In particular embodiments, to simulate the effect of a
two-dimensional object (e.g., image) in a three-dimensional virtual
space, shadow may be placed around the object. In particular
embodiments, a light source may be simulated to cause the effect of
shadowing around a floating object (e.g., a floating image). The
simulated light source may be placed at any position on or off the
screen. In the case illustrated in FIG. 6G, a simulated light
source 650 is placed in the center of the display screen (e.g., the
center of page 610). The shadow around folded image 611 may change
depending on the position of image 611 in relation to simulated
light source 650. In addition, in particular embodiments, when
simulating the effect of viewing an object in the three-dimensional
virtual space, the object may be rotated or rolled (e.g., left or
right, up or down) as needed or as appropriate to compensate for
perspective.
[0060] For example, in FIG. 6B, image 611 has been pinched up and
moved toward the left side of the screen (e.g., near the left edge
of page 610). In this case, there is more, darker shadow on the
left side of image 611 and less, lighter shadow on the right side
of image 611, as the left side of image 611 faces away from
simulated light source 650 and the right side of image 611 faces
toward simulated light source 650. In addition, to compensate for
perspective, image 611 is rotated more toward the left so that
there is more of the right half of image 611 shown but less of the
left half of image 611 shown. In contrast, in FIG. 6C, image 611
has been pinched up and moved toward the right side of the screen
(e.g., near the right edge of page 610). In this case, there is
more, darker shadow on the right side of image 611 and less,
lighter shadow on the left side of image 611, as the right side of
image 611 faces away from simulated light source 650 and the left
side of image 611 faces toward simulated light source 650. In
addition, to compensate for perspective, image 611 is rotated more
toward the right so that there is more of the left half of image
611 shown but less of the right half of image 611 shown. In
particular embodiments, when a floating object (e.g., floating
image 611) is manipulated when in the on-page mode, other objects,
such as page or text objects, layered below the floating image
remain stationary, permitting the user to manipulate the floating
image and read the entire text simultaneously.
[0061] Similar shadowing effect may be applied to a floating image
when the image is pinched up and moved toward the top or bottom of
the screen. For example, in FIG. 6E, image 621 has been pinched up
(e.g., by placing two fingers near the top and bottom edges of
image 621) and moved toward the top side of the screen (e.g., near
the top edge of page 620). Image 621 remains folded horizontally
but both the top and bottom sides of image 621 are visible. In this
case, to compensate for perspective, image 621 is rotated more
toward the bottom so that more of the top half of image 621 is
shown. Simulated light source 650 is now placed near the top of or
above the screen so that there is more shadow on the bottom side of
image 621 than on the top side of image 621, since the top side of
image 621 faces toward simulated light source 650 and the bottom
side of image 621 faces away from simulated light source 650. In
contrast, in FIG. 6F, image 621 has been brought near the bottom of
the screen. At this position, to compensate for perspective, image
621 is rotated more toward the top so that more of the bottom half
of image 621 is shown. Simulated light source 650 is now placed
near the bottom of or below the screen so that there is more shadow
on the top side of image 621 than on the bottom side of image 621,
since the top side of image 621 faces away from simulated light
source 650 and the bottom side of image 621 faces toward simulated
light source 650.
[0062] When a floating object (e.g., a floating image) is pinched
up, it may be moved to different positions on the screen, as
illustrated in FIGS. 6B, 6C, 6E, 6F. In particular embodiments, it
may also be rotated, as illustrated in FIG. 7. In this example, an
image 711 contained in a page 710 has been pinched up (e.g., using
two fingers) and rotated (e.g., by rotating the fingers pinching
image 711). The shadow around image 711 may rotate with image 711
accordingly to maintain the three-dimensional effect. In addition,
as illustrated in FIG. 7, a portion of image 711 overlays the text
beneath it on page 710. In particular embodiments, when a floating
object (e.g., image or video) overlays another object (e.g., text)
beneath it, the appearance of the object under the floating object
may be adjusted (e.g., slightly darkened or distorted) to simulate
the effect of the shadow casted by the floating object on the
underlaying object.
[0063] In particular embodiments, the shadow of an object (e.g., an
image) may be implemented as a separate layer. For example, in FIG.
7, image 711 partially overlaps some text on page 710. There is
shadow surrounding image 711. The text covered by the shadow may be
darkened accordingly as well. In some implementations, the shadow
around an object (e.g., an image) may be drawn as a blurry dot,
sliced up horizontally and vertically, and then stretched up to
fill the necessary shadow area. This allows the shadow of an object
to be determined without performing ray tracing, which is very
computationally intensive and thus resource demanding.
[0064] In particular embodiments, when a user pinches or picks up
an image with two fingers (e.g., through a touch-sensitive screen),
as long as the user's fingers are in contact with the image (e.g.,
by staying in contact with the touch-sensitive screen), the image
may move according to the movements of the user's fingers. In other
words, there may be an one-to-one corresponding interaction between
the movements of the user's fingers and the movements of the image.
As an example, when a folded image is picked up (e.g., pinched up
with two fingers), if the user's fingers move apart, the image may
unfold more so that the two edges pinched by the user's fingers
move further apart or the image may increase in size. If the user's
fingers move closer, the image may fold more so that the two edges
pinched by the user's fingers move closer or the image may decrease
in size. As another example, when an un-folded image is picked up
(e.g., pinched up with two fingers), its size may change with the
movements of the two fingers. By moving the two fingers further
apart, the image may be enlarged. Conversely, by moving the two
fingers closer together, the size of the image may be decreased. As
a third example, if the user's fingers move to different positions
on the screen, the image may follow and move with the user's
fingers to different positions on the screen and may rotate
appropriately to simulate the effect of viewing the image in a
three-dimensional virtual space (e.g., to compensate for
perspective). The shadow around the image may move with the image
(e.g., as the image fold or unfold, increase or decrease in size,
rotate, pan, etc.).
[0065] In particular embodiments, the animation of the image's
movements may give the perception that the user is holding the
image at the same two points on the image where the user's fingers
are in contact with the image throughout the movements. The
locations of the user's fingers may be projected into the
three-dimensional virtual space.
[0066] In particular embodiments, when an image is picked up, the
animation of its movements following the user's fingers may be
based on spring motions. For example, how much should the image
fold or unfold, how much should the image rotate, or how much
should the image bounce against the edge of the screen, as the
user's fingers move may be determined based on spring motions. In
particular embodiments, an image's movements may be simulated by,
supposedly, attaching the image to an imaginary spring. When the
user's fingers pick up the image, the supposed force the user's
fingers exert on the image may cause the image to have supposed
mass. When an object with mass (e.g., an image with supposed mass)
is attached to a spring, its movements may follow specific physical
properties. In addition to the mass, the spring may have properties
such as, for example and without limitation, tension, stretch, and
dampening. By selecting various values for these properties,
different movements of the image may be simulated.
[0067] In particular embodiments, to simulate the effect of picking
up an object (e.g., image, video) in the three-dimensional virtual
space, when a first object is picked up, a second object beneath
the first object may be moved backward in the virtual
three-dimensional space. For example, when image 711 is pinched up,
page 710, together with the text on it, may be moved backward to
create the visual effect of a greater distance between image 711
and page 710, which in turn simulates the effect of image 711 being
picked up from page 710. The shadow casted by image 711 on page 710
may increase in size accordingly.
[0068] The simulation of the effect of picking up a two-dimensional
object in a virtual three-dimensional space is further illustrated
in FIG. 8. In FIG. 8A, the distance between objects 810 and 820 is
D1. A light source 830 above object 810 causes object 810 to cast a
shadow 841 of object 810 onto object 820. In FIG. 8B, object 810
has moved away from object 820 and closer to light source 830. The
distance between objects 810 and 820 is D2, which is greater than
D1. Light source 830 again causes object 810 to cast a shadow 842
of object 810 onto object 820. But because object 810 is now
further away from object 820, shadow 842 is larger than shadow 841.
Thus, by changing the size of the shadow a first object casts onto
a second object, it may stimulate the effect that the first object
is moving away from (e.g., increasing shadow size) or moving closer
toward the second object (e.g., decreasing shadow size). In the
case of picking up an image from a page, by changing the size of
the shadow the image casts onto the page, it may stimulate the
effect that the image is moving away from (e.g., increasing shadow
size) or moving closer toward the page (e.g., decreasing shadow
size). When the image is moving away from the page, it appears that
the image is picked up from the page.
[0069] User Manipulation of Image or Video Object
[0070] In particular embodiments, an image or video object
presented in a user interface may be manipulated by a user. FIG. 9
illustrates an example method for a user to manipulate an image or
a video presented in a user interface. In particular embodiments,
at 910, an image or a video may be presented in a user interface in
one of the available presentation modes (e.g., index mode, on-page
mode, full-screen mode). At 920, a user may interacts with the
image or video. At 930, in response to the user interaction, the
image or the video may be modified. How the image or the video is
actually modified may depend on the presentation mode it is in or
the user interaction. For example, as described above, the user
interaction may cause the image or video to transition to a
different presentation mode, to move or rotate or pan, to increase
or decrease its size, and so on. The steps illustrated in FIG. 9
may be repeated as needed.
[0071] Electronic Device
[0072] Particular embodiments may be implemented on one or more
electronic devices or computer systems. FIG. 10 illustrates an
example electronic device 1000. For example, computer system 1000
may be an embodiment for device 110A or device 110B illustrated in
FIG. 1. In particular embodiments, one or more computer systems
1000 perform one or more steps of one or more methods described or
illustrated herein. In particular embodiments, one or more computer
systems 1000 provide functionality described or illustrated herein.
In particular embodiments, software running on one or more computer
systems 1000 performs one or more steps of one or more methods
described or illustrated herein or provides functionality described
or illustrated herein. Particular embodiments include one or more
portions of one or more computer systems 1000.
[0073] This disclosure contemplates any suitable number of computer
systems 1000. This disclosure contemplates computer system 1000
taking any suitable physical form. As example and not by way of
limitation, computer system 1000 may be an embedded computer
system, a system-on-chip (SOC), a single-board computer system
(SBC) (such as, for example, a computer-on-module (COM) or
system-on-module (SOM)), a desktop computer system, a laptop or
notebook computer system, an interactive kiosk, a mainframe, a mesh
of computer systems, a mobile telephone, a personal digital
assistant (PDA), a server, or a combination of two or more of
these. Where appropriate, computer system 1000 may include one or
more computer systems 1000; be unitary or distributed; span
multiple locations; span multiple machines; or reside in a cloud,
which may include one or more cloud components in one or more
networks. Where appropriate, one or more computer systems 1000 may
perform without substantial spatial or temporal limitation one or
more steps of one or more methods described or illustrated herein.
As an example and not by way of limitation, one or more computer
systems 1000 may perform in real time or in batch mode one or more
steps of one or more methods described or illustrated herein. One
or more computer systems 1000 may perform at different times or at
different locations one or more steps of one or more methods
described or illustrated herein, where appropriate.
[0074] In particular embodiments, computer system 1000 includes a
processor 1002, memory 1004, storage 1006, an input/output (I/O)
interface 1008, a communication interface 1010, and a bus 1012.
Although this disclosure describes and illustrates a particular
computer system having a particular number of particular components
in a particular arrangement, this disclosure contemplates any
suitable computer system having any suitable number of any suitable
components in any suitable arrangement.
[0075] In particular embodiments, processor 1002 includes hardware
for executing instructions, such as those making up a computer
program. As an example and not by way of limitation, to execute
instructions, processor 1002 may retrieve (or fetch) the
instructions from an internal register, an internal cache, memory
1004, or storage 1006; decode and execute them; and then write one
or more results to an internal register, an internal cache, memory
1004, or storage 1006. In particular embodiments, processor 1002
may include one or more internal caches for data, instructions, or
addresses. This disclosure contemplates processor 1002 including
any suitable number of any suitable internal caches, where
appropriate. As an example and not by way of limitation, processor
1002 may include one or more instruction caches, one or more data
caches, and one or more translation lookaside buffers (TLBs).
Instructions in the instruction caches may be copies of
instructions in memory 1004 or storage 1006, and the instruction
caches may speed up retrieval of those instructions by processor
1002. Data in the data caches may be copies of data in memory 1004
or storage 1006 for instructions executing at processor 1002 to
operate on; the results of previous instructions executed at
processor 1002 for access by subsequent instructions executing at
processor 1002 or for writing to memory 1004 or storage 1006; or
other suitable data. The data caches may speed up read or write
operations by processor 1002. The TLBs may speed up virtual-address
translation for processor 1002. In particular embodiments,
processor 1002 may include one or more internal registers for data,
instructions, or addresses. This disclosure contemplates processor
1002 including any suitable number of any suitable internal
registers, where appropriate. Where appropriate, processor 1002 may
include one or more arithmetic logic units (ALUs); be a multi-core
processor; or include one or more processors 1002. Although this
disclosure describes and illustrates a particular processor, this
disclosure contemplates any suitable processor.
[0076] In particular embodiments, memory 1004 includes main memory
for storing instructions for processor 1002 to execute or data for
processor 1002 to operate on. As an example and not by way of
limitation, computer system 1000 may load instructions from storage
1006 or another source (such as, for example, another computer
system 1000) to memory 1004. Processor 1002 may then load the
instructions from memory 1004 to an internal register or internal
cache. To execute the instructions, processor 1002 may retrieve the
instructions from the internal register or internal cache and
decode them. During or after execution of the instructions,
processor 1002 may write one or more results (which may be
intermediate or final results) to the internal register or internal
cache. Processor 1002 may then write one or more of those results
to memory 1004. In particular embodiments, processor 1002 executes
only instructions in one or more internal registers or internal
caches or in memory 1004 (as opposed to storage 1006 or elsewhere)
and operates only on data in one or more internal registers or
internal caches or in memory 1004 (as opposed to storage 1006 or
elsewhere). One or more memory buses (which may each include an
address bus and a data bus) may couple processor 1002 to memory
1004. Bus 1012 may include one or more memory buses, as described
below. In particular embodiments, one or more memory management
units (MMUs) reside between processor 1002 and memory 1004 and
facilitate accesses to memory 1004 requested by processor 1002. In
particular embodiments, memory 1004 includes random access memory
(RAM). This RAM may be volatile memory, where appropriate. Where
appropriate, this RAM may be dynamic RAM (DRAM) or static RAM
(SRAM). Moreover, where appropriate, this RAM may be single-ported
or multi-ported RAM. This disclosure contemplates any suitable RAM.
Memory 1004 may include one or more memories 1004, where
appropriate. Although this disclosure describes and illustrates
particular memory, this disclosure contemplates any suitable
memory.
[0077] In particular embodiments, storage 1006 includes mass
storage for data or instructions. As an example and not by way of
limitation, storage 1006 may include an HDD, a floppy disk drive,
flash memory, an optical disc, a magneto-optical disc, magnetic
tape, or a Universal Serial Bus (USB) drive or a combination of two
or more of these. Storage 1006 may include removable or
non-removable (or fixed) media, where appropriate. Storage 1006 may
be internal or external to computer system 1000, where appropriate.
In particular embodiments, storage 1006 is non-volatile,
solid-state memory. In particular embodiments, storage 1006
includes read-only memory (ROM). Where appropriate, this ROM may be
mask-programmed ROM, programmable ROM (PROM), erasable PROM
(EPROM), electrically erasable PROM (EEPROM), electrically
alterable ROM (EAROM), or flash memory or a combination of two or
more of these. This disclosure contemplates mass storage 1006
taking any suitable physical form. Storage 1006 may include one or
more storage control units facilitating communication between
processor 1002 and storage 1006, where appropriate. Where
appropriate, storage 1006 may include one or more storages 1006.
Although this disclosure describes and illustrates particular
storage, this disclosure contemplates any suitable storage.
[0078] In particular embodiments, I/O interface 1008 includes
hardware, software, or both providing one or more interfaces for
communication between computer system 1000 and one or more I/O
devices. Computer system 1000 may include one or more of these I/O
devices, where appropriate. One or more of these I/O devices may
enable communication between a person and computer system 1000. As
an example and not by way of limitation, an I/O device may include
a keyboard, keypad, microphone, monitor, mouse, printer, scanner,
speaker, still camera, stylus, tablet, touch screen, trackball,
video camera, another suitable I/O device or a combination of two
or more of these. An I/O device may include one or more sensors.
This disclosure contemplates any suitable I/O devices and any
suitable I/O interfaces 1008 for them. Where appropriate, I/O
interface 1008 may include one or more device or software drivers
enabling processor 1002 to drive one or more of these I/O devices.
I/O interface 1008 may include one or more I/O interfaces 1008,
where appropriate. Although this disclosure describes and
illustrates a particular I/O interface, this disclosure
contemplates any suitable I/O interface.
[0079] In particular embodiments, communication interface 1010
includes hardware, software, or both providing one or more
interfaces for communication (such as, for example, packet-based
communication) between computer system 1000 and one or more other
computer systems 1000 or one or more networks. As an example and
not by way of limitation, communication interface 1010 may include
a network interface controller (NIC) or network adapter for
communicating with an Ethernet or other wire-based network or a
wireless NIC (WNIC) or wireless adapter for communicating with a
wireless network, such as a WI-FI network. This disclosure
contemplates any suitable network and any suitable communication
interface 1010 for it. As an example and not by way of limitation,
computer system 1000 may communicate with an ad hoc network, a
personal area network (PAN), a local area network (LAN), a wide
area network (WAN), a metropolitan area network (MAN), or one or
more portions of the Internet or a combination of two or more of
these. One or more portions of one or more of these networks may be
wired or wireless. As an example, computer system 1000 may
communicate with a wireless PAN (WPAN) (such as, for example, a
BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular
telephone network (such as, for example, a Global System for Mobile
Communications (GSM) network), or other suitable wireless network
or a combination of two or more of these. Computer system 1000 may
include any suitable communication interface 1010 for any of these
networks, where appropriate. Communication interface 1010 may
include one or more communication interfaces 1010, where
appropriate. Although this disclosure describes and illustrates a
particular communication interface, this disclosure contemplates
any suitable communication interface.
[0080] In particular embodiments, bus 1012 includes hardware,
software, or both coupling components of computer system 1000 to
each other. As an example and not by way of limitation, bus 1012
may include an Accelerated Graphics Port (AGP) or other graphics
bus, an Enhanced Industry Standard Architecture (EISA) bus, a
front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an
Industry Standard Architecture (ISA) bus, an INFINIBAND
interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro
Channel Architecture (MCA) bus, a Peripheral Component Interconnect
(PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology
attachment (SATA) bus, a Video Electronics Standards Association
local (VLB) bus, or another suitable bus or a combination of two or
more of these. Bus 1012 may include one or more buses 1012, where
appropriate. Although this disclosure describes and illustrates a
particular bus, this disclosure contemplates any suitable bus or
interconnect.
[0081] Herein, a computer-readable non-transitory storage medium or
media may include one or more semiconductor-based or other
integrated circuits (ICs) (such, as for example, field-programmable
gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk
drives (HDDs), hybrid hard drives (HHDs), optical discs, optical
disc drives (ODDs), magneto-optical discs, magneto-optical drives,
floppy diskettes, floppy disk drives (FDDs), magnetic tapes,
solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or
drives, any other suitable computer-readable non-transitory storage
medium or media, or any suitable combination of two or more of
these, where appropriate. A computer-readable non-transitory
storage medium or media may be volatile, non-volatile, or a
combination of volatile and non-volatile, where appropriate.
[0082] Herein, "or" is inclusive and not exclusive, unless
expressly indicated otherwise or indicated otherwise by context.
Therefore, herein, "A or B" means "A, B, or both," unless expressly
indicated otherwise or indicated otherwise by context. Moreover,
"and" is both joint and several, unless expressly indicated
otherwise or indicated otherwise by context. Therefore, herein, "A
and B" means "A and B, jointly or severally," unless expressly
indicated otherwise or indicated otherwise by context.
[0083] This disclosure encompasses all changes, substitutions,
variations, alterations, and modifications to the example
embodiments herein that a person having ordinary skill in the art
would comprehend. Moreover, reference in the appended claims to an
apparatus or system or a component of an apparatus or system being
adapted to, arranged to, capable of, configured to, enabled to,
operable to, or operative to perform a particular function
encompasses that apparatus, system, component, whether or not it or
that particular function is activated, turned on, or unlocked, as
long as that apparatus, system, or component is so adapted,
arranged, capable, configured, enabled, operable, or operative.
[0084] Moreover, although this disclosure describes and illustrates
respective embodiments herein as including particular components,
elements, functions, operations, or steps, any of these embodiments
may include any combination or permutation of any of the
components, elements, functions, operations, or steps described or
illustrated anywhere herein that a person having ordinary skill in
the art would comprehend.
* * * * *