| US 7,533,338 B2 | ||
| Electronic ink processing | ||
| Richard Duncan, Kirkland, Wash. (US); Bodin Dresevic, Bellevue, Wash. (US); Jamie Wakeam, Redmond, Wash. (US); Herry Sutanto, Kirkland, Wash. (US); Sashi Raghupathy, Redmond, Wash. (US); Timothy H. Kannapel, Bellevue, Wash. (US); Zoltan Szilagyi, Redmond, Wash. (US); Jerome Turner, Redmond, Wash. (US); Todd Landstad, Redmond, Wash. (US); Thomas Wick, Seattle, Wash. (US); Alex Simmons, Redmond, Wash. (US); Peter Engrav, Seattle, Wash. (US); Kevin Phillip Paulson, Redmond, Wash. (US); Kentaro Urata, Kirkland, Wash. (US); Steve Dodge, Sammamish, Wash. (US); David M. Bargeron, Seattle, Wash. (US); and Michael Shilman, Seattle, Wash. (US) | ||
| Assigned to Microsoft Corporation, Redmond, Wash. (US) | ||
| Filed on Aug. 21, 2003, as Appl. No. 10/644,900. | ||
| Prior Publication US 2005/0044106 A1, Feb. 24, 2005 | ||
| Int. Cl. G06F 17/00 (2006.01); G06F 12/00 (2006.01) | ||
| U.S. Cl. 715—268 [715/230; 715/232; 715/234; 707/104.1; 711/113] | 30 Claims |

| 1. A computer-implemented method for asynchronous receipt and processing of electronic ink annotation of a document, comprising:
generating a first analysis context object, the first analysis context object providing a translation layer for a document
model of a current state of a relationship of elements in the document and comprising a tree data structure for storing document
elements in a hierarchical relationship;
staffing a first thread, wherein the first thread updates the first analysis context object based upon a user interaction
with the document, the user interaction including electronic ink annotation;
upon an event requiring analysis of new data in the document:
suspending execution of the first thread so as to prevent changes to the first analysis context object;
starting a second thread, wherein the second thread generates a second analysis context object corresponding to a portion
of the first analysis context object, wherein the portion corresponds to a designated region of the document;
upon completion of generation of the second analysis context object:
suspending execution of the second thread;
restarting the first thread;
performing a first analysis of the second analysis context object to generate a third analysis context object from the second
analysis context object, wherein the third analysis context object is generated by parsing the new data and modifying the
second analysis context object based on the new data and further includes classification information for the new data;
upon completion of the first analysis:
suspending execution of the first thread so as to prevent any changes to the first analysis context object;
starting a third thread, wherein the third thread reconciles the third analysis context object with the first analysis context
object to generate first reconciled analysis results;
upon completion of the reconciliation of the first analysis context object and the third analysis context object:
updating the first analysis context object with the first reconciled analysis results;
suspending execution of the third threat; and
restarting the first thread.
|