Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ASYNCHRONOUS REDRAWING IN ONLINE DOCUMENT PROCESSORS
Document Type and Number:
WIPO Patent Application WO/2012/039740
Kind Code:
A1
Abstract:
An online document processor can redraw a document asynchronously upon receiving an edit command. After receiving an edit command, the document processor selects one of several redraw operations. For edit operations in which the document display needs to be updated before a new edit operation can be processed, only the portion of the document up to the displayed portion of the document is redrawn. For other edit operations, the document processor operates in a time division multiplex mode in which time intervals for receiving new edit commands are alternated with time intervals for performing redraw operations.

Inventors:
LINDNER EDGARD (US)
BELOMESTNYKH OLGA (US)
FILHO LUIZ AMARAL FRANCA PEREIRA (US)
Application Number:
PCT/US2011/001417
Publication Date:
March 29, 2012
Filing Date:
August 11, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
GOOGLE INC (US)
LINDNER EDGARD (US)
BELOMESTNYKH OLGA (US)
FILHO LUIZ AMARAL FRANCA PEREIRA (US)
International Classes:
G06F17/24; G06F3/048; G06F9/46
Other References:
OLAV JUNKER KJAER: "Timing and Synchronisation in JavaScript", DEV.OPERA, 27 February 2007 (2007-02-27), XP002663201, Retrieved from the Internet [retrieved on 20111108]
Attorney, Agent or Firm:
CHIN, Brymer, H. (One Boland DriveWest Orange, NJ, US)
Download PDF:
Claims:
CLAIMS:

1 . A method for redrawing a document with an online document processor, the method comprising:

receiving an edit command; and

redrawing a portion of the document for a maximum of a predetermined time interval.

2. The method of claim 1 , wherein the received edit command is a first edit command, and wherein the predetermined time interval is a first predetermined time interval, further comprising:

upon completion of redrawing the portion of the document for a maximum of a first predetermined time interval, waiting for receipt of a second edit command for a maximum of a second predetermined time interval.

3. The method of claim 2, further comprising:

upon receiving a second edit command within the second predetermined time interval, executing the received second edit command.

4. A method for redrawing a document with an online document processor, the method comprising:

receiving an edit command; and

based on the received edit command, redrawing a portion of the document, the portion ending at a location determined by one of:

a first sum of a document end-of-display point and a first buffer length, wherein the first buffer length is greater than or equal to zero;

a second sum of a document scroll point and a second buffer length, wherein the second buffer length is greater than or equal to zero; or a third sum of a document spacer index and a third buffer length, wherein the third buffer length is greater than or equal to zero.

5. The method of claim 4, wherein the received edit command is a first edit command, further comprising:

upon completion of redrawing the portion of the document, waiting for receipt of a second edit command for a maximum of a predetermined time interval.

6. The method of claim 5, further comprising:

upon receiving a second edit command within the predetermined time interval, executing the received second edit command.

7. A computer readable medium storing computer program instructions for redrawing a document with an online document processor, the computer program instructions defining the steps of:

receiving an edit command; and

redrawing a portion of the document for a maximum of a predetermined time interval.

8. The computer readable medium of claim 7, wherein the received edit command is a first edit command, wherein the predetermined time interval is a first predetermined time interval, and wherein the computer instructions for redrawing a document with an online document processor further comprise computer program instructions defining the step of:

upon completion of redrawing the portion of the document for a maximum of a first predetermined time interval, waiting for receipt of a second edit command for a maximum of a second predetermined time interval.

9. The computer readable medium of claim 8, wherein the computer instructions for redrawing a document with an online document processor further comprise computer program instructions defining the step of:

upon receiving a second edit command within the second predetermined time interval, executing the received second edit command.

10. A computer readable medium storing computer program

instructions for redrawing a document with an online document processor, the computer program instructions defining the steps of:

receiving an edit command; and

based on the received edit command, redrawing a portion of the document, the portion ending at a location determined by one of:

a first sum of a document end-of-display point and a first buffer length, wherein the first buffer length is greater than or equal to zero;

a second sum of a document scroll point and a second buffer length, wherein the second buffer length is greater than or equal to zero; or

a third sum of a document spacer index and a third buffer length, wherein the third buffer length is greater than or equal to zero.

1 1. The computer readable medium of claim 10, wherein the received edit command is a first edit command, and wherein the computer program instructions for redrawing a document with an online document processor further comprise computer program instructions defining the step of:

upon completion of redrawing the portion of the document, waiting for receipt of a second edit command for a maximum of a predetermined time interval.

12. The computer readable medium of claim 1 1 , wherein the computer program instructions for redrawing a document with an online document processor further comprise computer program instructions defining the step of:

upon receiving a second edit command within the predetermined time interval, executing the received second edit command.

13. An applications server comprising:

a data storage device storing computer program instructions defining the steps of:

receiving an edit command; and

redrawing a portion of a document for a maximum of a predetermined time interval;

a central processing unit configured to execute the computer program instructions; and

a communications network interface configured to transfer data between the applications server and a communications network.

