Apple Inc. v. Samsung Electronics Co. Ltd. et al
Filing
75
AMENDED COMPLAINT for Federal False Designation of Origin and Unfair Competition, Federal Trademark Infringement, Federal Trade Dress Dilution, State Unfair Business Practices, Common Law Trademark Infringement, Unjust Enrichment, and Patent Infringement against Samsung Electronics America, Inc., Samsung Electronics Co. Ltd., Samsung Telecommunications America, LLC. Filed byApple Inc.. (Attachments: #1 Exhibit 1, #2 Exhibit 2, #3 Exhibit 3, #4 Exhibit 4, #5 Exhibit 5, #6 Exhibit 6, #7 Exhibit 7, #8 Exhibit 8, #9 Exhibit 9, #10 Exhibit 10, #11 Exhibit 11, #12 Exhibit 12, #13 Exhibit 13, #14 Exhibit 14, #15 Exhibit 15, #16 Exhibit 16, #17 Exhibit 17, #18 Exhibit 18, #19 Exhibit 19, #20 Exhibit 20, #21 Exhibit 21, #22 Exhibit 22, #23 Exhibit 23, #24 Exhibit 24, #25 Exhibit 25, #26 Exhibit 26, #27 Exhibit 27, #28 Exhibit 28, #29 Exhibit 29, #30 Exhibit 30, #31 Exhibit 31, #32 Exhibit 32, #33 Exhibit 33, #34 Exhibit 34, #35 Exhibit 35)(Jacobs, Michael) (Filed on 6/16/2011)
Exhibit 4
111111111111111111111111111111111111111111111111111111111111111111111111111
US007844915B2
(54)
(75)
United States Patent
(10)
Platzer et al.
(12)
(45)
APPLICATION PROGRAMMING
INTERFACES FOR SCROLLING
OPERATIONS
Patent No.:
US 7,844,915 B2
Date of Patent:
Nov. 30, 2010
7,009,626 B2
3/2006 Anwar
7,088,374 B2
10/2006 Drucker et al.
7,173,623 B2
Inventors: Andrew Platzer, Santa Clara, CA (US);
Scott Herz, Santa Clara, CA (US)
8/2006 David et al.
7,117,453 B2
2/2007 Calkins et al.
Notice:
3/2008 Swartz et al.
Assignee: Apple Inc., Cupertino, CA (US)
( *)
2/2008 Guido et al.
7,346,850 B2
(73)
7,337,412 B2
Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
U.S.c. 154(b) by 583 days.
(21)
Filed:
FOREIGN PATENT DOCUMENTS
Appl. No.: 11/620,717
(22)
(Continued)
EP
1517228
3/2005
Jan. 7,2007
(65)
Prior Publication Data
US 2008/0168384 Al
(Continued)
Jul. 10, 2008
OTHER PUBLICATIONS
(51)
(52)
(58)
Int. Cl.
G06F 3/00
G06F 3/033
G06F 3/041
G06F 3/048
U.S. Cl.
(2006.01)
(2006.01)
(2006.01)
(2006.01)
Toshiyuki Masui et al; "Elastic Graphical Interfaces for Precise Data
Manipulation", 1995; ACM; pp. 143-144.*
715/781; 715/784; 715/800;
345/173
715/764,
Field of Classification Search .
715/765, 784, 786, 788, 800, 864, 866, 973,
715/974; 345/156,157,169,173
See application file for complete search history.
Primary Examiner-Xiomara L. Bautista
(74) Attorney, Agent, or Firm-Blakely, Sokoloff, Taylor &
ZafmanLLP
(56)
(Continued)
(57)
References Cited
At least certain embodiments of the present disclosure
include an environment with user interface software interacting with a software application. A method for operating
through an application programming interface (API) in this
environment includes transferring a set bounce call. The
method further includes setting at least one ofmaximum and
minimnm bounce values. The set bounce call causes a bounce
of a scrolled region in an opposite direction of a scroll based
on a region past an edge ofthe scrolled region being visible in
a display region at the end of the scroll.
U.S. PATENT DOCUMENTS
5,534,893
5,903,902
6,028,602
6,486,896
6,677,965
6,741,996
6,839,721
6,903,927
6,957,392
6,958,749
A
7/1996 Hansen et al.
A
5/1999 Orr et al.
A
2/2000 Weidenfeller et al.
Bl
1112002 Ubillos
Bl * 112004 Ullmann et al.
Bl
5/2004 Brechner et al.
B2
112005 Schwols
B2
6/2005 Anlauff
B2
10/2005 Simister et al.
Bl * 10/2005 Matsushita et al
ABSTRACT
715/786
21 Claims, 37 Drawing Sheets
345/175
RECEIVE A USER INPUT
1Q2
CREATE AN EVENT OBJECT IN
RESPONSE TO THE USER INPUT
JM
I
DETERMINE WHETHER THE EVENT OBJECT
INVOKESASCROLL~GESTURE
OPERATION
1illi
ISSUE AT LEAST ONE SCROlL OR
GESTURE CAlL BASEOON INVOKING
TKE SCROLL OR GESTUREOPERATION
lQ..8.
RESPOND TO AT LEAST ONESCROLL CALL,
IF ISSUED, SCROlL A WINDOW HAVING A
VIEW ASSOCIATED WITH THE EVENT OBJECT
BAS8) ON AN AMOUNT OF A SCROLL WITH
THE SCROLL STOPPED AT A PREDETERMINED
POSITION rNRELATIONTOTHEUSER INPUT
11Il
RESPONDTOATLEASTONEGESTURECALL
IFISSUED,CHANGEAVIEWASSOCIATED
WITH THE EVENT OBJECT BASED ON
RECEIVING A PLURA.LlTY OF INPUT POINTS
IN THE FORM OFTHEUSERINPUT
112
I
US 7,844,915 B2
Page 2
u.s. PATENT DOCUMENTS
7,561,159
7,576,732
200110045949
2002/0194589
2003/0095096
2003/0122787
2003/0132959
2003/0160832
2003/0174149
2004/0021676
2004/0021698
2004/0100479
2004/0215643
2004/0222992
2004/0224638
2005/0057524
2005/0088443
2005/0193015
2006/0038796
2006/0190833
2006/0236263
2007/0055967
2007/0075965
2007/0174257
2007/0185876
2007/0252821
2007/0288856
2008/0005703
2008/0016096
2008/0034029
2008/0048978
2008/0168395
2008/0231610
2009/0259969
B2
B2 *
Al
Al
Al
Al
Al
Al
Al
Al
Al
Al
Al
Al
Al
Al *
Al
Al
Al *
Al
Al *
Al
Al
Al
Al
Al *
Al
Al *
Al
Al
Al *
Al *
Al *
Al *
7/2009
8/2009
1112001
12/2002
5/2003
7/2003
7/2003
8/2003
9/2003
2/2004
2/2004
5/2004
10/2004
1112004
1112004
3/2005
4/2005
9/2005
2/2006
8/2006
10/2006
3/2007
4/2007
7/2007
8/2007
1112007
12/2007
112008
112008
2/2008
2/2008
7/2008
9/2008
10/2009
Abel et al.
Lii
Chithambaram et al.
Cristofalo et al.
Robbin et aI.
Zimmerman et al.
Simister et aI.
Ridgley et aI.
Fujisaki et al.
Chen et al.
Baldwin et al.
Nakano et al.
Brechner et aI.
Calkins et al.
Fadell et al.
Hill et al.
Blanco et al.
Logston et al.
Hinckley et al.
SanGiovanni et al.
Bathiche et al.
Poff et al.
Huppi et al.
Howard
Mendis et aI.
Hollemans et al.
Budin et al.
Radivojevic et al.
Wilding et al.
Fang et al.
Trent et aI
Ording et al.
Hotelling et al.
Pallakoff
FOREIGN PATENT DOCUMENTS
GB
GB
2319591 A
2319591 A
*
5/1998
5/1998
345/173
WO
WO
WO
WO
WO
WO-2006/067711
WO 2008/085848 Al
WO 2008/085877 Al
WO-2008085848
WO-2008085877
*
*
6/2006
7/2008
7/2008
7/2008
7/2008
OTHER PUBLICATIONS
345/173
345/173
715/786
345/173
715/863
345/157
715/833
345/173
715/808
Office Action, U.S. Appl. No. 111620,723, mailed Apr. 1, 2009, 8
pages.
Office Action, U.S. Appl. No. 111620,709, mailed Apr. 1, 2009, 8
pages.
Office Action, U.S. Appl. No. 111620,720, mailed Jun. 23, 2009, 17
pages.
Office Action, U.S. Appl. No. 111620,720, mailed Dec. 23, 2008, 18
pages.
PCT International Search Report and Written Opinion for PCT International Appln. No. US2008/000058, mailed Jul. 31, 2008 (10
pages).
PCT International Search Report and Written Opinion for PCT International Appln. No. US2008/000089,mailedApr. 6, 2008 (14 pages).
PCT International Search Report and Written Opinion for PCT International Appln. No. PCTIUS2008/000103, mailed Jun. 3, 2008 (15
pages).
PCT International Search Report and Written Opinion for PCT International Appln. No. PCTIUS2008/000069, mailed May 2, 2008 (16
pages).
PCT International Search Report and Written Opinion for PCT International Appin. No. PCTIUS2008/000060, mailed Apr. 22, 2008 (12
pages).
Office Action, U.S. Appl. No. 111620,723, mailed Jun. 8, 2010, 7
pages.
Office Action, U.S. Appl. No. 111620,709, mailed Jun. 9, 2010, 7
pages.
Final Office Action, U.S. Appl. No. 111620,709 mailed Nov. 13,
2009, 8 pages.
Final Office Action, U.S. Appl. No. 111620,723, mailed Nov. 17,
2009., 10 pages.
Office Action, U.S. Appl. No. 111620,720 mailed Nov. 18,2009, 17
pages.
* cited by examiner
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 1 of 37
100
~
RECEIVE A USER INPUT
102
~
CREATE AN EVENT OBJECT IN
RESPONSE TO THE USER INPUT
)04
+
DETERMINE WHETHER THE EVENT OBJECT
INVOKES A SCROLL OR GESTURE
OPERATION
10B
+
ISSUE AT LEAST ONE SCROLL OR
GESTURE CALL BASED ON INVOKING
THE SCROLL OR GESTURE OPERATION
108
+
RESPOND TO AT LEAST ONE SCROLL CALL,
IF ISSUED, SCROLL A WINDOW HAVING A
VIEW ASSOCIATED WITH THE EVENT OBJECT
BASED ON AN AMOUNT OF A SCROLL WITH
THE SCROLL STOPPED AT A PREDETERMINED
POSITION IN RELATION TO THE USER INPUT
11Q
~
RESPOND TO AT LEAST ONE GESTURE CALL,
IF ISSUED, CHANGE A VIEW ASSOCIATED
WITH THE EVENT OBJECT BASED ON
RECEIVING A PLURALITY OF INPUT POINTS
IN THE FORM OF THE USER INPUT
JJ2
FIG. 1
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 2 of 37
200
~
TRANSFER A SET BOUNCE CELL
202
+
SET AT LEAST ONE OF MAXIMUM AND
MINIMUM BOUNCE VALUES
204
+
CAUSE A SLIGHT BOUNCE OF A SCROLLED
REGION IN AN OPPOSITE DIRECTION OF A
SCROLL BASED ON A REGION PAST AN EDGE
OF A CONTENT BEING VISIBLE IN A DISPLAY
REGION AT THE END OF THE SCROLL
aQJi
FIG. 2
300
~
TRANSFER A RUBBERBAND CALL TO CAUSE
RUBBERBANDING A SCROLLED REGION
D1SPLAYED WJTHIN A DISPLAY REGION
302
+
TRANSFER AN EDGE RUBBERBAND CALL TO
SET DISPLACEMENT VALUES FOR AT LEAST
ONE EDGE OF THE DISPLAY REGION
304
FIG. 3
u.s. Patent
US 7,844,915 B2
Sheet 3 of 37
Nov. 30, 2010
:::::::
GUI
DISPLAY
~400
408
/
I
'--
/
"-
ttOoo\
~
"""\
•
•
•
I
I
MOVEMEN T
414
«;(j
I
416
I
V- '--
1/
INFORMATION
412·1
I
INFORMATION
I
412·2
INFORMATION
412-3
INFORMATION
412·4
I
•
•
•
.J
WINDOW
410
I
'--/
\...
\.
G
FIG. 4
.J
u.s. Patent
US 7,844,915 B2
Sheet 4 of 37
Nov. 30, 2010
:::::
GUI
DISPLAY
408
~400
(
/
/
,--,'
\
"000\
c
""\
/
"
•
•
•
I
INFORMATION
__ _ _ _ _ _ _ _
±12_-1_--'
I
VELOCITY ,-510-1
DISTANCE
512-1
TERMINUS.
514
"---
"_~~-r--------_-/J
"-'--r/-------------'
WINDOW - - . / /
410
FIG. SA
u.s. Patent
US 7,844,915 B2
Sheet 5 of 37
Nov. 30, 2010
r=
GUI
DISPLAY
408
~400
(
<.-1'\
\
...,
01000\
C
\
'\
•
•
•
INFORMATION
TERMINUS
_
514
WINDOW
410
-
~
- - -- /
v
V
412-1
8
~
~
FIG. 58
u.s. Patent
US 7,844,915 B2
Sheet 6 of 37
Nov. 30, 2010
,::::::
GUI
DISPLAY
408
,r-400
I
I
/
---'
\
00000\
0
V
- - - --
J
INFORMATION
412-1
DISTANCE
512-1
TERMINUS. _ -
514
- - \.
~-
//
WINDOW
410
--
v
\..
/
8
FIG.5C
VELOCITY
510-2
I
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 7 of 37
PORTABLE MULTIFUNCTION DEVICE
100
3500A
(
~~O2
Current Time
(.
Mailboxes
3512-1
PROXIMITY
SENSOR .1QQ
OPTICAL
SENSOR 1Q.4
1
502
~O4
3510-2
Bruce Walker~
January 30, 2006"'"
K'1m Broo k"'3506·3
"
•
4126-
~504
6 .
Inbox
3506·2
I):J
January 30, 2006"'"
Lunch meeting today -d508 -2
3510-3
3508-3
Draft agreement ".~
I
I
I
Bob Adams
Project Orion
•
3512-2
January 29 2006
I
r...-- 3514
I
I
Darin Adler
-',
"
fantasy football
Aaron Jones
January 29, 2006
January 29, 2006
Fwd: status report
Kim Brook
January 28, 2006
Re: proposal
3532
(J)
3520
rn
3522-
MICROPHONE
ill
~3518
0 9
3524
~
~
FIG.6A
3526
[ZJ
lS.10
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 8 of 37
PORTABLE MULTIFUNCTION DEVICE
100
J
_
SPEAKER
3500A ( . 111
(
.L::]402
eo:
0:
C'oli
( Mailboxes
OPTICAL
SENSOR 1Q!
Cu rrent Tim e
Y502
PROXIMITY
SENSOR 1~
404
.:J:l
406
~504
Inbox
Aaron Jones
3506-1
3510 1
January 30 2006"J Re: P'
. 3508-1
roJect 0 non "J
3534
3512-1
3506-2
3510-2
., Bruce Walker"J
_ January 30,2006"-'
Lunch meeting todayJ~08.2
.:1530
".J
1
K'I m Broo k 3506-3
".J
3510-3
January 30, 2006"-'
r-.-- 3514
I
I
3508- 31
O f t -v
ra t agreemen
I
Bob Adams
~
Project Orion
3512- 2Darin
•
January 29, 2006
\1
I
Adler
January 29, 2006
fantasy football
Aaron Jones
January 29, 2006
Fwd: status report
"
-"
~ 3518
CD w 0 9
3520
3522
3524
MICROPHONE
ill
~
~
FIG. 68
3526
[Z]
;1510
u.s. Patent
US 7,844,915 B2
Sheet 9 of 37
Novo 30, 2010
PORTABLE MULTIFUNCTION DEVICE
100
(.
3500A
01
N~
Ni
111
OPTICAL
SENSOR 1&..4
PROXIMITY
SENSOR16Ei
(
col
~I
J
SPEAKER
~402
404
Current Time
( Mailboxes
Y502
C
cY
Inbox
406
504
1536
Aaron Jones J506-1
3510-1
Re: PrOJecto' ~
.
non 3508-1
3512-1
•
3506-2
January 3D, 2006"./
3510-2
Bruce Walker""'
January 30,2006""'
Lunch meeting today J508-2
K1m Broo k""'
3506-3
O
I
I
3530
3510-3
January 30, 2006"'-'
ora ft agreement""' r..-- 3514
3508·3 I
I
Bob Adams
~
January 29, 2006
\ 1
Project Orion
I
3512- 2
0 ar in Adler
•
fantasy football
January 29, 2006
"-V-
(J) L±J 0
3520
3522
3524
MICROPHONE
ill
~
~
FIG.6C
3518
9
3526
[2J
3510
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 10 of 37
PORTABLE MULTIFUNCTION DEVICE
100
3500A
(,
J
.
SPEAKER
111
PROXIMITY
SENSOR .166
OPTICAL
SENSOR ,lQ4
!
.L:::J 402
~I
N:
Current Time
( .
Mailboxes
Y502
404
Inbox
II):J
406
(D-3504
Aaron Jones ""
3506-1
3510 1
January 30 , 2006"" Re: P'
.
rOject 0 non 3508-1
3534
'V.
3512-1
•
3506-2
3510-2
January 30, 2006""
Lunch meeting todayJ508-2
1Q30
3510-3
Kim BrookJ506-3
January 30, 2006""
Draft agreement 3508-3
Bruce Walker""'
"J
Bob Adams
January 29, 2006
Project Orion
3512- 20 in Adler
January 29, 2006
ar
•
fantasy football
Aaron Jones
January 29, 2006
Fwd: status report
~3518
(j)
3520
rn 0 9
3522
MICROPHONE
ill
3524
@
204
FIG. 60
3526
[Z]
3510
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 11 of 37
700
~
TRANSFER A DIRECTIONAL SCROLL CALL
TO DETERMINE IF DIRECTIONAL SCROLLING
IS ENABLED
702
~
TRANSFER A OJ REeTIONAl SCROLL ANGLE
CALL TO SET A SCROLL ANGLE FOR LOCKING
THE SCROLLING IN AT LEAST ONE OF A
VERTICAL OR A HORIZONTAL DIRECTION
704
+
LOCK THE SCROLLING IN THE HORIZONTAL
DIRECTION IF A USER INPUT FORMS AN
ANGLE WlTH A HORIZONTAL DIRECTION THAT
IS LESS THAN OR EQUAL TO A F~RST SCROLL
ANGLE
706
~
LOCK THE SCROLLING IN THE VERTICAL
DIRECTION IF A USER INPUT FORMS AN
ANGLE WITH A VERTICAL DIRECTION THAT
IS LESS THAN OR EQUAL TO A SECOND
SCROLL ANGLE
708
FIG. 7
u.s. Patent
Nov. 30, 2010
r
\
r
,
\
\
/
\
\
\
810
\
\
\
\
\
\
I
J
\
r
\
r
\ r
\ r
--_
80a-- --__
1
I
1
;1
\
-_...
US 7,844,915 B2
Sheet 12 of 37
--- --- --.. -- ---
\/
____ \1 __ -
_ ....
_-----
1\
..... ---
---. ---~
1 \
I \
I
\
J
\
_-----
r
\
I
\
\
\
I
/
I
'812
/
J
I
,
/
I
/
\
\
\
\
\
\
\
\
\
\
804
FIG. 8
_
-- -- --- --
_ 806
802
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 13 of 37
900
~
TRANSFER A DECELERATION SCROLL CALL
TO SET A DECELERATION FACTOR FOR A
DRAG USER INPUT THAT INVOKES A SCROLL
902
~
SLOW THE SCROLL TO A STOP BASED
ON THE SPEED OFTHE DRAG USER INPUT
904
FIG. 9
1000
~
TRANSFER A SCROLL HYSTERESIS CALL TO
DETERMINE WHETHER THE USER INPUT
INVOKES A SCROLL
1Q02
~
SET THE HYSTERESIS VALUE FOR
DETERMINING WHETHER A USER INPUT
INVOKES A SCROLL
lQG4
FIG. 10
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 14 of 37
1100
~
TRANSFER A SCROLL INDICATOR CALL TO
DETERM INE WHETHER AT LEAST ONE
SCROLL INDICATOR ATTACHES TO A SCROLL
REGION OR A WINDOW EDGE
llQ2
+
OPTIONALLY ATTACH SCROLL INDICATORS
TO A SCROLL REGION BASED ON
THE SCROLL INDICATOR CALL
1104
+
OPTIONALLY ATIACH SCROLL INDICATORS
TO A WINDOW EDGE BASED ON
THE SCROLL INDICATOR CALL
1106
FIG. 11
1200
~
TRANSFER AN INADVERTENT USER INPUT
CALL TO DETERMINE WHETHER THE USER
INPUT WAS INADVERTENT
1202
+
IGNORE THE INADVERTENT USER INPUT
BASED ON THE INADVERTENT USER INPUT
CALL
1204
FIG. 12
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 15 of 37
1300
~
TRANSFER A HANDLE GESTURE EVENT CALL
1302
+
TRANSFER A GESTURE CHANGE CALL IN
RESPONSE TO THE HANDLE GESTURE
EVENT CAll
1304
FIG. 13
1400
~
TRANSFER A SCALING TRANSFORM CALL
TO DETERMINEA SCALING TRANSFORM
FOR A VI8N ASSOCIATED WITH A USER
INPUT HAVING A PLURALITY OF INPUT POINTS
1402
+
TRANSFER A SCALING GESTURE START
CALL
1404
+
TRANSFER A SCALING GESTURE PROGRESS
CALL
1406
~
TRANSFER A SCALING GESTURE END
CAll
1408
FIG. 14
u.s. Patent
Nov. 30, 2010
Sheet 16 of 37
1502
FIG. 15
US 7,844,915 B2
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 17 of 37
'V
1..0
~)
\
r-------------r-----~===-----~--------------l
I
I
~
'V
I
I
:
:~)
I
~\j
Obs
~
I
I
I
I
r
I
I
:
(
I
I
I
I
r
I
J
•
(!)
LL
-
I
I
J
L-------------L---~~~_7------~--------------~
CD
C>
~(
r------Ir========~.,--------I
I
(
)
1
I
I
'V
1..-
I
'V~)
I
I
I
I
f6
j
~\j
I
I
r
I
1
I
I
I
1______
(
O~
I
I
I
I
I
I
_
I
I
J
•
-
C)
LL
u.s. Patent
Nov. 30, 2010
Sheet 18 of 37
US 7,844,915 B2
()
(Q
.,...
•
C)
LL
-
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 19 of 37
1700
~
TRANSFER A ROTATION TRANSFORM CALL
TO DETERM INE A ROTATION TRANSFORM
FOR A VIEW ASSOCIATED WITH A USER
INPUT HAVING A PLURALITY OF INPUT POINTS
1702
+
TRANSFER A START ROTATION GESTURE
CALL
1704
~
TRANSFER ROTATfON GESTURE
PROCESS CALL
1706
~
TRANSFER A ROTATION GESTURE END
CALL
1708
FIG. 17
u.s. Patent
Nov. 30, 2010
Sheet 20 of 37
US 7,844,915 B2
1800
r--------.
~
NO
CALCULATE NEXT
STATE
1806
NO
NOTIFY
DELEGATE
1810
FIG. 18
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 21 of 37
1900
~
START AT LEAST TWO ANIMATIONS
.1902
~
DETERMINE THE PROGRESS OF EACH
ANIMATION
1904
~
UPDATE EACH OF AT LEAST TWO
ANIMATIONS BASED ON A SINGLE TIMER
1906
FIG. 19
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 22 of 37
2000
~
PROVIDE A SINGLE ANIMATION TIMER
2002
~
ANIMATE A PLURALITY OF ANIMATIONS
WITH THE SINGLE ANIMATION TIMER
2004
FIG. 20
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 23 of 37
2100
~
SET ATTRIBUTES OF VIEWS
INDEPENDENTLY WITH EACH VIBN BEING
ASSOCIATED WITH PROCESS
2102
l
TRANSFER A SYNCHRONIZATION CALL
TO SYNCHRONIZE ANIMATIONS FOR THE
MULTIPLE VIEWS OF THE DISPLAY
2104
~
TRANSFER A SYNCHRONIZATION
CONFIRMATION MESSAGE WHEN A
SYNCHRONIZATION FLAG IS ENABLED BASED
ON THE LIST OF THE PROCESS BEING
SYNCHRONIZED
2106
!
UPDATE THE ATTRIBUTES
OF THE VIEWS INDEPENDENTLY
2108
r
TRANSFER A START ANIMATION CALL TO
DRAW THE REQUESTED ANIMATIONS
2110
FIG. 21
u.s. Patent
Nov. 30, 2010
Sheet 24 of 37
2200
FIG.22A
2200
FIG. 228
US 7,844,915 B2
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 25 of 37
2300
{'J
CONSTRUCT A DATA STRUCTURE HAVING
A HIERARCHY OF LAYERS WITH A
LAYER BEING ASSOCIATED WITH A
VIEW AND OWNING THE VIEW
2302
+
REMOVE THE LAYER FROM THE DATA
STRUCTURE
2304
~
SWITCH OWNERSHIP OF THE VIEW
FROM THE LAYER TO THE VIEW
230a
FIG. 23
2400
{'J
CONSTRUCT A DATA STRUCTURE HAVING
A HIERARCHY OF LAYERS WITH A
LAYER BEING ASSOCIATED WITH A
VIEW
2402
+
STORE THE DATA STRUCTURE IN MEMORY
2404
+
MAINTAIN A RETAINED COUNT OFTHE
NUMBER OF REFERENCES TO THE VIEW
FROM OTHER OBJECTS
2406
~
DEALLOCATE THE VIEW FROM MEMORY
IF THE RETAI NED COUNT IS ZERO
2408
FIG. 24
u.s. Patent
Nov. 30, 2010
Sheet 26 of 37
2508
2512
FIG.25A
FIG. 258
US 7,844,915 B2
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 27 of 37
2600
,["-J
CONSTRUCT A DATA STRUCTURE HAVI NG
A HIERARCHY OF LAYERS ASSOCIATED
WITH THE USER INTERFACE OF THE
DEVICE
2402
~
DETERM INE WHETHER EACH LAYER OF THE
DATA STRUCTURE IS ASSOCIATED WITH
MEDIA OR NON~M EDIA CONTENT
2604
~
DETACH MEDIA CONTENT FROM THE DATA
STRUCTURE
2606
~
STORE MEDIA CONTENT IN A FIRST
MEM ORY LOCATION
2_60a
~
STORE NON-MEDIA CONTENT IN A SECOND
MEMORY LOCATION
2.6-1Q
~
COMPOSITE THE MEDIA AND NON-MEDIA
CONTENT FOR DISPLAY ON THE
DEVICE
2~12
FIG. 26
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 28 of 37
/2700
2712
/~
I
j
I
2706~
I
I
I
I
I
I
$ Q GQ
2722
FIG. 27
2732
2742
u.s. Patent
Nov. 30, 2010
Sheet 29 of 37
US 7,844,915 B2
/2800
2838
2832
FIG. 28
Us. Patent
NOll.
30, 2010
Sheet 30 of 37
lIS 7,84 4,915 82
r~
\
\
\
\
\
\
\
\
\
\
III
I
7
I /
l2954
I
I
'/
/ /
/
i
I
(
2958
FIG. 29
2964
u.s. Patent
Nov. 30, 2010
Sheet 31 of 37
Us 7,844,915 B2
3084 3098
r
3070
~
3089
3095
FIG.30A
3084A
3087
3092
;'0/
3070
3088
~
.-/
3089
3091
F/G.30B
~
7J).
•
DISPLAY DEVICE
~
3JQ£
l
ANTENNA
SYSTEM
llQ1
-
DIGITAL AND/OR
ANALOG RF
TRANSCEIVER
310Z
~
~
BACKLIGHT
~
3106.A
STORAGE
DEVICE
3101
o
~
N
AUDIO
TRANSDUCER
3108
MEDIA
PROCESSING
SYSTEM
.3109
aLtQ
INPUT
DEV1CE(S)
o
o
....
rFJ
=-
('D
a
(.H
N
....
o
1
MICROPHONE
SENSOR(S)
z
o
(.H
3..1.03
T
~
~
DIGITAL
PROCESSING
SYSTEM
-
=
1
~
BATIERY
(.H
......:J
3J..O.I
d
110_5
rJl
FIG. 31
~
3100
......:J
00
~
~
\c
U"l
"""'"
=
N
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 33 of 37
/
CACHE
(OPTIONAL)
3200
3208
----...../
3202
3204
,J
MICROPROCESSOR
MEMORY
3206
d
<----,-l----:--1-----,)
BUS
3210
3212
,-J
DISPLAY
CONTROLLER
AND
DISPLAY
DEVICE
(OPTIONAL)
I/O
CONTROLLER(S)
3216
,-J
,...--.-.....-_...%....-_-........
1/0 DEVICE(S)
(E.G" KEYBOARD,
CURSOR CONTROL
DEVICE, NETWORK
INTERFACE)
3214
"-/
FIG. 32
SENSOR(S)
FOR USER
ACTIVITY
\JS '7,844,915 ]32
Sbcct 34 of 31
u.s. -patent
NoV. 30,2010
TEXT
f\G.33A
Sbeet 35 of 31
u.s. -patent
TEXT
f\G.336
u.s. Patent
Nov. 30, 2010
Sheet 36 of 37
3360
FIG.33C
US 7,844,915 B2
u.s. Patent
Nov. 30, 2010
US 7,844,915 B2
Sheet 37 of 37
3400
,r-0
CONSTRUCT A HIERARCHY OFVIEWS
OPERATING ON TOP OF A HIERARCHY OF
LAYERS
1402
+
PROVIDE ACCESS TO THE HIERARCHY OF
VIEWS WITHOUT PROVIDING ACCESS TO THE
HIERARCHY OF LAYERS
3404
FIG. 34
US 7,844,915 B2
1
2
APPLICATION PROGRAMMING
INTERFACES FOR SCROLLING
OPERATIONS
At least certain embodiments of the present disclosure
include an environment with user interface software interacting with a software application. A method for operating
through an application progrannning interface (API) in this
environment includes transferring a set bounce call. The
method further includes setting at least one ofmaximum and
minimum bounce values. The set bounce call causes a bounce
of a scrolled region in an opposite direction of a scroll based
on a region past an edge ofthe scrolled region being visible in
a display region at the end of the scroll.
At least certain embodiments of the present disclosure
include an environment with user interface software interacting with a software application. A method for operating
through an application progrannning interface (API) in this
environment includes transferring a rubberband call. Rubberbanding a scrolled region within a display region occurs by a
predetermined maximum displacement when the scrolled
region exceeds a display edge. The method further includes
transferring an edge rubberband call to set displacement values for at least one edge of the display (e.g., top and bottom
edges, left and right edges).
At least certain embodiments of the present disclosure
include gesture operations for a display of a device. The
gesture operations include performing a scaling transform
such as a zoom in or zoom out in response to a user input
having two or more input points. The gesture operations also
include performing a rotation transform to rotate an image or
view in response to a user input having two or more input
points.
At least certain embodiments of the present disclosure
include a method for performing animations for a display of
a device. The method includes starting at least one animation.
The method further includes determining the progress ofeach
animation. The method further includes completing each animation based on a single timer. The single timer can be based
on a redraw interval of the display hardware.
Various devices which perform one or more of the foregoing methods and machine readable media which, when
executed by a processing system, cause the processing system
to perform these methods, are also described.
Other methods, devices and machine readable media are
also described.
FIELD OF THE DISCLOSURE
This disclosure relates to application progrannning interfaces that provide scrolling operations.
COMPUTER PROGRAM LISTING
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The
copyright owner has no objection to facsimile reproduction
by anyone ofthe patent document or the patent disclosure, as
it appears in the Patent & Trademark Office patent file or
records, but otherwise reserves all copyright rights whatsoever.
Applicant has submitted herewith Computer Program Listings which are included as Appendix A, attached.
10
15
20
BACKGROUND OF THE DISCLOSURE
AnAPI is a source code interface that a computer system or
program library provides in order to support requests for
services from a software application. An API is specified in
terms ofa programming language that can be interpretative or
compiled when an application is built, rather than an explicit
low level description of how data is laid out in memory. The
software that provides the functionality described by an API
is said to be an implementation of the API.
Various devices such as electronic devices, computing systems, portable devices, and handheld devices have software
applications. The API interfaces between the software applications and user interface software to provide a user of the
device with certain features and operations. A user may desire
certain operations such as scrolling, selecting, gesturing, and
animating operations for a display of the device.
Scrolling is the act of sliding a directional (e.g., horizontal
or vertical) presentation ofcontent, such as text, drawings, or
images, across a screen or display window. In a typical
graphical user interface, scrolling is done with the help of a
scrollbar or using keyboard shortcuts often the arrow keys.
Gesturing is a type of user input with two or more input
points. Animating operations include changing content
within a given time period.
The various types of devices may have a limited display
size, user interface, software, API interface and/or processing
capability which limits the ease of use of the devices. User
interfaces of devices implement APIs in order to provide
requested functionality and features. These user interfaces
can have difficulty interpreting the various types of user
inputs and providing the intended functionality associated
with the user inputs.
25
30
35
40
45
50
55
SUMMARY OF THE DESCRIPTION
At least certain embodiments of the present disclosure
include one or more application programming interfaces in an
environment with user interface software interacting with a
software application. Various function calls or messages are
transferred via the application programming interfaces
between the user interface software and software applications. Example application programming interfaces transfer
function calls to implement scrolling, gesturing, and animating operations for a device.
60
65
BRIEF DESCRIPTION OF THE DRAWINGS
The disclosure is described by way of example with reference to the accompanying drawings, wherein:
FIG. 1 is flow chart of a method for responding to a user
input of a data processing device;
FIG. 2 illustrates details of an application progrannning
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 3 illustrates details of an application progrannning
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 4 is a schematic diagram illustrating an embodiment
of user interface of a portable electronic device 400 having a
touch-sensitive display 408;
FIG. 5A-5C illustrate at least some embodiments of user
interface of a portable electronic device 400 having a touchsensitive display;
FIG. 6A-6D illustrate the scrolling of a list of items to a
terminus of the list, at which point an area beyond the terminus is displayed and the list is then scrolled in an opposite
direction until the area beyond the terminus is no longer
displayed, in accordance with some embodiments;
US 7,844,915 B2
3
4
FIG. 7 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 8 illustrates first and second scroll angles for locking
a scroll of a display of a device in a horizontal or vertical
direction according to certain teachings ofthe present disclosure;
FIG. 9 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 10 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 11 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 12 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 13 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 14 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 15 illustrates a display of a device having a scaling
transform of a view:
FIGS. 16A and 16B illustrate a display of a device with a
view having a first and a second scaling factor;
FIG. 16C illustrates changing a view from a scale factor of
2x to a scale factor of I x in at least some embodiments ofthe
present disclosure;
FIG. 17 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 18 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIG. 19 is flow chart of a method for animating views
displayed on a display of a device;
FIG. 20 is flow chart of a method for animating views
displayed on a display of a device;
FIG. 21 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure;
FIGS. 22A and 22B illustrate synchronizing the resizing of
windows of a display of a device;
FIG. 23 illustrates a method for switching ownership of a
view of an application displayed on a display of a data processing device;
FIG. 24 illustrates a method for memory management of a
view of an application displayed on a display of a device;
FIGS. 25A and 258 illustrate a data structure having a
hierarchy oflayers with a layer being associated with a view;
FIG. 26 illustrates a method for compositing media and
non-media content of user interface for display on a device;
FIG. 27 illustrates a data structure or layer tree having a
hierarchy of layers;
FIG. 28 is a perspective view ofa device in accordance with
one embodiment of the present disclosure;
FIG. 29 is a perspective view ofa device in accordance with
one embodiment of the present disclosure;
FIGS. 30A and 30B illustrate a device 3070 according to
one embodiment of the disclosure;
FIG. 31 is a block diagram of a system in which embodiments of the present disclosure can be implemented;
FIG. 32 shows another example of a device in accordance
with one embodiment of the present disclosure;
FIG. 33A is a perspective view of a device in a first configuration (e.g. in a laptop configuration) in accordance with
one embodiment of the present disclosure;
FIG. 33B is a perspective view ofthe device ofFIG. 33A in
a second configuration (e.g. a transition configuration) in
accordance with one embodiment of the present disclosure;
FIG. 33C is a perspective view ofthe device ofFIG. 33A in
a third configuration (e.g., a tablet configuration) in accordance with one embodiment of the present disclosure; and
FIG. 34 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure.
10
15
DETAILED DESCRIPTION
20
25
30
35
40
45
50
55
60
65
Various embodiments and aspects ofthe disclosure will be
described with reference to details discussed below, and the
accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative of the disclosure and are not to be construed as limiting
the disclosure. Numerous specific details are described to
provide a through understanding of various embodiments of
the present disclosure. However, in certain instances, wellknown or conventional details are not described in order to
provide a concise discussion of embodiments of the present
disclosure.
Some portions of the detailed descriptions which follow
are presented in terms ofalgorithms which include operations
on data stored within a computer memory. An algorithm is
generally a self-consistent sequence of operations leading to
a desired result. The operations typically require or involve
physical manipulations of physical quantities. Usually,
though not necessarily, these quantities take the form ofelectrical or magnetic signals capable ofbeing stored, transferred,
combined, compared, and otherwise manipulated. It has
proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements,
symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and
similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to
these quantities. Unless specifically stated otherwise as
apparent from the following discussion, it is appreciated that
throughout the description, discussions utilizing terms such
as "processing" or "computing" or "calculating" or "determining" or "displaying" or the like, can refer to the action and
processes of a data processing system, or similar electronic
device, that manipulates and transforms data represented as
physical (electronic) quantities within the system's registers
and memories into other data similarly represented as physical quantities within the system's memories or registers or
other such information storage, transmission or display
devices.
The present disclosure can relate to an apparatus for performing one or more ofthe operations described herein. This
apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored
in the computer. Such a computer program may be stored in a
machine (e.g. computer) readable storage medium, such as,
but is not limited to, any type of disk including floppy disks,
optical disks, CD-ROMs, and magnetic-optical disks, readonly memories (ROMs), random access memories (RAMs),
erasable programmable ROMs (EPROMs), electrically erasable programmable ROMs (EEPROMs), flash memory, mag-
US 7,844,915 B2
5
6
netic or optical cards, or any type ofmedia suitable for storing
electronic instructions, and each coupled to a bus.
A machine-readable medium includes any mechanism for
storing information in a form readable by a machine (e.g., a
computer). For example, a machine-readable medium
includes read only memory ("ROM"); random access
memory ("RAM"); magnetic disk storage media; optical storage media; flash memory devices; etc.
At least certain embodiments of the present disclosure
include one or application programming interfaces in an environment with user interface software interacting with a software application. Various function calls or messages are
transferred via the application programming interfaces
between the user interface software and software applications. Transferring the function calls or messages may include
issuing, initiating, invoking or receiving the function calls or
messages. Example application programming interfaces
transfer function calls to implement scrolling, gesturing, and
animating operations for a device having a display region. An
API may also implement functions having parameters, variables, or pointers. An API may receive parameters as disclosed or other combinations ofparameters. In addition to the
APIs disclosed, otherAPIs individually or in combination can
perform similar functionality as the disclosed APIs.
The display region is a form of a window. A window is a
display region which may not have a border and may be the
entire display region or area of a display. In some embodiments, a display region may have at least one window and/or
at least one view (e.g., web, text, or image content). A window
may have at least one view. The methods, systems, and apparatuses disclosed can be implemented with display regions,
windows, and/or views.
At least certain embodiments of the present disclosure
include scrolling operations for scrolling a display of a
device. The scrolling operations include bouncing a scrolled
region in an opposite direction of a scroll when a scroll
completes, rubberbanding a scrolled region by a predetermined maximum displacement when the scrolled region
exceeds a display edge, and setting a scrolling angle that locks
the scroll in a horizontal or vertical direction.
At least certain embodiments of the present disclosure
include gesture operations for a display of a device. The
gesture operations include performing a scaling transform
such as a zoom in or zoom out in response to a user input
having two or more input points. The gesture operations also
include performing a rotation transform to rotate an image or
view in response to a user input having two or more input
points.
At least certain embodiments of the present disclosure
include a method for performing animations for a display of
a device. The method includes starting at least one animation.
The method further includes determining the progress ofeach
animation. The method further includes completing each animation based on a single timer. The single timer can be based
on a redraw interval of the display hardware.
At least certain embodiments ofthe disclosure may be part
of a digital media player, such as a portable music and/or
video media player, which may include a media processing
system to present the media, a storage device to store the
media and may further include a radio frequency (RF) transceiver (e.g., an RF transceiver for a cellular telephone)
coupled with an anteuna system and the media processing
system. In certain embodiments, media stored on a remote
storage device may be transmitted to the media player
through the RF transceiver. The media may be, for example,
one or more of music or other audio, still pictures, or motion
pictures.
The portable media player may include a media selection
device, such as a click wheel input device on an iPod® or iPod
Nano® media player from Apple Computer, Inc. of Cupertino, Calif., a touch screen input device, pushbutton device,
movable pointing input device or other input device. The
media selection device may be used to select the media stored
on the storage device and/or the remote storage device. The
portable media player may, in at least certain embodiments,
include a display device which is coupled to the media processing system to display titles or other indicators of media
being selected through the input device and being presented,
either through a speaker or earphone(s), or on the display
device, or on both display device and a speaker or earphone(s). In some embodiments, the display device and input
device are integrated while in other embodiments the display
device and input device are separate devices. Examples of a
portable media player are described in published u.s. patent
application Nos. 2003/0095096 and 2004/0224638, both of
which are incorporated by reference.
Embodiments of the disclosure described herein may be
part of other types of data processing systems, such as, for
example, entertainment systems or personal digital assistants
(PDAs), or general purpose computer systems, or special
purpose computer systems, or an embedded device within
another device, or cellular telephones which do not include
media players, or multi touch tablet devices, or other multi
touch devices, or devices which combine aspects or functions
of these devices (e.g., a media player, such as an iPod®,
combined with a PDA, an entertainment system, and a cellular telephone in one device). In this disclosure, electronic
devices and consumer devices are types of devices.
FIG. 1 is flow chart of a method for responding to a user
input of a device. The method 100 includes receiving a user
input at block 102. The user input may be in the form of an
input key, button, wheel, touch, or other means for interacting
with the device. The method 100 further includes creating an
event object in response to the user input at block 104. The
method 100 further includes determining whether the event
object invokes a scroll or gesture operation at block 106. For
example, a single touch that drags a distance across a display
of the device may be interpreted as a scroll operation. In one
embodiment, a two or more finger touch ofthe display may be
interpreted as a gesture operation. In certain embodiments,
determining whether the event object invokes a scroll or gesture operation is based on receiving a drag user input for a
certain time period. The method 100 further includes issuing
at least one scroll or gesture call based on invoking the scroll
or gesture operation at block 108. The method 100 further
includes responding to at least one scroll call, if issued, by
scrolling a window having a view (e.g., web, text, or image
content) associated with the event object based on an amount
of a scroll with the scroll stopped at a predetermined position
in relation to the user input at block 110. For example, an
input may end at a certain position on a display ofthe device.
The scrolling may continue until reaching a predetermined
position in relation to the last input received from the user.
The method 100 further includes responding to at least one
gesture call, if issued, by changing a view associated with the
event object based on receiving a plurality of input points in
the form of the user input at block 112.
In certain embodiments of the present disclosure scroll
operations include attaching scroll indicators to a content
edge of a display. Alternatively, the scroll indicators can be
attached to the display edge. In some embodiments, user
input in the form of a mouse/finger down causes the scroll
indicators to be displayed on the display edge, content edge,
or window edge ofthe scrolled region. If a mouse/finger up is
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
7
8
then detected, the scroll indicators are faded out from the
display region, content edge, or window edge of the scrolled
region.
In certain embodiments of the present disclosure, gesture
operations include responding to at least one gesture call, if
issued, by rotating a view associated with the event object
based on receiving a plurality ofinput points in the form ofthe
user input. Gesture operations may also include scaling a
view associated with the event object by zooming in or zooming out based on receiving the user input.
In some embodiments, a device includes a display region
having multiple views or windows. Each window may have a
multiple views including superviews and subviews. It is necessary to determine which window, view, superview, or subview is contacted by a user input in the form of a mouse up,
mouse down, or drag, etc. An API can set various modes for
making this determination. In one embodiment, a pass mode
sends mouse down, mouse up, and drag inputs to the nearest
subview. In another embodiment, an intercept on drag mode
sends a drag input to the superview while mouse up and down
inputs are sent to the subview. In another embodiment, an
intercept mode sends all drag, mouse up and down inputs to
the superview. The superview may be scroller software operating as a subclass of a view software. The subview may be
view software operating as a subclass of the user interface
software.
FIG. 2 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to provide a
bounce operation. The method 200 for providing a bounce
operation includes transferring a set bounce call at block 202.
The method 200 further includes setting at least one ofmaximum and minimum bounce values at block 204. The minimum and maximum bounce values may be associated with at
least one edge ofa window that has received a user input. The
method 200 further includes causing a bounce of a scrolled
region in an opposite direction of a scroll based on a region
past the scrolled region being visible in a display region at the
end of the scroll at block 206. The scrolled region may be a
content region.
In certain embodiments ofthe present disclosure, transferring the set bounce call is either one of issuing, initiating,
invoking or receiving the set bounce call.
FIG. 3 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to provide a
rubberband operation. The method 300 for providing a rubberband operation includes transferring a rubberband call to
cause rubberbanding a scrolled region displayed within a
display at block 302. The method 300 further includes transferring an edge rubberband call to set displacement values for
at least one edge ofthe display at block 304. In some embodiments, the displacement values are set for top and bottom
edges, left and right edges, or all edges.
Rubberbanding a scrolled region according to the method
300 occurs by a predetermined maximum displacement value
when the scrolled region exceeds a display edge of a display
of a device based on the scroll. If a user scrolls content of the
display making a region past the edge ofthe content visible in
the display, then the displacement value limits the maximum
amount for the region outside the content. At the end of the
scroll, the content slides back making the region outside of
the content no longer visible on the display.
In certain embodiments ofthe present disclosure, transferring the rubberband call is either one of issuing, initiating,
invoking or receiving the rubberband call.
FIG. 4 is a schematic diagram illustrating an embodiment
of user interface of a portable electronic device 400 having a
touch-sensitive display 408. The display 408 may include a
window 410. The window 410 may include one or more
displayed objects, such as information objects 412-1 to 4124. In an exemplary embodiment, the information objects 412
may correspond to contact information for one or more individuals in a list ofitems. The displayed objects may be moved
in response to detecting or determining movement 414 of a
point of contact with the display, such as that associated with
one or more digits 416 ofa user (which are not drawn to Scale
in FIG. 4). In some embodiments, movement ofthe displayed
objects may be accelerated in response to detecting or determining accelerated movement of the point of contact. While
embodiment 400 includes one window 410, in other embodiments there may be two or more display windows. In addition, while embodiment 400 illustrates movement 414 in a
particular direction, in other embodiments movement of the
displayed obj ects may be in response to movement 414 in one
or more other directions, or in response to a scalar (i.e., a
determined or detected movement independent of the direction).
FIGS. 5A-5C illustrate the scrolling of a list of items on a
device to a terminus of the list, at which point one or more
displayed items at the end of the list smoothly bounce offthe
end ofthe display, reverse direction, and then optionally come
to a stop. FIG. 5A is a schematic diagram illustrating an
embodiment of user interface of a portable electronic device
400 having a touch-sensitive display. One or more displayed
objects, such as information object 412-1 may be a distance
512-1 from a terminus 514 ofthe list ofitems which is an edge
ofa scrolled region and may be moving with a velocity 510-1
while the list is being scrolled. Note that the terminus 514 is
a virtual boundary associated with the displayed objects, as
opposed to a physical boundary associated with the window
410 and/or the display 408. As illustrated in FIG. 5B, when
the one or more displayed objects, such as the information
object 412-1, reach or intersect with the terminus 514, the
movement corresponding to the scrolling may stop, i.e., the
scrolling velocity may be zero at an instant in time. As illustrated in FIG. 5C, the one or more displayed objects, such as
the information 412-1, may subsequently reverse direction.
At a time after the intersection with the terminus 514, the
information object 412-1 may have velocity 510-2 and may
be a distance 512-2 from the terminus 514. In some embodiments, the magnitude of velocity 510-2 may be less than the
magnitude of velocity 510-1 when the distance 512-2 equals
the distance 512-1, i.e., the motion of the one or more displayed objects is damped after the scrolling list reaches and
"bounces" at its terminus.
In at least some embodiments ofthe present disclosure, the
method 200 performs the bounce operations described in
FIGS. 5A-5C. The bounce call transferred at block 202 determines whether a bounce operation is enabled. The maximum
and minimum bounces values determine the amount of
bouncing ofthe scrolled region in an opposite direction ofthe
scroll.
FIGS. 6A-6D illustrate the scrolling of a list of items to a
terminus of the list, at which point an area beyond the terminus is displayed and the list is then scrolled in an opposite
direction until the area beyond the terminus is no longer
displayed, in accordance with some embodiments. The rubberband operation ofmethod 300 is illustrated in the example
of FIGS. 6A-6D with the listed items being email messages.
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
9
10
FIGS. 6A-6D illustrate an exemplary user interface 3500A
for managing an inbox in accordance with some embodiments. An analogous user interface may be used to display
and manage other mailboxes (e.g., drafts, sent, trash, personal, etc.). In addition, other types of lists are possible,
including but not limited to lists of instant message conversations, favorite phone numbers, contact infonnation, labels,
email folders, email addresses, physical addresses, ringtones,
or album names.
If the list of emails fills more than the allotted screen area,
the user may scroll through the emails using vertically
upward and/or vertically downward swipe gestures on the
touch screen. In the example of FIG. 6A, a portion of a list of
emails is displayed in the screen area, including a top displayed email 3530 from Bruce Walker and a bottom displayed
email 3532 from Kim Brook. A user perfonns a vertically
downward swipe gesture 3514 to scroll toward the top of the
list. The vertically downward gesture 3514 need not be
exactly vertical; a substantially vertical gesture is sufficient.
In some embodiments, a gesture within a predetermined
angle of being perfectly vertical results in vertical scrolling.
As a result of detecting the vertically downward gesture
3514, in FIG. 6B the displayed emails have shifted down,
such that the previous bottom displayed email 3532 from Kim
Brook is no longer displayed, the previous top displayed
email 3530 from Bruce Walker is now second from the top,
and the email 3534 from Aaron Jones, which was not displayed in FIG. 6A, is now displayed at the top of the list.
In this example, the email 3534 from Aaron Jones is the
first email in the list and thus is the terminus ofthe list. Upon
reaching this email 3534, in response to continued detection
of the vertically downward gesture 3514, an area 3536 (FIG.
6C) above the first email 3534 (i.e., beyond the terminus of
the list) is displayed. In some embodiments, the area displayed beyond the tenninus of the list is visually indistinct
from the background ofthe list. In FIG. 6C, both the area 3536
and the background ofthe emails (e.g., emails 3534 and3530)
are white and thus are visually indistinct.
Once vertically downward gesture 3514 is complete, such
that a corresponding object is no longer detected on or near
the touch screen display, the list is scrolled in an opposite
direction until the area 3536 is no longer displayed. FIG. 6D
illustrates the result ofthis scrolling in the opposite direction,
the email 3534 from Aaron Jones is now displayed at the top
of the screen area allotted to the list and the area 3536 is not
displayed.
In the example of FIGS. 6A-6D, a vertically downward
gesture resulted in display of an area beyond the first item in
the list. As described in FIG. 3, the values for the predetermined maximum displacement (e.g., display of an area
beyond the first item in the list) are set at block 304 for top and
bottom edges or at block 306 for all edges of the window.
Similarly, a vertically upward gesture may result in display
of an area beyond the last item of the list, if the vertically
upward gesture continues once the list has been scrolled to the
last item. The last item may be considered a tenninus of the
list, similar to the first item. As discussed above, the gesture
need not be exactly vertical to result in vertical scrolling; a
gesture within a predefined range of angles from perfectly
vertical is sufficient.
FIG. 7 illustrates details of an application progranlilling
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to provide a
directional scrolling operation. The method 700 for operating
through an application programming interface (API) includes
transferring a directional scroll angle call to determine if
directional scrolling is enabled at block 702. The method 700
further includes transferring a directional scroll angle call to
set a scroll angle for locking the scrolling in at least one of a
vertical or a horizontal direction at block 704. The method
700 further includes locking the scrolling in the horizontal
direction if a user input fonns an angle with a horizontal
direction that is less than or equal to a first scroll angle at block
706. The method 700 further includes locking the scrolling in
the vertical direction if a user input forms an angle with the
vertical direction that is less than or equal to a second scroll
angle at block 708.
In certain embodiments, a user input in the form of a drag
forms an angle with the horizontal direction that is less than
the first scroll angle. In this case, the user presumably intends
to scroll in the horizontal direction. The scrolling will be
locked in the horizontal direction until the user input exceeds
the first scroll angle. A second scroll angle may be used for
locking the user input in the vertical direction. The second
scroll angle may be set equal to the first scroll angle.
FIG. 8 illustrates first and second scroll angles for locking
a scroll of a display of a device in a horizontal or vertical
direction. The horizontal direction 802 and vertical direction
804 are in reference to a window or a display of a device. As
discussed in the method 700, a user input such as a drag
movement forming an angle with the horizontal direction 802
less than or equal to the first scrolling angle 806 or 808 will
lock the user input in the horizontal direction. In a similar
mauner, a user input fonning an angle with the vertical direction 810 less than or equal to the second scrolling angle 810 or
812 will lock the user input in the vertical direction. The first
and second scrolling angles may be set at the same angle or at
different angles as well. For example, the first and second
scrolling angles may be set at 25 degrees. A user input less
than or equal to 25 degrees with respect to the horizontal or
vertical direction will lock the scrolling in the appropriate
direction.
In some embodiments, the horizontal and vertical locking
angles can be detennined in part by the aspect ofthe content.
For example, content in the fonn of a tall page may receive a
larger vertical locking angle compared to the horizontal locking angle.
FIG. 9 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application progranlilling interface operates in an environment with user interface software
interacting with a software application in order to provide a
deceleration scroll operation. The method 900 for providing
the deceleration scroll operation includes transferring a
deceleration scroll call to set a deceleration factor for a drag
user input at block 902. The method 900 further includes
slowing the scroll to a stop based on the speed ofthe drag user
input and the deceleration factor at block 904.
In certain embodiments, a user input in the form of a drag
invokes a scroll operation for a certain time period. The user
input has a certain speed. The scroll of the scrolled region of
a window or a display region of a display of a device will be
stopped after the user input stops by applying a deceleration
factor to the speed of the user input during the drag movement.
FIG. 10 illustrates details of an application progranlilling
interface in flow chart form according to certain teachings of
the present disclosure. The application progranlilling interface operates in an environment with user interface software
interacting with a software application in order to provide a
scroll hysteresis operation. The method 1000 for providing
the scroll hysteresis operation includes transferring a scroll
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
11
12
hysteresis call to detennine whether a user input invokes a
scroll at block 1002. The method 1000 further includes setting a hysteresis value for determining whether a user input
invokes a scroll at block 1004.
In certain embodiments, a user input in the form of a drag
over a certain distance across a display or window within a
display of a device invokes a scroll operation. The hysteresis
value detennines the certain distance which the user input
must drag across the display or window prior to invoking a
scroll operation. A user input that does not drag the certain
predetermined distance will not invoke a scroll operation and
may be considered a mouse up or down input or other type of
input.
FIG. 11 illustrates details of all application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to attach a
scroll indicator to a scroll region edge or a window edge of a
device. In some embodiments, the scroll region edge is associated with a content edge. The window or display edge may
be associated with the edge of a display region. The method
11 00 for providing the scroll indicator includes transferring a
scroll indicator call to determine whether at least one scroll
indicator attaches to an edge of a scroll region or a window
edge at block 1102. A scroll indicator may be displayed on
any display edge, window edge or scroll region edge. The
method 11 00 further includes optionally attaching at least one
scroll indicator to the edge of the scroll region based on the
scroll indicator call at block 1104. Alternatively, the method
1100 further includes optionally attaching at least one scroll
indicator to the window edge of the view based on the scroll
indicator call at block 1106.
In some embodiments, the operations of method 1100 can
be altered, modified, combined, or deleted. For example,
block 1104 can be deleted. Likewise, block 1106 can be
deleted from the method 1100. Alternatively, the order of
block 1104 and block 1106 can be switched. Other methods
having various operations that have been disclosed within the
present disclosure can also be altered, modified, rearranged,
collapsed, combined, or deleted.
In certain embodiments ofthe present disclosure, transferring the scroll indicator call is either one ofissuing, initiating,
invoking or receiving the scroll indicator call. For example,
the user interface software (e.g., software kit or library) may
receive the scroll indicator call from the software application.
FIG. 12 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to detennine
if an inadvertent user input contacts a view of a display of a
device. The method 1200 includes transferring an inadvertent
user input call to determine whether the user input was inadvertent at block 1202. The method 1200 further includes
ignoring the inadvertent user input based on the detennination of the inadvertent user input call at block 1204. In one
embodiment, the inadvertent user input call comprises a
thumb detection call to determine whether the user input was
an inadvertent thumb.
In certain embodiments ofthe present disclosure, transferring the inadvertent user input call is either one of issuing,
initiating, invoking or receiving the inadvertent user input
call.
A gesture API provides an interface between an application
and user software in order to handle gesturing. Gesturing may
include scaling, rotating, or other changes to a view, window,
or display. A mask may merely pennit certain changes while
limiting or not pennitting other changes. Events of all kinds
come into the application via a graphics framework. They are
enqueued, collaleced if necessary and dispatched. If the
events are system level events (e.g., application should suspend, device orientation has chanted, etc) they are routed to
the application having an instance of a class of the user
interface software. If the events are hand events based on a
user input, the events are routed to the window they occurred
over. The window then routes these events to the appropriate
control by calling the instance's mouse and gesture methods.
The control that receives a mouse down or mouse entered
function will continue to get all future calls until the hand is
lifted. If a second finger is detected, the gesture methods or
functions are invoked. These functions may include start,
change, and end gesture calls. The control that receives start
gesture call will be sent all future change gesture calls until
the gesture ends.
FIG. 13 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to provide a
gesture operation. The method 1300 for providing the gesture
operation includes transferring a handle gesture event call at
block 1302. The method 1300 further includes transferring a
gesture change call in response to the handle gesture event
call at block 1304.
In certain embodiments, a user input in the form of two or
more points is received by a display ofa device. A multi-touch
driver of the device receives the user input and packages the
event into an event object. A window server receives the event
object and determines whether the event object is a gesture
event object. If the window server detennines that a gesture
event object has been received, then user interface software
issues or transfers the handle gesture call at block 1302 to a
software application associated with the view. The software
application confinns that a gesture event has been received
and passes the handle gesture call to a library of the user
interface software. The window server also associates the
gesture event object with the view that received the user input.
The library responds by transferring a gesture change call in
response to the handle gesture event call at block 1304.
In one embodiment, a window or view associated with the
user input receives the change call in order to perfonn the
gesture event. The user software that provides the view
receives a gesture start event call, a gesture changed event
call, a zoom to scale setting for the view, and a gesture end
call. The gesture calls receive an input of a gesture event
which may be base event having a type such as a hand event,
keyboard event, system event, etc. A delegate associated with
the application receives a start gesture call, gesture did change
call, and gesture did finish call. The user software is dynamically linking into the application during the run time of the
gesture process.
In some embodiments, the gesture changed function call
contains the following information about the gesture:
10
15
20
25
30
35
40
45
50
55
the number of fingers currently down;
60
the number of fingers initially down;
the rotation of the hand;
the scale of the hand;
the translation of the hand;
65
the position of the inner and outennost fingers; and
the pressure of the first finger.
US 7,844,915 B2
13
14
In other embodiments, more information about each finger
down may be included as follows.
to represent that a larger portion of content is not being
displayed on display 1652 in FIG. 16B as a result ofthe zoom
in operation.
In at least some embodiments of the present disclosure, a
user desires to change a view 1670 from a scale factor of 2x
to a scale factor of I x as illustrated in FIG. 16C. A first set of
user inputs 1672 and 1674 that move to the second set of user
inputs 1676 and 1678 will decrease the scale factor from 2x to
I x. It may be desirable for the user to scale from 2x to I x
without having to move the user inputs a large distance across
the view 1670. In an environment with user interface software
interacting with a software application, a gesture scaling
transform flag may be set in order to determine a scaling
transform for a view associated with a user input having a
plurality of input points. The scaling transform flag scales
either from a current scale factor to a minimum scale factor or
from the current scale factor to a maximum scale factor. For
example, a flag may be set at the position associated with a
1.5x scale factor and a third set of user inputs 1680 and 1682.
A user desiring to change the scale factor from 2x to I x would
only have to move his fingers, the user inputs, from the first set
1672 and 1674 to the third set 1680 and 1682 if the gesture
scaling transform flag has been set at a scale factor of 1.5x.
FIG. 17 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to provide a
rotation transform of a view, window, or display region of a
display of a device. The method 1700 for providing the rotation transform includes transferring a rotation transform call
to determine a rotation transform for a view associated with a
user input having a plurality ofinput points at block 1702. The
method 1700 further includes transferring a rotation gesture
start call at block 1704. The method 1700 further includes
transferring a scaling gesture progress call at block 1706. The
method 1700 further includes transferring a scaling gesture
end call at block 1708.
In certain embodiments, a user input in the form of two or
more input points rotates to invoke a gesture event that performs a rotation transform on the view associated with the
user input. The rotation transform includes a minimum and
maximum degree of rotation for associated minimum and
maximum rotation views. The user input may temporarily
rotate a view past a maximum degree of rotation prior to the
view snapping back to the maximum degree of rotation.
FIG. 18 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to notify a
delegate of at least one animation associated with a display
region, window, or view ofa display ofa device. A delay in the
animation may be specified by the API. Also, multiple animations may be assigned priority by the API. The method
1800 for notifYing the delegate includes determining whether
any animation occurs at block 1802. The method 1800 further
includes checking the progress ofan animation at block 1804.
If progress has occurred, then the next state (e.g., position,
opacity, or transform) of the animation can be calculated at
block 1806. If progress has completed at block 1806, then at
block 1808 it is determined whether the view associated with
the completed animation is associated with a delegate. If so, a
delegate call is transferred to notify the delegate of the animation for the view at block 1810. The delegate operating
the stage of the finger Oust touch down, fully pressed, lifting
off, etc);
the position of the finger;
the proximity of the finger (how hard you're touching);
the orientation of the finger (what angle the ovoid is at);
10
the length of the major and minor axis,
the velocity of the finger; and
the eccentricity of the finger's ovoid.
A gesture event object may be a chord event object having
a chord count (e.g., number of fingers contacted the view or
display), a chord start event, a chord change event, and a
chord end event. A chord change event may include a scaling
or rotation transform.
FIG. 14 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application in order to provide a
scaling transform of a display region, window, or view of a
display of a device. The method 1400 for providing the scaling transform includes transferring a scaling transform call to
determine a scaling transform for a view associated with a
user input having a plurality ofinput points at block 1402. The
method 1400 further includes transferring a scaling gesture
start call at block 1404. The method 1400 further includes
transferring a scaling gesture progress call at block 1406. The
method 1200 further includes transferring a scaling gesture
end call at block 1408.
In certain embodiments, a user input in the form of two or
more input points (e.g., fingers) moves together or apart to
invoke a gesture event that performs a scaling transform on
the view associated with the user input. A scale transform
includes a minimum and maximum scale factor. FIG. 15
illustrates a display 1502 of a device having a scaling transform of a view. The view 1504 (e.g., web, text, or image
content) has a first scale factor. A user input (e.g., two fingers
moving apart) associated with the view 1504 is interpreted as
a gesture event to zoom out from view 1504 to view 1508
having a second scale factor that exceeds the maximum scale
factor ofthe view 1516. A snapback flag determines whether
the zoom out can proceed past the maximum scale factor to
view 1508 prior to snapping back to the maximum scale
factor associated with view 1516.
FIG. 16A illustrates a display 1604 of a device having a
first scaling factor of a view 1616. A user input (e.g., two
fingers 1608 and 1610 moving together) associated with the
view 1614 is interpreted as a gesture event to zoom in from
view 1614 to view 1664 having a second scale factor as
illustrated in FIG. 16B. The dashed regions 1602 and 1650
represent the total area of the content with the only content
being displayed in the display area 1604 and 1652. In performingthescalingtransformfromFIG.16A to FIG. 16B, the
center of the gesture event, center 1612 for FIG. 16A and
center 1660 for FIG. 16B, remains in the same position with
respect to the display 1604. The scroll indicator 1606 shrinks
to become scroll indicator 1654 during the transform to indicate that a smaller portion of the total content 1650 is being
displayed on display 1604 as a result ofthe zoom in operation.
The dashed region 1650 is larger than the dashed region 1602
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
15
16
under the control ofthe software application can change other
views in response to the view being modified by the animation.
In certain embodiments, software invokes an animation
that performs a scaling transform on the view associated with
the user input. A display may include numerous views. The
view being increased in size by the scaling transform may
obstruct other views in which case the other views may need
to be reduced in size. Alternatively, the view being decreased
in size by the scaling transfonn may create additional area for
other views to increase in size.
FIG. 19 is flow chart of a method for animating a display
region, windows, or views displayed on a display of a device.
The method 1900 includes starting at least two animations at
block 1902. The method 1900 further includes detennining
the progress of each animation at block 1904. The method
1900 further includes completing each animation based on a
single timer at block 1906.
In certain embodiments ofthe present disclosure, the single
timer includes a timer based on a redraw interval which is a
time period between the display of a current frame and a next
frame of the display of the device. In this case, changes in
animation are updated to the display during the redraw interval in order to display the chances during the next frame ofthe
display. The progress of each animation may be calculated
periodically or based upon a progress call.
The method 1900 may further include detennining
whether each animation is associated with a delegate. The
delegate is then notified of the animation. Other views not
associated with an animation may be changed depending on
the software application controlling the delegate.
FIG. 20 is flow chart of a method for animating a display
region, windows, or views displayed on a display of a device.
The method 2000 includes providing a single animation timer
at block 2002. The method 2000 further includes animating a
plurality of animations with the single animation timer at
block 2004. For example, a single timer may control all
animations which occur simultaneously. The animations may
include a transform, a frame, and an opacity animation. A
animation transfonn may include a scaling or rotation transform. A frame animation may include resizing of a frame. An
opacity animation changes the opacity from opaque to transparent or vice versa.
FIG. 21 illustrates details of an application programming
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with multiple software applications or processes
in order to synchronize animations associated with multiple
views or windows ofa display ofa device. The method 2100
for synchronizing the animations includes setting attributes
ofviews independently with each view being associated with
a process at block 2102. For example, an attribute or property
of a view may include a position, size, opacity, etc. An animation alters one or more attributes from a first state to a
second state. The method 2100 further includes transferring a
synchronization call to synchronize animations for the multiple views ofthe display at block 2104. The synchronization
call may include input parameters or arguments such as an
identification of the synchronization of the processes and a
list of the processes that are requesting animation of the
multiple views. In one embodiment, the synchronization call
includes the identification and the number of processes that
are requesting animation. In one embodiment, each application or process sends a synchronization call at different times.
The method 2100 further includes transferring a synchronization confinnation message when a synchronization flag is
enabled at block 2106. The synchronization flag can be
enabled when the processes to be synchronized have each
sent messages to a window server operating the user interface
software. The method 2100 further includes updating the
attributes of the views from a first state to a second state
independently at block 2108. In one embodiment, the window server receives the updated attributes from each process
at different times. The method 2100 further includes transferring a start animation call to draw the requested animations
when both processes have updated attributes associated with
the second state at block 2110.
In some embodiments, a first data structure or layer tree
represents a hierarchy oflayers that correspond to the views
or windows of the processes. A second data structure or
render tree represents a similar copy of the layer tree. However, the render tree is not updated until the independent
processes have completed their separate animations. At this
time, the render tree updates and redraws the screen with the
new animations.
FIGS. 22A and 22B illustrate synchronizing the resizing of
views or windows of a display of a device. For example, a
window 2210 associated with a first process with a size
attribute may increase in size by changing from a first state,
window 2210 in FIG. 22A, to a second state window 2210 in
FIG. 22B. At approximately the same time, a second window
2220 may decrease in size in proportion to the increase in size
ofthe first window 2210. The method 2100 provides synchronization of the resizing of the windows 2210 and 2220 illustrated in FIGS. 22A and 22B. The animations in changing
from the first state to the second state may occur incrementally and occur with the synchronization of method 2100.
FIG. 23 illustrates a method for switching ownership of a
view of an application displayed on a display of a data processing device. The method 2300 includes constructing a data
structure having a hierarchy of layers with a layer being
associated with a view and owning the view at block 2302.
The layers may be content, windows, video, images, text,
media, or any other type of object for user interface of the
application. The method 2300 further includes removing the
layer from the data structure at block 2304. The method 2300
further includes switching ownership of the view from the
layer to the view at block 2306.
In some embodiments, each layer from the data structure is
associated with a view. The layer associated with the view
sends a delegate function call to the view in order to generate
content provided by the view. A first pointer reference points
from the layer to the view. A second pointer reference points
from the view to the layer. The number ofreferences pointing
to an object such as the view is defined as the retained count
ofthe object. The view may receive notification that the layer
will be removed from the data structure. Removing the layer
from the data structure may occur based on the view associated with the layer being removed from the display of the
device. When the layer is removed from the data structure or
layer tree the pointer from the layer to the view will be
removed. The view will have a retained count of zero and be
deallocated or removed from memory if the ownership ofthe
view is not reversed. The view will have a retained count ofat
least one if ownership is reversed.
FIG. 24 illustrates a method for memory management of a
view of an application displayed on a display ofa device. The
method 2400 includes constructing a data structure having a
hierarchy of layers with at least one layer being associated
with the view at block 2402. The method 2400 further
includes storing the data structure in memory at block 2404.
The method 2400 further includes maintaining a retained
count of the number of references to the view from other
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
17
18
objects at block 2406. The method 2400 further includes
deallocating the view from memory if the retained count is
zero at block 2408. As discussed above, the retained count of
the view will be decremented ifthe layer is removed from the
data structure. Removing the layer from the data structure
may occur based on the view associated with the layer being
removed from the display of the device.
FIGS. 25A and 25B illustrate a data structure having a
hierarchy oflayers with a layer being associated with a view.
The data structure includes layers 2502, 2504, and 2506.
Layer 2506 is associated with the view 2510. The layer 2506
associated with the 2510 view sends a delegate call to the
view in order to generate content provided by the view. A first
pointer reference 2508 points from the layer 2506 to the view
2510. A second pointer reference 2512 points from the view
2510 to the layer 2506. A third pointer reference 2532 may
point from user interface CUI) controller 2530 to the view
2510. The VI controller 2530 may control operations associated with the view 2510 such as scrolling the view 2510 in
response to a user input. The view 2510 in FIG. 25A has a
retained count of two based on the pointer references 2508
and 2532.
If the layer 2506 is removed from the data structure as
illustrated in FIG. 25B, then the pointer 2508 is removed.
View 2510 will have a lower retained count as illustrated in
FIG. 25B. Ifview 2510 has a retained count of zero, then the
memory storing the view 2510 will be deallocated.
FIG. 26 illustrates a method for compositing media and
non-media content of user interface for display on a device.
The method 2600 includes constructing a data structure having a hierarchy of layers associated with the user interface of
the device at block 2602. The method 2600 further includes
determining whether each layer of the data structure is associated with media or non-media content at block 2604. The
data structure or layer tree is traversed in order to determine
whether each of the layers of the data structure is associated
with media or non-media content. The method 2600 further
includes detaching a layer associated with media content
from the data structure at block 2606. The method 2600
further includes storing media content in a first memory location at block 2606. The method 2600 further includes storing
non-media content in a second memory location at block
2608. The method 2600 further includes compositing the
media and non-media content for display on the device at
block 2610.
In some embodiments, compositing the media and nonmedia content includes retrieving the media content from the
first memory location, retrieving the non-media content from
the second memory location, and scanning the media and
non-media content directly to the display. The memory location can be any type of memory located in cache, main
memory, a graphics processing unit, or other location within
a device. The media content may include video, video plugin, audio, image, or other time varying media. The media
content may be in the form of a YlN model with the Y
representing a luminance component (the brightness) and V
and V representing chrominance (color) components. The
media content may be scanned to the display at a rate of
substantially twenty to forty frames per second. The media
content may be scaled prior to being scanned to the display of
the device.
The non-media content may include content, views, and
images that do not require frequent updating. The non-media
content may be in the form of a RGB model which is an
additive model in which red, green, and blue (often used in
additive light models) are combined in various ways to repro-
duce other colors. The non-media content may be scanned to
the display at a slower rate compared to the media content.
FIG. 27 illustrates a data structure or layer tree having a
hierarchy oflayers. The layers can be associated with media
and non-media content. For example, layer 2704 is associated
with media content 2706 such as a video. Layer 2710 is
associated with non-media content 2712 which may be user
interface view for the video. Layers 2720,2730, and 2740 are
associated with non-media content 2722, 2732, and 2742,
respectively, that forms the components of the non-media
content 2712. The method 2600 will determine whether each
layer of the data structure is associated with media or noncontent. Any layers associated with media content such as
layer 2704 will be removed from the data structure and processed in a separate memory location.
In some embodiments, the methods, systems, and apparatuses ofthe present disclosure can be implemented in various
devices including electronic devices, consumer devices, data
processing devices, desktop computers, portable computers,
wireless devices, cellular devices, tablet devices, handheld
devices, multi touch devices, multi touch data processing
devices, any combination of these devices, or other like
devices. FIGS. 4-6 and 28-33 illustrate examples of a few of
these devices.
FIG. 28 illustrates a device 2800 according to one embodiment of the disclosure. FIG. 28 shows a wireless device in a
telephone configuration having a "candy-bar" style. In FIG.
28, the wireless device 2800 may include a housing 2832, a
display device 2834, an input device 2836 which may be an
alphanumeric keypad, a speaker 2838, a microphone 2840
and an antenna 2842. The wireless device 2800 also may
include a proximity sensor 2844 and an accelerometer 2846.
It will be appreciated that the embodiment ofFIG. 28 may use
more or fewer sensors and may have a different form factor
from the form factor shown in FIG. 28.
The display device 2834 is shown positioned at an upper
portion of the housing 2832, and the input device 2836 is
shown positioned at a lower portion ofthe housing 2832. The
antenna 2842 is shown extending from the housing 2832 at an
upper portion of the housing 2832. The speaker 2838 is also
shown at an upper portion of the housing 2832 above the
display device 2834. The microphone 2840 is shown at a
lower portion of the housing 2832, below the input device
3286. It will be appreciated that the speaker 2838 and microphone 2840 can be positioned at any location on the housing,
but are typically positioned in accordance with a user's ear
and mouth, respectively.
The display device 2834 may be, for example, a liquid
crystal display (LCD) which does not include the ability to
accept inputs or a touch input screen which also includes an
LCD. The input device 2836 may include, for example, buttons, switches, dials, sliders, keys or keypad, navigation pad,
touch pad, touch screen, and the like. Any well-known
speaker, microphone and antenna can be used for speaker
2838, microphone 2840 and antenna 2842, respectively.
The data acquired from the proximity sensor 2844 and the
accelerometer 2846 can be combined together, or used alone,
to gather information about the user's activities. The data
from the proximity sensor 2844, the accelerometer 2846 or
both can be used, for example, to activate/deactivate a display
backlight, initiate commands, make selections, control scrolling, gesturing, animating or other movement in a display,
control input device settings, or to make other changes to one
or more settings of the device. In certain embodiments ofthe
present disclosure, the device 2800 can be used to implement
at least some of the methods discussed in the present disclosure.
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
19
20
FIG. 29 shows a device 2950 in accordance with one
embodiment of the disclosure. The device 2950 may include
a housing 2952, a display/input device 2954, a speaker 2956,
a microphone 2958 and an optional antenna 2960 (which may
be visible on the exterior ofthe housing or may be concealed
within the housing). The device 2950 also may include a
proximity sensor 2962 and an accelerometer 2964. The
device 2950 may be a cellular telephone or a device which is
an integrated PDA and a cellular telephone or a device which
is an integrated media player and a cellular telephone or a
device which is both an entertainment system (e.g. for playing
games) and a cellular telephone, or the device 2950 may be
other types of devices described herein. In one particular
embodiment, the device 2950 may include a cellular telephone and a media player and a PDA, all contained within the
housing 2952. The device 2950 may have a form factor which
is small enough that it fits within the hand of a normal adult
and is light enough that it can be carried in one hand by an
adult. It will be appreciated that the term "portable" means the
device can be easily held in an adult user's hands (one or
both); for example, a laptop computer and an iPod are portable devices.
In one embodiment, the display/input device 2954 may
include a multi-point touch input screen in addition to being
a display, such as an LCD. In one embodiment, the multipoint touch screen is a capacitive sensing medium configured
to detect multiple touches (e.g., blobs on the display from a
user's face or multiple fingers concurrently touching or
nearly touching the display) or near touches (e.g., blobs on the
display) that occur at the same time and at distinct locations in
the plane of the touch panel and to produce distinct signals
representative of the location of the touches on the plane of
the touch panel for each of the multiple touches.
In certain embodiments of the present disclosure, the
device 2800 can be used to implement at least some of the
methods discussed in the present disclosure.
FIGS. 30A and 30B illustrate a device 3070 according to
one embodiment ofthe disclosure. The device 3070 may be a
cellular telephone which includes a hinge 3087 that couples a
display housing 3089 to a keypad housing 3091. The hinge
3087 allows a user to open and close the cellular telephone so
that it can be placed in at least one of two different configurations shown in FIGS. 30A and 30B. In one particular
embodiment, the hinge 3087 may rotatably couple the display
housing to the keypad housing. In particular, a user can open
the cellular telephone to place it in the open configuration
shown in FIG. 30A and can close the cellular telephone to
place it in the closed configuration shown in FIG. 30B. The
keypad housing 3091 may include a keypad 3095 which
receives inputs (e.g. telephone nnmber inputs or other alphanumeric inputs) from a user and a microphone 3097 which
receives voice input from the user. The display housing 3089
may include, on its interior surface, a display 3093 (e.g. an
LCD) and a speaker 3098 and a proximity sensor 3084; on its
exterior surface, the display housing 3089 may include a
speaker 3096, a temperature sensor 3094, a display 3088 (e.g.
another LCD), an ambient light sensor 3092, and a proximity
sensor 3084A. Hence, in this embodiment, the display housing 3089 may include a first proximity sensor on its interior
surface and a second proximity sensor on its exterior surface.
In at least certain embodiments, the device 3070 may contain components which provide one or more of the functions
of a wireless communication device such as a cellular telephone, a media player, an entertainment system, a PDA, or
other types of devices described herein. In one implementation of an embodiment, the device 3070 may be a cellular
telephone integrated with a media player which plays MP3
files, such as MP3 music files.
Each ofthe devices shown in FIGS. 4, SA, 5B, 5C, 6A, 6B,
6C, 6D, 28, 29, 30A and 30B may be a wireless communication device, such as a cellular telephone, and may include a
plurality of components which provide a capability for wireless communication. FIG. 31 shows an embodiment of a
wireless device 3070 which includes the capability for wireless communication. The wireless device 3070 may be
included in anyone ofthe devices shown in FIGS. 4, SA, 5B,
5C, 6A, 6B, 6C, 6D, 28, 29, 30A and 30B, although alternative embodiments of those devices of FIGS. 4, SA, 5B, 5C,
6A, 6B, 6C, 6D, 28, 29, 30A and 308 may include more or
fewer components than the Wireless device 3070.
Wireless device 3070 may include an antenna system 3101.
Wireless device 3070 may also include a digital and/or analog
radio frequency (RF) transceiver31 02, coupled to the antenna
system 3101, to transmit and/or receive voice, digital data
and/or media signals through antenna system 3101.
Wireless device 3070 may also include a digital processing
system 3103 to control the digital RF transceiver and to
manage the voice, digital data and/or media signals. Digital
processing system 3103 may be a general purpose processing
device, such as a microprocessor or controller for example.
Digital processing system 3103 may also be a special purpose
processing device, such as anASIC (application specific integrated circuit), FPGA (field-progranlillable gate array) or
DSP (digital signal processor). Digital processing system
3103 may also include other devices, as are known in the art,
to interface with other components of wireless device 3070.
For example, digital processing system 3103 may include
analog-to-digital and digital-to-analog converters to interface
with other components of wireless device 3070. Digital processing system 3103 may include a media processing system
3109, which may also include a general purpose or special
purpose processing device to manage media, such as files of
audio data.
Wireless device 3070 may also include a storage device
3104, coupled to the digital processing system, to store data
and/or operating programs for the Wireless device 3070. Storage device 3104 may be, for example, any type of solid-state
or magnetic memory device.
Wireless device 3070 may also include one or more input
devices 3105, coupled to the digital processing system 3103,
to accept user inputs (e.g., telephone numbers, names,
addresses, media selections, etc.) Input device 3105 may be,
for example, one or more of a keypad, a touchpad, a touch
screen, a pointing device in combination with a display device
or similar input device.
Wireless device 3070 may also include at least one display
device 33106, coupled to the digital processing system 3103,
to display information such as messages, telephone call information, contact information, pictures, movies and/or titles or
other indicators of media being selected via the input device
3105. Display device 3106 may be, for example, an LCD
display device. In one embodiment, display device 3106 and
input device 3105 may be integrated together in the same
device (e.g., a touch screen LCD such as a multi-touch input
panel which is integrated with a display device, such as an
LCD display device). The display device 3106 may include a
backlight 3106A to illuminate the display device 3106 under
certain circumstances. It will be appreciated that the Wireless
device 3070 may include multiple displays.
Wireless device 3070 may also include a battery 3107 to
supply operating power to components of the system including digital RF transceiver 3102, digital processing system
3103, storage device 3104, input device 3105, microphone
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
21
22
310A, audio transducer 3108, media processing system 3109,
sensor(s) 3110, and display device 3106. Battery 3107 may
be, for example, a rechargeable or non-rechargeable lithium
or nickel metal hydride battery. Wireless device 3070 may
also include audio transducers 3108, which may include one
or more speakers, and at least one microphone 3105A. In
certain embodiments of the present disclosure, the wireless
device 3070 can be used to implement at least some of the
methods discussed in the present disclosure.
FIG. 32 shows another example ofa device according to an
embodiment ofthe disclosure. This device 3200 may include
a processor, such as microprocessor 3202, and a memory
3204, which are coupled to each other through a bus 3206.
The device 3200 may optionally include a cache 3208 which
is coupled to the microprocessor 3202. This device may also
optionally include a display controller and display device
3210 which is coupled to the other components through the
bus 3206. One or more input/output controllers 3212 are also
coupled to the bus 3206 to provide an interface for input/
output devices 3214 and to provide an interface for one or
more sensors 3216 which are for sensing user activity. The
bus 3206 may include one or more buses connected to each
other through various bridges, controllers, and/or adapters as
is well known in the art. The input/output devices 3214 may
include a keypad or keyboard or a cursor control device such
as a touch input panel. Furthennore, the input/output devices
3214 may include a network interface which is either for a
wired network or a wireless network (e.g. an RF transceiver).
The sensors 3216 may be anyone of the sensors described
herein including, for example, a proximity sensor or an ambient light sensor. In at least certain implementations of the
device 3200, the microprocessor 3202 may receive data from
one or more sensors 3216 and may perfonn the analysis of
that data in the manner described herein. For example, the
data may be analyzed through an artificial intelligence process or in the other ways described herein. As a result of that
analysis, the microprocessor 3202 may then automatically
cause an adjustment in one or more settings of the device.
In certain embodiments of the present disclosure, the
device 3200 can be used to implement at least some of the
methods discussed in the present disclosure.
FIGS. 33A-C show another example of a device according
to at least certain embodiments of the disclosure. FIG. 33A
illustrates a laptop device 3300 with a keyboard 3302, a body
3304, a display frame 3306, and a display 3308. The laptop
device 3300 can be converted into a tablet device as illustrated
in FIG. 33B and FIG. 33C. FIG. 33B illustrates the conversion
ofthe laptop device into a tablet device. An edge of a display
frame 3356 containing a display 3358 is slide within the body
3354 across the top of a keyboard 3352 nntil forming a tablet
device as illustrated in FIG. 33C. The tablet device with a
display 2362 and a display frame 3366 rests on top of a body
3360.
In certain embodiments of the present disclosure, the laptop device 3300 can be used to implement at least some ofthe
methods discussed in the present disclosure.
FIG. 34 illustrates details of an application progrannning
interface in flow chart form according to certain teachings of
the present disclosure. The application programming interface operates in an environment with user interface software
interacting with a software application. In some embodiments, a hierarchy of views operates on top of a hierarchy of
layers within the user interface software. The API operates as
illustrated in method 3400 that includes constructing a hierarchy of views operating on top of a hierarchy of layers at
block 3402. The method 3400 further includes providing
access to the hierarchy of views without providing access to
the hierarchy of layers at block 3404. An application may
interact with the hierarchy of views via the API without
accessing the hierarchy of layers operating below the hierarchy of views.
In some embodiments, a platform provides various scrolling, gesturing, and animating operations. The platfonn
includes hardware components and an operating system. The
hardware components may include a processing unit coupled
to an input panel and a memory coupled to the processor. The
operating system includes one or more programs that are
stored in the memory and configured to be executed by the
processing unit. One or more programs include various
instructions for transferring function calls or messages
through an application progrannning interface in order to
perfonn various scrolling, gesturing, and animating operations.
In an embodiment, the one or more programs include
instructions for transferring a bonnce call through an API to
cause a bounce ofa scrolled region in an opposite direction of
a scroll based on a region past an edge of the scrolled region
being visible in a display region at the end of the scroll. In an
embodiment, the one or more programs include instructions
for transferring a rubberband call through an API to cause a
rubberband effect on a scrolled region by a predetermined
maximum displacement when the scrolled region exceeds a
display edge based on a scroll. In an embodiment, the one or
more programs include instructions for transferring a directional scroll call through an API to set a scroll angle for
locking the scrolling in at least one ofa vertical or a horizontal
direction.
In an embodiment, the one or more programs include
instructions for transferring a scroll hysteresis call through an
API to detennine whether a user input invokes a scroll. In an
embodiment, the one or more programs include instructions
for transferring a deceleration scroll call through anAPI to set
a deceleration factor for a user input based on the user input
invoking a scroll. In an embodiment, the one or more programs include instructions for transferring a scroll indicator
call through an API to determine whether at least one scroll
indicator attaches to a content edge or a display edge of a
display region.
In some embodiments, the platform includes a framework
containing a library of software code. The framework interacts with the programs of the platfonn to provide application
programming interfaces for performing various scrolling,
gesturing, and animating operations. The framework also
includes associated resources (e.g., images, text, etc.) that are
stored in a single directory.
In an embodiment, the library of the framework provides
anAPI for specifying a bounce operation to cause a bounce of
a scrolled region in an opposite direction of a scroll based on
a region past an edge of the scrolled region being visible in a
display region at the end ofthe scroll. In an embodiment, the
library of the framework provides an API for specifying a
rubberband operation that has a rubberband effect on a
scrolled region by a predetermined maximum displacement
when the scrolled region exceeds a display edge based on a
scroll. In an embodiment, the library of the framework provides an API for specifYing a directional scroll operation to
set a scroll angle for locking the scrolling in at least one of a
vertical or a horizontal direction.
In an embodiment, the library of the framework provides
an API for specifYing a scroll hysteresis operation to determine whether a user input invokes a scroll. In an embodiment,
the library ofthe framework provides anAPI for specifying a
deceleration scroll operation to set a deceleration factor for a
user input based on the user input invoking a scroll. In an
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
23
24
embodiment, the library ofthe framework provides anAPI for
specifYing a scroll indicator operation to detennine whether
at least one scroll indicator attaches to a content edge or a
display edge of a display region.
In the foregoing specification, the disclosure has been
described with reference to specific exemplary embodiments
thereof. It will be evident that various modifications may be
made thereto without departing from the broader spirit and
scope of the disclosure as set forth in the following claims.
The specification and drawings are, accordingly, to be
regarded in an illustrative sense rather than a restrictive sense.
receiving a user input, the user input is one or more input
points applied to a touch-sensitive display that is integrated with the data processing system;
creating an event object in response to the user input;
detennining whether the event object invokes a scroll or
gesture operation by distinguishing between a single
input point applied to the touch-sensitive display that is
interpreted as the scroll operation and two or more input
points applied to the touch-sensitive display that are
interpreted as the gesture operation;
issuing at least one scroll or gesture call based on invoking
the scroll or gesture operation;
responding to at least one scroll call, if issued, by scrolling
a window having a view associated with the event
object; and
responding to at least one gesture call, if issued, by scaling
the view associated with the event object based on
receiving the two or more input points in the fonn ofthe
user input.
9. The medium as in claim 8, further comprising:
rubberbanding a scrolling region displayed within the window by a predetermined maximum displacement when
the scrolled region exceeds a window edge based on the
scroll.
10. The medium as in claim 8, further comprising:
attaching scroll indicators to a content edge of the view.
11. The medium as in claim 8, further comprising:
attaching scroll indicators to a window edge of the view.
12. The medium as in claim 8, wherein detennining
whether the event object invokes a scroll or gesture operation
is based on receiving a drag user input for a certain time
period.
13. The medium as in claim 8, further comprising:
responding to at least one gesture call, ifissued, by rotating
a view associated with the event object based on receiving a plurality of input points in the fonn of the user
input.
14. The medium as in claim 8, wherein the data processing
system is one of: a data processing device, a portable device,
a portable data processing device, a multi touch device, a
multi touch portable device, a wireless device, and a cell
phone.
15. An apparatus, comprising:
means for receiving, through a hardware device, a user
input on a touch-sensitive display of the apparatus, the
user input is one or more input points applied to the
touch-sensitive display that is integrated with the apparatus;
means for creating an event object in response to the user
input;
means for determining whether the event object invokes a
scroll or gesture operation by distinguishing between a
single input point applied to the touch-sensitive display
that is interpreted as the scroll operation and two or more
input points applied to the touch-sensitive display that
are interpreted as the gesture operation;
means for issuing at least one scroll or gesture call based on
invoking the scroll or gesture operation;
means for responding to at least one scroll call, ifissued, by
scrolling a window having a view associated with the
event object; and
What is claimed is:
1. A machine implemented method for scrolling on a
touch-sensitive display of a device comprising:
receiving a user input, the user input is one or more input
points applied to the touch-sensitive display that is integrated with the device;
creating an event object in response to the user input;
detennining whether the event object invokes a scroll or
gesture operation by distinguishing between a single
input point applied to the touch-sensitive display that is
interpreted as the scroll operation and two or more input
points applied to the touch-sensitive display that are
interpreted as the gesture operation;
issuing at least one scroll or gesture call based on invoking
the scroll or gesture operation;
responding to at least one scroll call, if issued, by scrolling
a window having a view associated with the event object
based on an amount of a scroll with the scroll stopped at
a predetermined position in relation to the user input;
and
responding to at least one gesture call, if issued, by scaling
the view associated with the event object based on
receiving the two or more input points in the fonn ofthe
user input.
2. The method as in claim 1, further comprising:
rubberbanding a scrolling region displayed within the window by a predetermined maximum displacement when
the scrolling region exceeds a window edge based on the
scroll.
3. The method as in claim 1, further comprising:
attaching scroll indicators to a content edge ofthe window.
4. The method as in claim 1, further comprising:
attaching scroll indicators to the window edge.
5. The method as in claim 1, wherein detennining whether
the event object invokes a scroll or gesture operation is based
on receiving a drag user input for a certain time period.
6. The method as in claim 1, further comprising:
responding to at least one gesture call, ifissued, by rotating
a view associated with the event object based on receiving a plurality of input points in the fonn of the user
input.
7. The method as in claim 1, wherein the device is one of:
a data processing device, a portable device, a portable data
processing device, a multi touch device, a multi touch portable device, a wireless device, and a cell phone.
8. A machine readable storage medium storing executable
program instructions which when executed cause a data processing system to perform a method comprising:
10
15
20
25
30
35
40
45
50
55
60
65
US 7,844,915 B2
25
means for responding to at least one gesture call, if issued,
by scaling the view associated with the event object
based on receiving the two or more input points in the
form of the user input.
16. The apparatus as in claim 15, further comprising:
means for rubberbanding a scrolling region displayed
within the window by a predetermined maximum displacement when the scrolling region exceeds a window
edge based on the scroll.
17. The apparatus as in claim 15, further comprising:
means for attaching scroll indicators to a content edge of
the window.
18. The apparatus as in claim 15, further comprising:
means for attaching scroll indicators to the window edge.
26
10
19. The apparatus as in claim 15, wherein detennining
whether the event object invokes a scroll or gesture operation
is based on receiving a drag user input for a certain time
period.
20. The apparatus as in claim 15, further comprising:
means for responding to at least one gesture call, if issued,
by rotating a view associated with the event 0 bj ect based
on receiving a plurality of input points in the form ofthe
user input.
21. The apparatus as in claim 15, wherein the apparatus is
one of: a data processing device, a portable device, a portable
data processing device, a multi touch device, a multi touch
portable device, a wireless device, and a cell phone.
* * * * *
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?