throbber
as) United States
`a2) Patent Application Publication 10) Pub. No.: US 2010/0103118 Al
`(43) Pub. Date: Apr. 29, 2010
`
`Townsendet al.
`
`US 20100103118A1
`
`(54) MULTI-TOUCH OBJECT INERTIA
`SIMULATION
`
`(75)
`
`Inventors:
`
`Reed L. Townsend, Kirkland, WA
`(US); Xiao Tu, Sammamish, WA
`(US); Bryan D. Scott, Bothell, WA
`(US); Todd A. Torset, Woodinville,
`WA (US); Kenneth W. Sykes,
`Oakton, VA (US); Samir S.
`Pradhan,Bellevue, WA (US);
`Jennifer A. Teed, Redmond, WA
`(US)
`
`Correspondence Address:
`MICROSOFT CORPORATION
`ONE MICROSOFT WAY
`
`REDMOND, WA 98052 (US)
`
`(73) Assignee:
`
`MICROSOFT CORPORATION,
`Redmond, WA (US)
`
`(21) Appl. No.:
`
`12/258,439
`
`(22)
`
`Filed:
`
`Oct. 26, 2008
`
`Publication Classification
`
`(51)
`
`Int. Cl.
`(2006.01)
`GO6F 3/041
`(52) US. CMe coeccccccssssssssssssssssvseseesessessssasisssssenes 345/173
`
`(57)
`
`ABSTRACT
`
`Theinertia system provides a commonplatform and applica-
`tion-programming interface (API) for applications to extend
`the input received from various multi-touch hardware devices
`to simulate real-world behavior of application objects. To
`movenaturally, application objects should exhibit physical
`characteristics such as elasticity and deceleration. When a
`user lifts all contacts from an object, the inertia system pro-
`vides additional manipulation events to the application so that
`the application can handle the events as if the user wasstill
`moving the object with touch. The inertia system generates
`the events based ona simulation ofthe behaviorofthe objects.
`If the user moves an object into another object, the inertia
`system simulates the boundary characteristics of the objects.
`Thus, the inertia system provides more realistic movement
`for application objects manipulated using multi-touch hard-
`ware and the API provides a consistent feel to manipulations
`across applications.
`
`210
`
`220
`
`240
`Input
`230
`Changes
`250
`
`eet
`Inputs from
`
`
`
`
`
`Manipulation
`
`
`
`Application/Control
`Hardware
`
`
`System
`Interface
`
` Manipulation
`Events
`
`260
`
`
`
`
` 270
`
`Inertia Inputs
`and Driving Timer
`
`Inertia System
`
`Inertia Events
`290
`
`APPLE-1006
`
`1
`
`APPLE-1006
`
`

`

`Patent Application Publication
`
`Apr. 29, 2010 Sheet 1 of 7
`
`US 2010/0103118 Al
`
`100
`
`Manipulation System
`110
`
`Interface
`
`Manipulation
`Processor(s)
`
`Input
`Transformation
`
`Simulation
`
`Hardware
`Interface
`
`Application
`
`Figure I
`
`2
`
`

`

`Patent Application Publication
`
`Apr. 29, 2010 Sheet 2 of 7
`
`US 2010/0103118 Al
`
`210
`
`240
`
`Input
`Changes
`230
`
`
`Inputs from
`
`ee
`Manipulation
`Application/Control Po System
`Hardware
`
`
`Interface
`
`
`
`Manipulation
`
`
`Events
`
`260
`
`
`270
`
`Inertia Inputs
`
`and Driving Timer
`
`
`
`280
`Inertia System
`
`
`
`
`Inertia Events
`290
`
`Figure 2
`
`3
`
`

`

`Patent Application Publication
`
`Apr. 29, 2010 Sheet 3 of 7
`
`US 2010/0103118 Al
`
`310
`
`Figure3
`
`4
`
`

`

`Patent Application Publication
`
`Apr. 29, 2010 Sheet 4 of 7
`
`US 2010/0103118 Al
`
`
`
`Application
`Input Loop
`
`
`
`410
`
`Receive Low-Level Touch
`Input
`
`420
`
`Identify Touched Application
`Object
`
`430
`
`Send Touch Input/Object
`ID to Manipulation API
`
`440
`
`Receive Manipulation Event
`
`450
`
`Handle Manipulation Event
`
`460
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`WaitforNextTouchInput :
` Next Input
`
`
`Received?
`
`Figure 4
`
`5
`
`5
`
`