14. An applications server comprising:

a data storage device storing computer program instructions defining the steps of:

receiving an edit command; and

based on the received edit command, redrawing a portion of the document, the portion ending at a location determined by one of:

a first sum of a document end-of- display point and a first buffer length, wherein the first buffer length is greater than or equal to zero;

a second sum of a document scroll point and a second buffer length, wherein the second buffer length is greater than or equal to zero; or

a third sum of a document spacer index and a third buffer length, wherein the third buffer length is greater than or equal to zero; and

a central processing unit configured to execute computer program instructions; and

a communications network interface configured to transfer data between the applications server and a communications network.

Description:
TITLE

Asynchronous Redrawing in Online Document Processors BACKGROUND

[0001] The present disclosure relates generally to online document processors, and more particularly to asynchronous redrawing in online document processors.

[0002] Various system architectures have been developed for users to access computer applications, such as word processors, spreadsheets, and drawing programs. In one architecture, applications software is loaded onto a personal computer accessed by a single user. For multiple users, each user has an individual personal computer, and individual copies of applications software are loaded onto each personal computer. In another architecture, applications software is loaded onto an applications server connected to a communications network. Multiple users can simultaneously access the applications server via the communications network.

[0003] Widespread deployment of the Internet has accelerated developments in cloud computing, in which applications are viewed as online services provided by an applications services provider. Details of software and hardware are transparent to the user. A user accesses the Internet via a communications device, such as a personal computer, and, using a web browser, logs onto the website of an applications services provider. The user then launches an application such as a word processor.

[0004] The user provides input to the application and receives output from the application via a graphical user interface. In response to user input, the application performs certain operations. Web browsers are typically single threaded. While the application is performing certain operations, the user can be blocked from entering further input. If the hold time is too long, the user experience can be unsatisfactory. What are needed are methods and apparatus for reducing the hold time for online applications. BRIEF SUMMARY

[0005] A user accesses an online document processor via user equipment and a communications network. The user provides input to and receives output from the online document processor via a web browser and a graphical user interface viewed on a video display. When the online document processor receives an edit command, the online document processor redraws the document to generate a specified graphical layout. During a synchronous redraw operation, the entire redraw operation needs to be completed before the online document processor accepts further user input. In embodiments disclosed herein, certain redraw operations are performed asynchronously. These redraw operations can be interrupted prior to completion, and new user input can be accepted.

[0006] The operation of redrawing a document refers to the operation of formatting the layout of the document. The redraw operation is performed by the online document processor. The layout of the document includes graphical characteristics such as margins, pagination, line spacing, fonts, holding, underlining, headers, footers, comments, drawings, and images. Redrawing a document includes the first instance in which a document is drawn.

[0007] Edit operations include operations that change the contents of the document and operations that change the layout of the document. Edit operations also include operations that change the displayed portion of the document, but not the content or layout of the document; for example, scrolling through a document is considered to be an edit operation. Printing a document is also considered to be an edit operation.

[0008] In an embodiment, a new document or a previously downloaded document is edited by an online document processor. In response to receiving an edit command, the online document processor selects one of several redraw operations. For edit commands in which the document display needs to be updated before a new edit command can be processed, the portion of the document up to and including a specified location (plus a buffer length) is redrawn. For other edit commands, the online document processor operates in a time division multiplex mode in which time intervals for receiving new edit commands are alternated with time intervals for performing redraw operations.

[0009] Redraw operations for edit commands in which the document display needs to be updated before a new edit command can be processed include the following redraw operations:

(a) Redrawing the entire document;

(b) Redrawing a portion of the document, in which the portion of the document ends at a location determined by a sum of a document end-of- display point and a buffer length;

(c) Redrawing a portion of the document, in which the portion of the document ends at a location determined by a sum of a document scroll point and a buffer length; and

(d) Redrawing a portion of the document, in which the portion ends at a location determined by a sum of a document spacer index and a buffer length.

The buffer length referred to in the above operations is greater than or equal to zero.

[0010] This disclosure discloses methods for performing

embodiments of the redraw operations, computer readable media storing computer program instructions defining steps for performing embodiments of the redraw operations, and applications servers configured to execute computer program instructions defining steps for performing embodiments of the redraw operations.

[0011] This disclosure further discloses at least an apparatus for redrawing a document with an online document processor, wherein the apparatus comprises: (a) means for receiving an edit command; and (b) means for, based on the received edit command, (i) redrawing the entire document; (ii) redrawing a portion of the document, the portion ending at a location determined by a sum of a document end-of-display point and a buffer length, wherein the buffer length is greater than or equal to zero; (iii) redrawing a portion of the document, the portion ending at a location determined by a sum of a document scroll point and a buffer length, wherein the buffer length is greater than or equal to zero; (iv) redrawing a portion of the document, the portion ending at a location determined by a sum of a document spacer index and a buffer length, wherein the buffer length is greater than or equal to zero; or (v) redrawing a portion of the document for a maximum of a predetermined time interval.