`

`Patent Application Publication
`
`Apr. 29, 2010 Sheet 5 of 7
`
`US 2010/0103118 Al
`
`
`
`
` 510
`
`Create Processor
`
`
` Add Contact to
`Manipulation Processor
`
`
`Manipulation API
`
`Receive Touch Input/
`Application Object ID
`
`Identify Manipulation
`Processor
`
`Processor Exists?
`
`Contact Added?
`
`530
`
`Remove Contact from
`Manipulation Processor
`
`
`
`Figure 5
`
`6
`
`

`

`Patent Application Publication
`
`Apr. 29, 2010 Sheet 6 of 7
`
`US 2010/0103118 Al
`
`Application
`Inertia Loop
`
`6 10
`
`Determine User Released
`Object
`
`Initialize Inertia System
`
`620
`
`630
`
`: Call Inertia Processing :
`
`640
`
`650
`
`660
`
`
` 680
`
`Receive Inertia Event
`
`Handle Inertia Event
`
`670
`
`Wait for Timer
`
`Complete?
`
`Y
`
`Figure 6
`
`7
`
`

`

`Patent Application Publication
`
`Apr. 29, 2010 Sheet 7 of 7
`
`US 2010/0103118 Al
`
`Inertia Processing
`
`710
`
`Receive Initial Parameters
`
`720
`
`730
`
`740
`
`Initialize Simulation
`
`Receive Process Call
`
`Simulate Movement
`
`
`
`760
`Movement
`Y
`Set Complete
`Complete?
`
`
`Fire Inertia Event
`
`Figure 7
`
`©Oo
`
`8
`
`

`