[0012] These and other advantages of the disclosure will be apparent to those of ordinary skill in the art by reference to the following detailed description and the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013] Fig. 1 shows an embodiment of a system for providing online applications services;

[0014] Fig. 2 shows an embodiment of user equipment;

[0015] Fig. 3 shows an embodiment of a graphical user interface;

[0016] Fig. 4 shows an embodiment of an applications window;

[0017] Fig. 5A and Fig. 5B illustrate character, string, and block edit operations;

[0018] Fig. 6A and Fig. 6B illustrate a scroll operation;

[0019] Fig. 7A and Fig. 7B illustrate a spacer index operation;

[0020] Fig. 8A and Fig. 8B illustrate a global edit operation;

[0021] Fig. 9A and Fig. 9B illustrate a change view operation;

[0022] Fig. 0A and Fig. 10B illustrate an image insertion operation;

[0023] Fig. 1 1 A - Fig. 11 D show a flowchart of an embodiment of a method for asynchronous redrawing on download;

[0024] Fig. 12A - Fig. 12C show a flowchart of an embodiment of a method for asynchronous redrawing on edit of a document previously downloaded and redrawn; and

[0025] Fig. 13 shows an embodiment of a computational system for implementing a document processor. DETAILED DESCRIPTION

[0026] Fig. 1 shows an embodiment of a system for providing online applications services. Computer applications are loaded onto one or more applications servers, such as applications server 1 1 10 and applications server 2 1 12. The applications servers communicate with communications network 102. Examples of communications network 102 include circuit- switched and packet-switched networks, public or private. In one

embodiment, communications network 102 represents the global Internet.

[0027] One or more users, such as user 1 120 - user 3 124, access applications server 1 1 10 and applications server 2 1 12 via user equipment, such as user equipment 1 130 - user equipment 3 134, respectively, that communicate with communications network 102. Examples of user equipment include personal computers, laptop computers, personal digital assistants, and cell phones. The communications links can be wired or wireless. In the example shown in Fig. 1 , user equipment 1 130 and user equipment 2 132 are personal computers that communicate with

communications network 102 over wired links, and user equipment 3 134 is a laptop computer, outfitted with a wireless modem, that communicates with communications network 102 over a wireless link.

[0028] Fig. 2 shows an embodiment of user equipment. User equipment 1 130 in Fig. 1 is shown as an example. Personal computer 202 communicates with communications network 102. A user provides input to personal computer 202 via a user input device, such as mouse 204, keyboard 206, or video display 208 (equipped with a touch screen, for example).

Personal computer 202 provides user output via video display 208. Personal computer 202 can also provide user output via other user output devices, such as a printer (not shown).

[0029] Fig. 3 shows an embodiment of a graphical user interface. The graphical user interface is displayed on video display 208. A user launches a web browser in web browser window 302 and enters the uniform resource locator (URL) of an applications services provider in URL field 304. In this example, the URL is referenced as www.applications.com. The website of the applications services provider is displayed in website window 310. Presented in website window 310 are three icons (icon 320, icon 322, and icon 324), that represent application 1 , application 2, and application 3, respectively. A user selects a particular application by using mouse 204 to position a cursor 330 over a particular icon. In the example shown in Fig. 3, the user selects icon 320 and double-clicks mouse 204 to launch application 1.

[0030] Examples of typical applications include word processors, spreadsheets, presentation programs, and drawing programs. The distinction between various types of applications has blurred since several functions can be comingled in a single application. For example, pictures can be inserted into a page of text, and some word processors have integral drawing programs. Furthermore, word processors, spreadsheets, presentation programs, and drawing programs can be embedded into one another. For example, a spreadsheet or drawing program can be embedded in a word processor, and the spreadsheet or drawing program can be launched from within the word processor.

[0031] Herein, a document processor refers to a computer application that receives, as user input, text or a combination of text and graphical elements; performs a user-specified operation or set of operations on the user input; and generates, as user output, text or a combination of text and graphical elements. The user output is referred to as a document. In an embodiment, a document is stored as a computer file. Portions of, or the entirety of, a document can be displayed on a video display or printed on a printer.

[0032] In an embodiment, application 1 is a document processor. When application 1 is launched, an applications window is opened. Fig. 4 shows an embodiment of an applications window. Shown are three representative fields. Display field 402 displays contents of a document. Scroll bar 420 controls the portion of the document displayed in display field 402. Toolbar 410 includes multiple virtual function keys, referenced as virtual function key 41 OA - virtual function key 41 OF. Common examples of virtual function keys include "File", "Edit", "View", "Insert", "Tools", and "Table". A user selects a virtual function key, for example, by using mouse 204 (Fig. 2) to position cursor 430 over it and executes the corresponding function by clicking or double-clicking the mouse.

[0033] The following sets of figures [(Fig. 5A, Fig. 5B) - (Fig. 10A, Fig. 10B)] show display screens of various edit operations. Herein, edit operations include operations that change the contents of the document and operations that change the layout of the document. Herein, edit operations also include operations that change the displayed portion of the document, but not the content or layout of the document; for example, scrolling through a document is considered to be an edit operation. Printing a document is also considered to be an edit operation. In each set of figures, the "A" view shows the initial view of the document, and the "B" view shows the view of the document after an edit operation has been performed.

[0034] Fig. 5A and Fig. 5B illustrate character, string, and block edit operations. In Fig. 5A and Fig. 5B, the dashed rectangles are shown only to reference specific features and are not part of the displays. Single character edits are illustrated by comparing word 512A in view 502A to word 512B in view 502B (deletion of the character "2") and by comparing word 514A in view 502A to word 514B in view 502B (insertion of character "X"). String edits are illustrated by comparing string 516A in view 502A to string 516B in view 502B (double strikethrough of all characters in the string). Block edits are illustrated by comparing block 518A in view 502A to block 518B in view 502B

(reformatting the font and style within the block). Note that a block can include a substantial portion, or even the entirety, of a document.

[0035] Fig. 6A and Fig. 6B illustrate a scroll operation. In view 602A, "LINE 01 - LINE 12" of the document are displayed. After the scroll operation, "LINE 21 - LINE 32" of the document are displayed in view 602B. Note: The typographical errors in Fig. 6B (the incorrect "SINE 21 " instead of the correct "LINE 21 " and the incorrect "WORD6E" instead of the correct "WORD64") are intentional and are discussed below. [0036] Fig. 7 A and Fig. 7B illustrate a spacer index operation.

Herein, a spacer index refers to a user-specified reference location within a document. A spacer index, for example, can be indicated by the position of a cursor on a display. In view 702A, "LINE 01 - LINE 12" of the document are displayed. Spacer index 712A is located at "WORD01 " in "LINE 01 ". In this example, "WORD01 " has an embedded hypertext link. The user clicks on "WORD01 ", and the spacer index jumps to spacer index 712B located at "WORD805" in "LINE 403" in view 702B. Other operations can cause the spacer index to jump. For example, if the document supports bookmarks, clicking on a bookmark will cause the spacer index to jump to the location of the bookmark. The display shows a portion of the document in the

neighborhood of the bookmark. In the examples above, the spacer index referred to a location of a word. In general, the resolution of a spacer index can be finer; for example, the location of a character or a graphical element.

[0037] Fig. 8A and Fig. 8B illustrate a global edit operation. In view 802A, the margin is set at margin 812A. In view 802B, the margin has been reset to margin 812B. In this example, the margin has been reset globally for the entire document. In another example of a global operation, the font of the entire document is changed from "Arial" to "Times Roman".

[0038] Fig. 9A and Fig. 9B illustrate a change view operation. In view 902A, the "View Markup" feature is turned off; in view 902B, the "View Markup" feature is turned on. The "View Markup" feature displays changes in the current version of the document with respect to a previous version of the document; in some document processors, the "View Markup" feature also displays comments. Word 912A in view 902A was previously deleted; the deleted word is indicated as word 912B ("WORD 1 ^1") in view 902B. Word 914A ("WORD18") in view 902A was previously added; the added word is indicated as word 914B ("WORD18'") in view 902B. Also shown in view 902B are comment 1 916B from user 1 and comment 918B from user 2.

[0039] Fig. 10A and Fig. 10B illustrate an image insertion operation. ln iew 1002A, "LINE 101 - LINE 1 12" of the document are displayed. In view 1002B, image 1012B has been inserted after "LINE 104". Consequently, the portion of the document from "LINE 105" on is pushed down, affecting subsequent pagination.

[0040] In an embodiment, a document has been previously created and stored on an online document processor. To edit the document, the online document processor first downloads the document to user equipment. Herein, downloading a document refers to transmitting the document from an application server to user equipment. The downloading process is controlled by the online document processor in response to receiving a user command. With a single-threaded browser, the user cannot perform edit operations on the document during the downloading process. If the document length is substantial, or if the document has complex contents (such as images), the download time can be substantial, and the user experience can be

unsatisfactory. In common operation, the entire document is first

downloaded. The entire document is then redrawn, and a portion of the document is displayed. The user then proceeds to edit the document.

[0041] Herein, the operation of redrawing a document refers to the operation of formatting the layout of the document. The redrawing operation is performed by the online document processor. The layout of the document includes graphical characteristics such as margins, pagination, line spacing, fonts, holding, underlining, headers, footers, comments, drawings, and images. Herein, redrawing a document includes the first instance in which a document is drawn.

[0042] In a synchronous redrawing operation, the document is redrawn upon receiving a user command that requires a redrawing operation. During the redrawing operation, a new user command cannot be processed. A new user command is processed only upon completion of the redrawing operation. Embodiments of redrawing operations described below perform asynchronous redrawing operations. In an asynchronous redrawing operation, a portion of a redrawing operation can be delayed or interrupted. A new user command can be processed before the redrawing operation has been completed, and the redrawing operation can be completed at a later time. [0043] In an embodiment, the location within a document is determined with respect to the beginning (also referred to as the top) of the document. The portion of the document between the top of the document and a location of interest is referred to as a portion of the document above the location of interest. The portion of the document between the location of interest and the end (also referred to as the bottom) of the document is referred to as a portion of the document below the location of interest.

[0044] In an embodiment, a portion of interest of a document is displayed in a display field at a particular time of interest. The layout of the displayed portion of interest is determined both by the layout of the displayed portion of interest and the layout of the-portion of the document above the displayed portion of interest (for example, changes in margins can change pagination). The layout of the displayed portion of interest is not affected by the layout of the portion of the document below the displayed portion of interest.

[0045] Herein, a location in the display field is mapped to a location in the displayed portion of the document, and a location in the displayed portion of the document is mapped to a location in the display field. Herein, a location in the document is referred to as a document location, and a location in the display field is referred to as a display location.

[0046] For example, refer back to Fig. 6A and Fig. 6B. In Fig. 6A and Fig. 6B, the display location referred to as the display start-of-display point 601 and the display location referred to as the display end-of-display point 603 delimit the display field (which is rectangular in this instance). In Fig. 6A, the display start-of-display point 601 is mapped to the document start-of-display point corresponding to the character "L" at the beginning of LINE 01 , and display end-of-display point 603 is mapped to the document end-of-display point corresponding to the character "4" at the end of LINE 12. In Fig. 6B, after the scroll operation, display start-of-display point 601 is mapped to the document start-of-display point corresponding to the character "S" at the beginning of LINE 21 , and display end-of-display point 603 is mapped to the document end-of-display point corresponding to the character "E" at the end of LINE 32.

[0047] Mapping between a document location and a display location can be performed by various methods. In an embodiment, the document includes only lines of text. The online document processor stores the height (in pixels) of every document line of text. The online document processor receives from the web browser the height (in pixels) of the display field. When the document is downloaded, the number of document lines mapped to the display field is calculated from the height of the display field and the height of each document line.

[0048] During a scroll operation, the online document processor tracks how far down from the top of the document the user has scrolled. The document line mapped to the top of the display field is determined by summing the heights of all the lines from the top of the document until the sum of the heights equals the distance that has been scrolled. The document line mapped to the bottom of the display field is determined by adding document lines to the document line mapped to the top of the display field until the sum of the heights of the additional document lines equals the height of the display field. One skilled in the art can implement similar methods for documents including graphical elements.

[0049] In general, a user performs edit operations based on the displayed portion of interest. As discussed above, with a single-threaded browser, a user cannot enter new user input while the document is being downloaded or redrawn. To reduce the hold time between user inputs, embodiments initially process only those portions of the document that affect the displayed portion of interest. Processing of the portions below the displayed portion of interest are deferred.

[0050] Fig. 1 1 A - Fig. 1 1 D show a flowchart of an embodiment of a method for asynchronous redrawing on initial download. A previously created document is stored on an applications server, and a user accesses an online document processor to edit the document. Reference marks shown as an alphabetical character inside a hexagon are used to maintain continuity among Fig. 1 1A - Fig. 1 1 D. The reference marks are reference mark A 1 131 , reference mark B 1 141 , reference mark C 1 151 , reference mark D 1 143, and reference mark E 1 163. The reference marks are shown in the figures as visual aids but are not explicitly included in the description below.

[0051] Refer to Fig. 1 1A. In block 1 102, the online document processor receives a download command. The process then passes to block 1 108, in which downloading of the document is started. The process then passes to block 1 1 10, in which redrawing of the document is started, and then to block 1 1 12, in which display of the document is started.

[0052] The process then passes to block 1 1 14, in which the document location at the end of the redrawn portion is compared to the document end-of-display point (DOC E-O-D PT). As discussed above, the document end-of-display point is the location in the document mapped to the display end-of-display point in the display field of a user's video display. If the document end-of-display point has not been reached, then the process passes to block 1 120, in which downloading of the document is continued. The process then passes to block 1 122, in which redrawing of the document is continued, and then to block 1 124, in which the display field is updated.

[0053] The process then returns to block 1 1 14. If the document end-of-display point has been reached, then the process passes to block 1 130, in which downloading is continued until a buffer is filled. The size of a buffer is specified by a buffer length. In an embodiment, the buffer length corresponds to a number of lines in the document or to the number of lines equivalent to the space occupied by a graphical object such as an image. In an embodiment, a buffer size sufficient to hold one or two nominal paragraphs is used.

[0054] The process then passes to block 1 132, in which a timer 1 is started. The process then passes to block 1 136, in which receipt of an edit command is determined. If no edit command has been received, then the process passes to block 1 138, in which the elapsed time is determined and compared to a predetermined maximum time T1 MAX. Herein, a timer expires when the elapsed time from the start of the timer reaches a predetermined maximum time. If the elapsed time is less than T1 MAX, then the process returns to block 1 136. One skilled in the art can set the value of the

predetermined maximum time T1 MAX (and the values of the predetermined maximum time T2MAX and predetermined maximum time T3MAX, described below) to provide an appropriate balance between the time allocated for receiving an edit command and the time allocated for performing a redraw operation. Further consideration of time intervals is discussed below.

[0055] If the elapsed time is greater than or equal to T1 MAX, then the process passes to block 1 140 (Fig. 1 1 B), in which a timer 2 is started. The process then passes to block 1 142, in which redrawing of the contents of the buffer- is started. The process then passes to block 1 144, in which the elapsed time is determined and compared to a predetermined maximum time T2MAX. If the elapsed time is less than T2MAX, then the process passes to block 1 146, in which the state of the buffer (empty or not empty) is

determined. If the buffer is not empty, then the process returns to block 1 142. If the buffer is empty, then the process passes to block 1 190 (Fig. 1 1 D), described below.

[0056] Now refer back to block 1 144. If the elapsed time is greater than or equal to T2MAX, then the process passes to block 1 148, in which the state of the buffer is determined. If the buffer is empty, then the process passes to block 1 190 (Fig. 1 1 D), described below. If the buffer is not empty, then the process returns to block 1 132 (Fig. 1 1A), and a new timer 1 is started.

[0057] Refer to Fig. 1 1 D. In block 1 190, the state of the download (download completed or not completed) is determined. If the download has been completed (that is, the entire document has been downloaded), then the process ends in block 1 192. If the download has not been completed, then the process passes to block 1 194, in which a buffer is filled (that is, another portion of the document is downloaded). The buffer size in step 1 194 can be the same as or different from the buffer size in step 1130 (Fig. 1 1 A). The process then returns to block 1132 (Fig. 1 1 A), and a new timer 1 is started. [0058] Now refer back to block 1 136 in Fig. 1 1 A. If an edit command has been received, then the process passes to block 1 150 in Fig. 1 1 C. Based on the received edit command, one of the following redraw operation modes is selected: all mode 1 152, view mode 1 156, scroll mode 1 160, spacer index mode 1 164, or time mode 1 170. The all mode is selected, for example, when the user issues a command to print the entire document. The view mode is selected, for example, for the edit operation previously shown in (Fig. 9A, Fig. 9B). The scroll mode is selected, for example, for the edit operation previously shown in (Fig. 6A, Fig. 6B). The spacer index mode is selected, for example, for the edit operation previously shown in (Fig. 7A, Fig. 7B). The time mode is selected, for example, for the edit operation previously shown in (Fig. 8A, Fig. 8B).

[0059] The view, scroll, and spacer index modes are used to provide the highest priority for the redraw operation. The displayed portion of the document needs to be up-to-date before the user enters the next edit command. The time mode is used when the entire redraw operation does not to be completed before the user enters the next edit command. For example, a global reset of the margins of a long, complex document can require substantial processing time. Once the margins up to and including the portion of interest have been reset, however, resetting the margins on the remaining portion of the document can be deferred.

[0060] In the time mode, the document processor operates in a time division multiplex mode. The document processor performs a sequence of operations in which a time interval (referred to herein as an edit time interval) for accepting an edit command is alternated with a time interval (referred to herein as a redraw time interval) for performing a redraw operation. The edit time interval and the redraw time interval can both be independently set. In some embodiments, the edit time interval is equal to the redraw time interval. In other embodiments, the edit time interval is not equal to the redraw time interval. If the hold time that the user needs to wait between entries of consecutive edit commands is less than a maximum value, the user experience is satisfactory. In an embodiment, the maximum value is approximately 200 milliseconds.

[0061] Refer now back to block 1 152. If the all mode 1 152 is selected, then the process passes to block 154, in which all of the

downloaded portion of the document is redrawn. In some instances, the remaining portion of the document (that is, the portion of the document that has not yet been downloaded) is downloaded, and the entire document is redrawn.

[0062] If the view mode 156 is selected, then the process passes to block 1 158, in which the portion of the document up to and including the document end-of-display point is redrawn. An additional portion of the document below the document end-of-display point can be redrawn as a buffer. In general, in the view mode, the portion of the document redrawn ends at the document end-of-display point plus a buffer length, where the buffer length is greater than or equal to zero. The process then passes to block 1 190 (Fig. 1 1 D), described above.

[0063] If the scroll mode 1 160 is selected, then the process passes to block 1 162, in which the portion of the document up to and including a document scroll point (DOC SCROLL PT) is redrawn. The document scroll point is a location in the displayed portion of the document mapped to a location in the display field upon completion of a scroll operation. The document scroll point can be the same as the document end-of-display point. An additional portion of the document below the document scroll point can be redrawn as a buffer. In general, in the scroll mode, the portion of the document redrawn ends at the document scroll point plus a buffer length, where the buffer length is greater than or equal to zero. The process then passes to block 1 190 (Fig. 1 1 D), described above.

[0064] If the spacer index mode 1164 is selected, then the process passes to block 1 166, in which the portion of the document up to and including a document spacer index is redrawn. Spacer indexes were previously described in reference to Fig. 7A and Fig. 7B. An additional portion of the document below the document spacer index can be redrawn as a buffer. In general, in the spacer index mode, the portion of the document redrawn ends at the document spacer index plus a buffer length, where the buffer length is greater than or equal to zero. The process then passes to block 1 190 (Fig. 1 1 D), described above.

[0065] If the time mode 1 170 is selected, then the process passes to block 1 172, in which a timer 3 is started. The process then passes to block 1 174, in which redrawing of the contents of the buffer is started. The process then passes to block 1 176, in which the elapsed time is determined and compared to a predetermined maximum time T3MAX. If the elapsed time is less than T3MAX, then the process passes to block 1 178, in which the state of the buffer is determined. If the buffer is not empty, then the process returns to block 1 174. If the buffer is empty, then the process passes to block 1 190 (Fig. 1 1 D), described above.

[0066] Now refer back to block 1 176. If the elapsed time is greater than or equal to T3MAX, then the process passes to block 1 180, in which the state of the buffer is determined. If the buffer is empty, then the process passes to block 1 190 (Fig. 1 1 D), described above. If the buffer is not empty, then the process returns to block 1 32 (Fig. 1 1A), and a new timer 1 is started.

[0067] Fig. 12A - Fig. 12C show a flowchart of an embodiment of a method for asynchronous redrawing on edit of a document by an online document processor. The document can either be a new document or a document previously downloaded from an applications server and redrawn by the online document processor. As previously discussed with respect to Fig. 11A - Fig. 1 1 D, reference marks are shown in Fig. 12A - Fig. 12C as visual aids but are not explicitly included in the description below. The reference marks are reference mark A 1201 , reference mark B 1203, reference mark C 1271 , and reference mark D 1281 .

[0068] Refer to Fig. 12A. In block 1202, the online document processor determines whether an edit command has been received. The process then passes to block 1204. If an edit command has not been received, then the process returns to block 1202. If an edit command has been received, then the process passes to block 1220 (Fig. 12B). Based on the received edit command, one of the following redraw operation modes is selected: all mode 1230, view mode 1240, scroll mode 1250, spacer index mode 1260, or time mode 1270.

[0069] If the all mode 1230 is selected, then the process passes to block 1232, in which all of the document (the entire document) is redrawn. The process then returns to block 1202 (Fig. 12A).

[0070] If the view mode 1240 is selected, then the process passes to block 1242, in which the portion of the document up to and including the document end-of-display point is redrawn. An additional portion of the document below the document end-of-display point can be redrawn as a buffer. In general, in the view mode, the portion of the document redrawn ends at the document end-of-display point plus a buffer length, where the buffer length is greater than or equal to zero. The process then returns to block 1202 (Fig. 12A).

[0071] If the scroll mode 1250 is selected, then the process passes to block 1252, in which the portion of the document up to and including a document scroll point (DOC SCROLL PT) is redrawn. The document scroll point is a location in the displayed portion of the document mapped to a location in the display field upon completion of a scroll operation. The document scroll point can be the same as the document end-of-display point. An additional portion of the document below the document scroll point can be redrawn as a buffer. In general, in the scroll mode, the portion of the document redrawn ends at the document scroll point plus a buffer length, where the buffer length is greater than or equal to zero. The process then returns to block 1202 (Fig. 12A).

[0072] If the spacer index mode 1260 is selected, then the process passes to block 1262, in which the portion of the document up to and including a document spacer index is redrawn. Spacer indexes were previously described in reference to Fig. 7A and Fig. 7B. An additional portion of the document below the document spacer index can be redrawn as a buffer. In general, in the spacer index mode, the portion of the document redrawn ends at the document spacer index plus a buffer length, where the buffer length is greater than or equal to zero. The process then returns to block 1202 (Fig. 12A).

[0073] If the time mode 1270 is selected, then the process passes to block 1272, in which a buffer is filled. The process then passes to block 1274, in which a timer 1 is started. The process then passes to block 1276, in which redrawing of the contents of the buffer is started. The process then passes to block 1280, in which the elapsed time is determined and compared to a predetermined maximum time T1 MAX. If the elapsed time is less than T1 MAX, then the process passes to block 1278, in which the state of the buffer is determined. If the buffer is not empty, then the process returns to block 1276. If the buffer is empty, then the process returns to block 1202 (Fig. 12A).

[0074] Now refer back to block 1280. If the elapsed time is greater than or equal to T1 MAX, then the process passes to block 1282, in which the state of the buffer is determined. If the buffer is empty, then the process returns to block 1202 (Fig. 12A). If the buffer is not empty, then the process passes to block 1290 (Fig. 12C), in which a timer 2 is started. The process then passes to block 1292, in which receipt of an edit command is

determined. If an edit command is not received, then the process passes to block 1294, in which the elapsed time is determined and compared to a predetermined maximum time T2MAX. If the elapsed time is less than

T2MAX, then the process returns to block 1292. If the elapsed time is greater than or equal to T2MAX, then the process returns to block 1274 (Fig. 12B), and a new timer 1 is started.

[0075] Now refer back to block 1292. If an edit command has been received, then the process returns to block 1220 (Fig. 12B).

[0076] Systems, apparatus, and methods described herein can be implemented with digital circuitry or with one or more computers. A computer includes well-known processors, memory units, storage devices, software, and other components. Typically, a computer includes one or more

processors for executing computer program instructions and one or more memory units for storing data, including computer programming instructions. A computer can also include, or be operatively coupled to, one or more mass storage devices. A mass storage device can be a fixed internal device or a removable external device. Examples of mass storage devices include magnetic hard drives, optical disks, magneto-optical disks, and non-volatile semiconductor memory.

[0077] Systems, apparatus, and methods described herein can be implemented with computers operating in a client-server relationship.

Typically, the client computers are located remotely from the server computer. The client computers communicate with the server computer via a

communications network. The client-server relationship can be defined by, and controlled by, computer programs running on the respective client and server computers.

[0078] Systems, apparatus, and methods described herein can be used within a network-based cloud-computing system. In a network-based cloud-computing system, a computer server communicates with one or more client computers via a communications network. A client computer can communicate with the server computer, for example, via a network browser application residing on and operating on the client computer. A client computer can store and access data on the server computer via the

communications network. A client computer can transmit requests for data and requests for online services to the server computer via the

communications network. The server computer can perform the requested services and provide data to the client computer via the communications network. The server computer can also transmit computer program

instructions and data adapted to cause a client computer to perform a specified function, such as performing a calculation or displaying specified data on a video display.

[0079] Systems, apparatus, and methods described herein can be implemented using a computer program tangibly embodied in an information carrier, such as a non-transitory machine-readable storage device, for execution by a programmable processor. The method steps described herein can be implemented using one or more computer programs that are

executable by a programmable processor. A computer program is a set of computer program instructions that can be used, directly or indirectly, in a computer to perform a specified activity or bring about a specified result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including a stand-alone program or a module, component, subroutine, or other unit suitable for use in a computing environment.

[0080] Fig. 13 shows an example of a computational system for implementing an online document processor. Computational system 1302, for example, can be an embodiment of applications server 1 1 10 in Fig. 1 . The methods shown in the flowcharts of Fig. 1 1 A - Fig. 1 1 D and Fig. 12A - Fig. 12C can be performed by computational system 1302. One skilled in the art can construct the computational system 1302 from various combinations of hardware and software (including firmware). One skilled in the art can construct the computational system 1302 from various combinations of electronic components, such as general purpose microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), random access memory, and nonvolatile read-only memory.

[0081] Computational system 1302 includes computer 1310, which includes a central processing unit (CPU) 1312, memory 1314, and data storage device 13 6. Data storage device 1316 includes at least one non- transitory, persistent, tangible computer readable medium, such as a hard drive, compact disc, or non-volatile semiconductor memory.

[0082] Computational system 1302 can further include local input/output interface 320, which interfaces computer 1310 with local input/output device 1330, such as a keyboard, mouse, or local access terminal. Data, including computer executable code, can be transferred to and from computer 1310 via local input/output interface 1320. Computational system 1302 can further include video display interface 1322, which drives video display 1332. Computational system 302 can also receive input via video interface 1322 (for example, if video display 1332 includes a touch screen). Note that, in this instance, local input/output device 1330 and video display 1332 are operated by an applications service provider and not by an end user (examples of end users include user 1 120 - user 3 124 in Fig. 1 ).

[0083] Computational system 1302 can further include

communications network interface 1324, which interfaces computer 1310 with communications networks, such as local area networks and wide area networks. An example of a communications network is communications network 102 in Fig. 1 . Data, including computer executable code, can be transferred to and from computer 1310 via communications network interface 1324. Computational system 1302 can be remotely accessed and controlled via communications network 102. User input can be received and user output can be sent via communications network interface 1324.

[0084] As is well known, a computer operates under control of computer software, which defines the overall operation of the computer and applications. CPU 1312 controls the overall operation of the computer and applications by executing computer program instructions that define the overall operation and applications. The computer program instructions can be stored in data storage device 1316 and loaded into memory 1314 when execution of the program instructions is desired. The methods shown in the flowcharts in Fig. 1 1A - Fig. 1 1 D and Fig. 12A - Fig. 12C can be defined by computer program instructions stored in memory 1314 or in data storage device 1316 (or in a combination of memory 1314 and data storage device 1316) and controlled by the CPU 1312 executing the computer program instructions. For example, the computer program instructions can be implemented as computer executable code programmed by one skilled in the art to perform algorithms implementing the methods shown in the flowcharts in Fig. 1 1 A - Fig. 1 1 D and Fig. 12A - Fig. 12C. Accordingly, by executing the computer program instructions, the CPU 1312 executes algorithms

implementing the methods shown in the flowcharts in Fig. 1 1 A - Fig. 1 1 D and Fig. 12A - Fig. 12C. [0085] The foregoing Detailed Description is to be understood as being in every respect illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is not to be determined from the Detailed Description, but rather from the claims as interpreted according to the full breadth permitted by the patent laws. It is to be understood that the embodiments shown and described herein are only illustrative of the principles of the present invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention. Those skilled in the art could implement various other feature combinations without departing from the scope and spirit of the invention.