`US 2010/0103118 Al
`
`Apr. 29, 2010
`
`MULTI-TOUCH OBJECT INERTIA
`SIMULATION
`
`BACKGROUND
`
`[0001] A tablet PC, or pen computer, is a notebook or
`slate-shaped mobile computer, equipped with a touch screen
`or graphics tablet/screen hybrid technology that allows the
`user to operate the computer with a stylus, digital pen, or
`fingertip instead of a keyboard or mouse. Tablet PCs offer a
`more natural form of input, as sketching and handwriting are
`a much more familiar form of input than a keyboard and
`mouse, especially for people who are new to computers.
`Tablet PCs can also be more accessible because those whoare
`
`physically unable to type can utilize the additional features of
`a tablet PC to be able to interact with the electronic world.
`
`may expect to be able to “toss”a file from one side of the
`desktop to another by flicking his/her finger. This type of
`movementis not supported by current multi-touch applica-
`tions, which would expect the userto drag his/her finger from
`one side of the screen all the way to the other. Even if an
`application provides support for this type ofmovement, other
`applications could not benefit from it and thus application
`authors would have to repeat the work ofthe first application
`author to offer the same functionality in their applications.
`
`SUMMARY
`
`[0005] The inertia system provides a commonplatform and
`application-programminginterface (API) for applications to
`extend the input received from various multi-touch hardware
`devices to simulate real-world behavior of objects. The
`manipulations received by the application only describe the
`movement of an object based on the movement of contacts
`with the multi-touch hardware. However, to move naturally,
`objects should also exhibit physical characteristics such as
`elasticity and deceleration. When a userlifts all contacts from
`an object, the inertia system provides additional manipulation
`events to the application so that the application can handle the
`events as if the user wasstill moving the object with touch.
`However, the inertia system actually generates the events
`based ona simulation ofthe behaviorofthe objects. Ifthe user
`moves an object into another object, the inertia system sends
`manipulation events based on the boundary characteristics of
`the objects. Thus, the inertia system provides morerealistic
`movement for application objects that a user manipulates
`using multi-touch hardware and the API provides a consistent
`feel to manipulations across applications.
`[0006] This Summary is provided to introduce a selection
`of concepts in a simplified form that are further described
`below in the Detailed Description. This Summary is not
`intended to identify key features or essential features of the
`claimed subject matter, nor is it intended to be used to limit
`the scope of the claimed subject matter.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0002] Multi-touch (or multitouch) denotes a set of inter-
`action techniquesthat allow computerusers to control graphi-
`cal applications using multiple fingers or input devices(e.g.,
`stylus). Multi-touch implementations usually include touch
`hardware(e.g., a screen, table, wall, and so on) and software
`that recognizes multiple simultaneous touch points. Multi-
`touch stands in contrast to traditional touch screens (e.g.,
`computer touchpad, ATM, shopping kiosk) that only recog-
`nize one touch point at a time. Multi-touch hardware can
`sense touches using heat, finger pressure, high capture rate
`cameras, infrared light, optic capture, tuned electromagnetic
`induction, ultrasonic receivers,
`transducer microphones,
`laser rangefinders, shadow capture, and other mechanisms.
`Manyapplications for multi-touch interfaces exist and appli-
`cation designers and users are proposing even more. Some
`uses are individualistic (e.g., Microsoft Surface, Apple
`iPhone, HTC Diamond). As a new input method, multi-touch
`offers the potential for new user experience paradigms.
`[0003] An application cannot use multi-touch hardware
`without an interface for the application software to receive
`information from the multi-touch hardware. Unfortunately,
`each multi-touch hardware device includes its own propri-
`etary interface and application authors must have specific
`knowledgeof a hardware device to write software that works
`with the device. For example, a multi-touch hardware pro-
`FIG. 1 is a block diagram that illustrates compo-
`[0007]
`vider may provide a kernel-mode driver and a user-mode
`nents of the inertia system, in one embodiment.
`application interface through which user-mode software
`[0008]
`FIG. 2 is adata flow diagram thatillustrates atypical
`applications can communicate with the multi-touch hardware
`operating environmentof the inertia system and the flow of
`to receive touch information. An application author writes
`data between components, in one embodiment.
`software that communicates with the user-mode application
`[0009]
`FIG. 3 is a display diagram thatillustrates an appli-
`interface, but the application author’s software works only
`cation object manipulated by user touch, in one embodiment.
`with that multi-touch hardware. A computer user with a dif-
`[0010]
`FIG. 4 is a flow diagram that illustrates the input
`ferent multi-touch hardware device cannot use the applica-
`loop processing of a multi-touch application using theinertia
`tion author’s software unless the application author produces
`system to handle manipulation events, in one embodiment.
`a different version ofthe software that operates correctly with
`
`[0011] FIG. 5isaflow diagram thatillustrates the process-
`the computer user’s device. This produces a very limited
`ing of the inertia system when the system receives touch
`potential market for application authors, reduces the incen-
`input, in one embodiment.
`tive to write applications supporting multi-touch interactions,
`[0012]
`FIG.6is a flow diagram thatillustrates the process-
`and keeps the cost of the most popular devices high for which
`ing of a multi-touch application using the inertia system to
`the greatest numberof applicationsis available.
`process inertia events, in one embodiment.
`[0004] Another problem is thedifficulty for applications to
`[0013]
`FIG. 7 is a flow diagram thatillustrates the process-
`determine a user’s intentions based on touch input received
`ing of the simulation component of the inertia processing
`from multi-touch hardware. Touch input may be received as a
`system, in one embodiment.
`list of coordinates where the hardware senses touch input at
`any given time. Each application has to include software to
`interpret the coordinates and determine the user’s intention.
`In addition,the user’s intention may extend beyondthe actual
`touch input received. The user may expect virtual objects to
`behave howtheydo in the physical world. For example, a user
`
`DETAILED DESCRIPTION
`
`[0014] The inertia system provides a commonplatform and
`APIfor applications to extend the input received from various
`multi-touch hardware devices to simulate real-world behav-
`
`9
`
`

`

`US 2010/0103118 Al
`
`Apr. 29, 2010
`
`ior ofobjects. For example, real world objects do not typically
`stop moving when a user stops pushing them, but rather
`exhibit some inertia and keep moving until friction slows
`them finally to a stop. In some embodiments, the touch input
`first goes through a process to interpret the movementof one
`or more contacts as manipulations. Manipulations map more
`directly to user intentions than do individual touch inputs and
`add support for basic transformationofobjects using multiple
`touch contacts. An application can use manipulationsto sup-
`port rotating, resizing, and translating multiple objects (e.g.,
`photos) at
`the same time. The manipulations may be
`described as two-dimensional (2D) affine transforms that
`contain rotation, scale (e.g., zoom), and translation (e.g., pan)
`information.
`
`information. For
`work together to provide touch input
`example, the operating system may provide a commondriver
`model for multi-touch hardware manufacturers to provide
`touch information for their particular hardware. The operat-
`ing system maytranslate touch information received through
`this model
`into window messages (e.g.. WM_TOUCH
`described herein) and pass these messages to the application.
`Thus, the hardware interface 110 may involve the coordina-
`tion of the hardware, a hardware driver, and an operating
`system layer. Theresult is a series of messagesto the inertia
`system that identify a particular contact (e.g., touch of a
`finger), and the coordinates of the contact over time. For
`example, the operating system may provide a message when
`a new contact is set down on the multi-touch hardware, a
`message each time the contact moves, and a message when
`[0015] Each touch of the multi-touch hardwareis called a
`the contactis lifted away from the multi-touch hardware.
`contact. For example, when a usersets his/her finger on the
`multi-touch hardware, moveshis/her finger around, andlifts
`[0019] One or more manipulation processors 120 use the
`his/her finger, that series of events is a single contact. For
`input transformation component 130 to interpret movement
`example, if the user moves two contacts closer together or
`of each contact associated with a particular application
`further apart, the system may determinethat theuseris scal-
`object. The manipulation processor 120 may determinethat a
`ing (e.g., zooming into or out from) an object. As another
`useris using multiple contacts to perform a single action. For
`example, if the user moves multiple contacts in a circular
`example, a user could touchaphoto with all five fingers ofone
`hand andtwist his/her hand to indicate an intention to rotate
`motion, then the system may interpret the movement as a
`rotation of an object. Each application can define objects that
`the photo. The manipulation processor 120 receives five sepa-
`are relevantdifferently, so it is up to the application to attach
`rate contacts (one for each finger) and the change in coordi-
`nates of each contact as the user rotates his/her hand. The
`an instance ofthe system (called a manipulation processor) to
`each object that a user can manipulate using touch input
`within the application. For example, a photo browsing appli-
`cation may attach a manipulation processorto each displayed
`photo, so that the user can movethe photos around,scale the
`photos, rotate the photos, and so forth.
`[0016] The manipulations handled by the application only
`describe the movementofan object based on the movementof
`contacts. However, to move naturally, objects should also
`exhibit physical characteristics such as elasticity and decel-
`eration. When a userlifts all contacts from an object, the
`inertia system provides additional manipulation events to the
`application so that the application can handle the events as if
`the user wasstill moving the object with touch. However, the
`inertia system actually generates the events based on a simu-
`lation ofthe behavior of the objects. For example, if the user
`lifted the contacts while the object had a velocity in a particu-
`lar direction, then inertia system continues sending events
`that indicate that the object is moving in that direction, slow-
`ing downovertimeas the object decelerates. Ifthe user moves
`an object into another object, such as the edge of the screen,
`the inertia system sends manipulation events based on the
`boundary characteristics of the objects. For example, if an
`application author defines two objects as being elastic, then
`the two objects may bounce off each other when a user moves
`the objects into each other. Thus, the inertia system provides
`morerealistic movement for application objects that a user
`manipulates using multi-touch hardware and the API pro-
`vides a consistent feel to manipulations across applications.
`[0017]
`FIG. 1 is a block diagram that illustrates compo-
`nents of the inertia system, in one embodiment. The inertia
`system 100 includes a hardware interface 110, one or more
`manipulation processors 120, an input transformation com-
`ponent 130, a simulation component 140, and an application
`interface 150. Each of these components is described in fur-
`ther detail herein.
`
`manipulation processor 120 determines that each contact is
`grabbing the same object and performing the samerotation.
`The system will inform the application that the user rotated
`the object, but the application can ignore whether the user
`used two, five, or any particular numberoffingers or other
`contacts to perform the rotation. This greatly simplifies the
`authoring of the application because the application author
`can handle those types of manipulations that are relevant to
`the application and leave it to the inertia system to interpret
`the meaning of each low-level touch input received from the
`multi-touch hardware.
`
`[0020] The manipulation processor 120 uses the input
`transformation component 130 to make determinations about
`the meaning of received movements ofvarious contacts, both
`alone and in concert. For example,if a user is manipulating a
`photo with two fingers, which creates two corresponding
`input contacts, then the manipulation processor 120 uses the
`input transformation component 130 to determine the mean-
`ing of relative movements between the two contacts. If the
`two contacts move apart, then the input transformation com-
`ponent 130 may determine that the user is scaling the object to
`change the object’s size. If the two contacts rotate, then the
`input transformation component 130 may determinethat the
`useris rotating the object. If the two contacts both slide in a
`particular direction, then the input transformation component
`130 may determine the user is panning the object to a new
`location. Although each type of movementis discussed sepa-
`rately, note that a user can makeall three types of movements
`at the sametime, and the input transformation processor can
`report the overall
`transformation to the application. For
`example, a user can rotate, scale, and pan an object all in one
`motion.
`
`[0021] The simulation component 140 simulates the con-
`tinued movementof an application objectafter the user stops
`touching the object based on initialization parameters and
`constraints defined for the object. An application mayinitial-
`ize the simulation component 140 with the final state of the
`manipulation processor 120 associated with the object. The
`
`10
`
`[0018] The hardware interface 110 communicates with the
`hardware to receive touch contacts and movements. The hard-
`
`ware interface 110 may include several subcomponents that
`
`10
`
`

`

`US 2010/0103118 Al
`
`Apr. 29, 2010
`
`application may also define various characteristics of the
`object, such as how the object’s boundaries should behave.
`The simulation component 140 uses techniques based on
`physics to simulate the behavior of the object for a period
`after the user releases the object. For example, the simulation
`component 140 may continuetofire notifications to the appli-
`cation in the same form as the manipulation events received
`by the application while the user was moving the object. The
`application can then focus on reacting to the movementof the
`object rather than being concerned with whatactions (user or
`physical) caused the object to move. Those ofordinary skillin
`the art will recognize numerous well-known techniques for
`simulating the equivalent physical behaviorofvirtual objects
`in software.
`
`[0022] The application interface 150 communicates with
`the application to receive information and provide manipula-
`tion transformsto the application. The application interface
`150 receives initialization information from the application.
`The initialization information may specify which types of
`transforms the application object supports for a particular
`object and associated manipulation processor as well as ini-
`tialization data for the simulation component 140 when the
`user is no longer movingthe object. For example, someappli-
`cation objects may support scaling but not rotation. The ini-
`tialization information mayalso specify a pivot point of the
`object. The inertia system provides manipulation transforms
`to the application through the application interface. For
`example, when the inertia system receives low-level touch
`input that the system interprets as a recognized transform
`(e.g., arotation), the system fires an eventto notify the appli-
`cation about the manipulation. The application processes the
`manipulation transform to modify the object based on the
`transform. For example,ifthe user rotated the object, then the
`application maystore the new orientation of the object to use
`the next time the application displays the object. As another
`example, if the object continued to rotate after the user
`released it based on calculations ofthe simulation component
`140, then the application maystore the new orientation of the
`object.
`[0023] Thecomputing device on which the system is imple-
`mented mayinclude a central processing unit, memory, input
`devices (e.g., keyboard and pointing devices), output devices
`(e.g., display devices), and storage devices(e.g., disk drives).
`The memory and storage devices are computer-readable
`media that may be encoded with computer-executable
`instructions that implement the system, which means a com-
`puter-readable medium that containsthe instructions. In addi-
`tion, the data structures and message structures maybe stored
`or transmitted via a data transmission medium, such as a
`signal on a communication link. Various communication
`links may be used, suchas the Internet, a local area network,
`a wide area network, a point-to-point dial-up connection, a
`cell phone network, and so on.
`[0024] Embodiments ofthe system may be implemented in
`various operating environments that include personal com-
`puters, server computers, handheld or laptop devices, multi-
`processor systems, microprocessor-based systems, program-
`mable consumerelectronics, digital cameras, network PCs,
`minicomputers, mainframe computers, distributed comput-
`ing environments that include any of the above systems or
`devices, and so on. The computer systems maybe cell phones,
`personal digital assistants, smart phones, personal computers,
`programmable consumerelectronics, digital cameras, and so
`on.
`
`[0025] The system maybe described in the general context
`of computer-executable instructions, such as program mod-
`ules, executed by one or more computers or other devices.
`Generally, program modules include routines, programs,
`objects, components, data structures, and so on that perform
`particular tasks or implementparticular abstract data types.
`Typically, the functionality of the program modules may be
`combinedor distributed as desired in various embodiments.
`
`FIG. 2 isadata flow diagram thatillustrates atypical
`[0026]
`operating environmentof the inertia system and the flow of
`data between components, in one embodiment. A multi-touch
`hardware device produces inputs 210 through a hardware
`interface. For example, the hardware maysendthe inputs 210
`to an operating system through a software driver provided by
`the hardware manufacturer. The hardware interface provides
`input events 220 to an application 230. For example, an appli-
`cation may inform the operating system that the application
`230 supports multi-touch user input and register to receive
`messagesrelated to multi-touch user input. The application
`230 receives low-level
`touch input
`information as input
`changes 240 and forwardsthe input changes 240 to a manipu-
`lation system 250. For example, the input changes 240 may
`describe each movement of one or more touch contacts with
`
`the hardware using a set of coordinates that indicate each
`contact’s current position and other movement characteris-
`tics. The manipulation system 250 interprets the input
`changes 240 and notifies the application 230 of one or more
`manipulation events 260 that indicate higher-level manipula-
`tions that the user is performing on a displayed object. For
`example, if the movementof the contacts indicates that the
`user intends to rotate the object, the manipulation events 260
`indicate a degree of rotation.
`[0027] Whenthe user is done movingthe object (e.g., when
`the application receives a notification that each contact touch-
`ing an object has been removed from the touch hardware), the
`application 230 sends initialization information 270 to the
`inertia system 280. The inertia system 280 determines a next
`position of the object and providesinertia events 290 similar
`to the manipulation events 260 that the manipulation system
`250 provided when the user was moving the object. The
`application 230 also provides a driving timerto periodically
`call the inertia system 280 to provide the next position of the
`object through inertia events 290. The application 230 pro-
`cesses the inertia events in a way similar to manipulation
`events.
`
`[0028] Although the diagram illustratesthat the application
`first receives touch input and passes the touch input to the
`manipulation system andinertia, in some embodiments, these
`systemsreceive touch input directly from the hardware inter-
`face,
`interpret the touch input, and provides interpreted
`manipulation events to the application. Likewise, the appli-
`cation may not know that a separate inertia system 280 pro-
`vides inertia events after a user stops moving an object with
`touch,but rather may receive events from oneinterface during
`the time the user is moving the object and afterwards when the
`object is moving based on inertia. This represents an alterna-
`tive architecture that provides similar resultant functionality
`but gives the application less control over the processing of
`the input. For example, the application may not be able to
`define individual application objects to which the system
`attaches individual manipulation processors. The RTS plug-
`in described herein is one example of this alternative archi-
`tecture for the system.
`
`11
`
`11
`
`

`

`US 2010/0103118 Al
`
`Apr. 29, 2010
`
`FIG. 3 isa display diagram that illustrates an appli-
`[0029]
`cation object manipulated by user touch, in one embodiment.
`An application may simultaneously display and receive touch
`input for many such objects. For example, an operating sys-
`tem shell application may display one or more document
`objects stored on the user’s computer desktop. In the display
`310, the document object 320 represents a document on the
`user’s desktop that the user wants to drag to the recycle bin
`330 using touch. The user performsa flicking motion of the
`documentobject 320 that results in system processinga first
`manipulation location 340, second manipulation location
`350, and third manipulation location 360. The application
`receives the first manipulation location 340 when the user
`initially touches the document object 320 with one or more
`fingers (i.e., contacts). The application receives the second
`manipulation location 350 as the user slides his/her fingers
`across the screen. The application receives the third manipu-
`lation location when the user lifts his/her fingers from the
`screen. The arrows 365 represent the vectors of the document
`object’s 320 movement.
`[0030] Without inertia, the document object 320 would
`stopat the third manipulation location 360, whichis likely not
`whatthe user intends. The inertia system provides additional
`manipulation locations to the application as if the user was
`still touching and moving the documentobject 320 based on
`the documentobject’s 320 velocity when the userreleases the
`document object 320. The application receives the first iner-
`tia-based manipulation location 370 when the application
`initializes the inertia system and calls the inertia system’s
`processing functionforthefirst time. The application receives
`the second inertia-based manipulation location 380 as the
`application continuesto call the inertia system’s processing
`function. Because the final manipulation location 380 of the
`documentobject 320 is over the recycle bin 330, the applica-
`tion processes the contact between the two objects (e.g., by
`placing the documentobject 320 in the recycle bin 330). In the
`example illustrated, even though the inertia system deceler-
`ates the movementof the documentobject 320, the document
`object 320 is still able to move a fair distance across the
`display 310 based on the high initial velocity of the user’s
`movementof the document object 320 at the start.
`[0031]
`FIG. 4 is a flow diagram that illustrates the input
`loop processing of a multi-touch application using the inertia
`system to handle manipulation events, in one embodiment. In
`block 410, the application receives low-level touch input. For
`example, an operating system or instance ofthe inertia system
`receives touch contact information from multi-touch hard-
`ware and forwards the touch contact information to the appli-
`cation. In block 420, the application identifies the object to
`whichthe input applies. For example, the application may hit
`test the coordinates of the received input by comparing the
`coordinates with the coordinates of each application object
`displayed by the application. If the touch input is within the
`boundaries of a displayed application object, then the appli-
`cation determinesthat the touch input appliesto that object. In
`block 430, the application sends the received touch input and
`the information about the identified application object to a
`manipulationAPIfor invoking the inertia system (see FIG.5).
`For example, the application may create a numeric identifier
`for each application object and pass the numeric identifier to
`the inertia system each time touch input correspondsto that
`object.
`In block 440, the application receives a manipula-
`[0032]
`tion event from the inertia system that describes one or more
`
`manipulations of the identified application object. For
`example, the application may receive an event describing a
`2D affine transform ofthe application object. Note that block
`440 is illustrated serially after block 430 for simplicity of
`illustration. In practice, the application may receive many
`touch input events before the inertia system notifies the appli-
`cation with a manipulation event. There is not necessarily a
`one-to-one mapping of touch input events to manipulation
`events. Because manipulation events represent a higher-level
`interpretation of low-level touch inputs, multiple touch inputs
`may make up a single manipulation event. In block 450, the
`application handles the received manipulation event. For
`example, ifthe recetved manipulation eventis a rotation, then
`the application mayrotate the application object on the screen
`and store the application objects new location for use when
`the application object is displayed again. The inertia system
`frees the application from performingsteps specific to a par-
`ticular multi-touch hardware device or even from knowing
`which hardware device is providing the multi-touch input. In
`addition, the inertia system frees the application from pro-
`cessing individual contact movementand allowsthe applica-
`tion to focus on processing transforms at the application
`object level.
`[0033]
`Inblock 460, the application waits for the next touch
`input. For example, the application may call an operating
`system provided message API, such as GetMessage on
`Microsoft Windows that waits for the next message to be
`delivered to the application’s message queue. In decision
`block 470, if the application receives the next touch input,
`then the application loops to block 410 to process the input,
`else the application loops to block 460 to continue waiting for
`further input. When the application closes, the application
`exits the input loop (not shown).
`[0034]
`FIG. 5 isa flow diagram thatillustrates the process-
`ing of the inertia system when the system receives touch
`input, in one embodiment. In block 505, the system receives
`touch input along with information identifying an application
`object with which the touch input is associated. For example,
`the touch input may include coordinates or other location
`information of one or more touch contacts, and the applica-
`tion object information may include an identifier that the
`application assignedto a particular displayed object that the
`touch input is over on the multi-touch hardware. In block 510,
`the system identifies a manipulation processor associated
`with the application object. In decision block 520, if the
`system hasnot previously associated a manipulation proces-
`sor with the application object, then the system continues at
`block 530, else the system continues at block 540. In block
`530, the system creates a manipulation processor and associ-
`ates it with the application object, then continuesat block 540.
`[0035]
`In de

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket