Claims
- 1. An apparatus for manipulating and recognizing ink stroke representations in a computing system having an input device, a display device, a memory and a processing unit, the apparatus comprising:
means for producing on a display device a plurality of parallel lines defining an area for inputting ink stroke representations; means for parsing ink stroke representations into drawings elements and writing elements, the means for parsing strokes, coupled to the processing unit and the input device, to receive ink stroke representations; and means for managing space between writing elements, the space management means modifying the amount of space between writing elements and modifying the display of writing elements in response to inputs from the input device.
- 2. The apparatus of claim 1, wherein the means for parsing ink stroke representations comprises:
means for associating an ink stroke representation with a line, the means for associating an ink stroke representation, coupled to means for producing, for determining the positions of lines on the display device and to input device for receiving the ink stroke representation; means for grouping lines of ink stroke representations into words, the means for grouping lines coupled to the means for associating; and means for grouping words into paragraphs, the means for grouping words coupled to the means for grouping lines and the processing unit.
- 3. The apparatus of claim 1, further comprising recognition means for processing a writing element and producing characters that the writing element is likely to represent, the recognition means stored in memory and controlling the processing unit.
- 4. The apparatus of claim 1, further comprising stroke storage means for reducing the data required to define a stroke, the stroke storage means coupled to the input device for receiving data defining a stroke, coupled to the processing unit for reducing the data defining the stroke, and coupled to the memory for storing the reduced data defining the stroke.
- 5. The apparatus of claim 1, further comprising stroke output means for smoothing the appearance of ink stroke representations stored in the memory, the stroke output means coupled to control the processor to redefine the data forming the stroke and outputting the data to an output device.
- 6. The apparatus of claim 1, further comprising highlighting means for displaying drawing elements in a visually distinct manner from writing elements, the highlighting means coupled to control the processing unit to modify the display of drawing elements on the display device.
- 7. A computerized method for grouping a plurality of ink stroke representations with a line area, said method comprising the steps of:
defining a plurality of line areas that divide a screen display; determining the bounds of the strokes; dividing the strokes into a chained group where each stroke in the chained group is within a predetermined horizontal distance and a predetermined vertical distance of another stroke in the group; determining a bounding box the chained group of strokes; calculating a weighted center for the bounding box; and associating the strokes in the chained group with the line area in which the weighted center for the bounding box lies.
- 8. The method of claim 7, wherein the step of associating the strokes with a line area further comprises the steps of:
determining whether the stroke was made over an area defined to be ink, setting the stroke to be ink if it was made over an area defined to be ink; determining whether the stroke was made below or above an area defined to be ink; and setting the stroke to be ink if it was made below or above an area defined to be ink.
- 9. The method of claim 8, wherein the step of associating the strokes with a line area further comprises the steps of:
identifying the stroke as a punctuation mark; determining whether the stroke was made within a predetermined tolerance of the bottom right corner of a word; and associating the stroke with the same line as the word, if the stroke was made within a predetermined tolerance of the bottom right corner of the word.
- 10. The method of claim 7, wherein the step of dividing the strokes into a chained group further comprises the steps of:
identifying a first midpoint on a left side of the bounding box of a first stroke; identifying a second midpoint on a right side of the bounding box of a second stroke; determining whether the vertical distance between the first midpoint and the second midpoint is greater than predetermined vertical distance; determining whether the horizontal distance between the first midpoint and the second midpoint is greater than predetermined horizontal distance; creating a new chained group with the second stroke if either the vertical distance between the first midpoint and the second midpoint is greater than predetermined vertical distance or the horizontal distance between the first midpoint and the second midpoint is greater than predetermined horizontal distance.
- 11. The method of claim 7, wherein the step of dividing the strokes into a chained group further comprises the steps of:
identifying a waterline value and a left side of the bounding box of a first stroke; identifying a waterline value and a right side of the bounding box of a second stroke; determining whether the vertical distance between a first point at the waterline value and left side of the bounding box of the first stroke and a second point at the waterline value and the right side of the bounding box of the second stroke is greater than predetermined vertical distance; determining whether the horizontal distance between the first point and the second point is greater than predetermined horizontal distance; and creating a new chained group with the second stroke if either the vertical distance between the first point and the second point is greater than predetermined vertical distance or the horizontal distance between the first point and the second point is greater than predetermined horizontal distance.
- 12. The method of claim 11, wherein identifying the waterline value for a stroke comprises the steps of:
identifying the peak points in the stroke; identifying the valley points in the stroke; creating a total of the vertical coordinates of the peak points; weighting the total of the vertical coordinates of the peak points by a predetermined value; creating a total of the vertical coordinates of the valley points; identifying the number of peak points and the number of valley points; weighting the number of peak points by the predetermined value; setting the waterline value to the sum of the weighted total of vertical coordinates of the peak points and the total of the vertical coordinates of the valley points divided by the sum of the weighted number of peak points and the number of valley points.
- 13. The method of claim 12, wherein the predetermined value is four.
- 14. The method of claim 7, wherein the step of calculating a weighted center for the bounding box comprises the steps of:
determining a vertical center for each stroke in the chained group; averaging the vertical centers of the strokes in the chained group; and multiplying the average of the vertical centers by a weighting factor.
- 15. The method of claim 14, wherein the weighting factor is two-thirds.
- 16. The method of claim 7, wherein the step of calculating a weighted center for the bounding box comprises the steps of:
determining the waterline value for each stroke of the chained group; and averaging the waterline values of the strokes in the chained group.
- 17. The method of claim 7, wherein the step of associating the strokes in the chained group further comprises steps of:
determining whether the strokes in the chained group extend less than half a line height vertically; determining whether the strokes in the chained group extend less than half a line height horizontally; and if the whether the strokes in the chained group extend less than half a line height vertically and horizontally, associating the strokes in the chained group with the line in which the top of the stroke plus {fraction (1/24)} of a line height lies.
- 18. A computerized method for automatically determining whether a word in the line is a valid bullet character, the method comprising the steps of:
selecting a first word on a line; selecting a stroke of the first word; determining whether the stroke has the height and width to be a valid bullet character; and identifying the word to be a valid bullet character if the stroke has the height and width to be a valid bullet character.
- 19. The method of claim 18, further comprises steps of:
repeating the steps of selecting and determining for each stroke in the first word; and wherein the step of identifying the word to be a valid bullet character is performed only if all the strokes of the first word are found to the have the height and width to be a valid bullet character.
- 20. The method of claim 18, wherein the step of selecting a first word on a line selects the word having a left boundary with the leftmost position on the line.
- 21. The method of claim 18, wherein the step of determining whether the stroke has the height and width to be a valid bullet character, further comprises steps of:
determining whether the stroke has the height and width to be a dash character; and determining whether the stroke has the height and width to be a bullet character; and where in the identifying step, the word is identified as a valid bullet character if the stroke is determined to be either a dash character or a bullet character.
- 22. The method of claim 21, wherein the step of determining whether the stroke has the height and width to be a dash character, further comprises steps of:
determining whether the stroke has a height less than or equal to about one-fifth a line height; determining whether the stroke has a width greater than or equal to about one-fifth a line height and less than about 1.5 line heights; determining whether the stroke has a height between about one-fifth and four-fifths of a line height above a base line of the line associated with the stroke; identifying the stroke as a dash character if the stroke has a height less than or equal to about one-fifth a line height, the stroke has a width has a width greater than or equal to about one-fifth a line height and less than about 1.5 line heights, and the stroke has a height between about one-fifth and four-fifths of a line height above a base line of the line associated with the stroke.
- 23. The method of claim 22, wherein the step of determining whether the stroke has the height and width to be a dash character, further comprises step of determining whether the stroke has an aspect ratio of less than half.
- 24. The method of claim 21, wherein the step of determining whether the stroke has the height and width to be a bullet character, further comprises steps of:
determining whether the stroke has a width less than two-thirds of line height; and determining whether the stroke has a height between about one-fifth and four-fifth of a line height above a base line of the line associated with the stroke; and identifying the stroke as a bullet character if the stroke has a width less than two-thirds of line height and the stroke has a height between about one-fifth and four-fifths of a line height above a base line of the line associated with the stroke.
- 25. The method of claim 21, further comprising the steps of:
determining whether the stroke height is less than one-sixth a line height; determining whether the stroke has an aspect ratio less than about 2.5; wherein the word is identified as a valid bullet character only if the stroke height is not less than one-sixth a line height and the aspect ratio of the stroke is not less than about 2.5.
- 26. A computerized method for modifying the amount of space between a plurality of ink stroke representations on a display device of a computing system, said method comprising the steps of:
inputting a space command; receiving a pen down event; determining the line and horizontal position of the pen down event; displaying an insertion caret at the position of the pen down event; receiving additional pen events; updating the display of the insertion caret for the additional pen events received; determining whether any of the additional pen events received was a pen up event; and performing a space action if a pen up event has been received.
- 27. The method of claim 26, further comprising the steps of.
determining the current position of the pen; performing a horizontal spacing action if the current position of the pen is within half a line height of the line upon which the insertion caret is positioned; and performing a vertical spacing action if the current position of the pen is more than half a line height above or below the line upon which the insertion caret is positioned.
- 28. The method of claim 26, further comprising the steps of:
determining the current position of the pen; performing a horizontal spacing action if the current position of the pen is within the line upon which the insertion caret is positioned; and performing a vertical spacing action if the current position of the pen is above or below the line upon which the insertion caret is positioned.
- 29. The method of claim 26, wherein the insertion caret is a vertical line and a pair of triangles and wherein the position of the triangles is adjusted according to the additional pen events received.
- 30. A computerized method for modifying the amount of space between a plurality of ink stroke representations on a display device of a computing system, said method comprising the steps of:
displaying an insertion caret at a position on the display device; determining a line and horizontal position of the insertion caret; determining whether a pen down event with a position within a predetermined proximity of the insertion caret was input; receiving additional pen events; updating the display of the insertion caret for the additional pen events received if the pen down event was within a predetermined proximity of the insertion caret; determining whether any of the additional pen events receive was a pen up event; and performing a space action if a pen up event has been received and the pen down event was within a predetermined proximity of the insertion caret.
- 31. The method of claim 30, further comprising the steps of:
receiving inputs; determining if the input was a tap; determining the position of the input if the input was a tap; and displaying the insertion caret at the position of the input if the input was a tap.
- 32. The method of claim 30, further comprising the steps of:
determining the current position of the pen; performing a horizontal spacing action if the current position of the pen is within half a line height of the line upon which the insertion caret is positioned; and performing a vertical spacing action if the current position of the pen is more than half a line height above or below the line upon which the insertion caret is positioned.
- 33. The method of claim 30, further comprising the steps of:
determining the current position of the pen; performing a horizontal spacing action if the current position of the pen is within the line upon which the insertion caret is positioned; and performing a vertical spacing action if the current position of the pen is above or below the line upon which the insertion caret is positioned.
- 34. The method of claim 30, wherein the insertion caret is a vertical line and a pair of triangles and wherein the position of the triangles is adjusted according to the additional pen events received while the vertical line remains at the position on the display device.
- 35. The method of claim 34, wherein the updating of the display shows the triangles to the left or right of the vertical line in response to pen events that position the cursor proximate line upon which the vertical line is positioned.
- 36. The method of claim 34, wherein the updating of the display shows a first triangle at the position on the display device with the vertical line extended to contact a second triangle above or below the position on the display device in response to pen events that position the cursor above or below the line upon which the vertical line is positioned.
- 37. The method of claim 30, wherein the step of performing a space action uses the pen up event and the pen down event to determine the amount of spaced to be modified.
- 38. The method of claim 30, wherein the insertion caret comprises a vertical line, a first spacing triangle and a second spacing triangle, and wherein the predetermined proximity is a target area over and about the first and second spacing triangles.
- 39. The method of claim 38, wherein the target area is an area is a first substantially square area with a side of one-fifth a line height that includes first spacing triangle and a second substantially square area with a side of one-fifth a line height that includes the second spacing triangle.
- 40. The method of claim 30, wherein the step of performing a space action further comprises the steps of:
determining whether a horizontal space action is to be performed from the pen down and pen up positions; performing a horizontal space action if a horizontal space action is to be performed; and performing a vertical space action if a horizontal space action is not to be performed.
- 41. The method of claim 40, wherein the step of performing a vertical space action further comprises the steps of:
determining the vertical distance between the position of the pen up event and the position of the pen down event; determining whether the position of the pen up event is vertically below the position of the pen down event; inserting the determined vertical distance at the position of the pen down event, if the position of the pen up event is vertically below the position of the pen down event; and removing any end of paragraph markers between the position of the pen up event and the position of the pen down event, if the position of the pen up event is not vertically below the position of the pen down event.
- 42. The method of claim 41, wherein the determined the vertical distance between the position of the pen up event and the position of the pen down event is rounded to a number of lines.
- 43. The method of claim 40, wherein the step of performing a horizontal space action further comprises the steps of:
determining the horizontal distance between the position of the pen up event and the position of the pen down event; determining whether the position of the pen up event is to the left the position of the pen down event; inserting the determined horizontal distance at the position of the pen down event, if the position of the pen up event is not to the left the position of the pen down event; and removing the determined horizontal distance between the position of the pen up event and the position of the pen down event, if the position of the pen up event is to the left the position of the pen down event.
- 44. The method of claim 43, further comprises the steps of:
determining whether any words are positioned between the position of the pen up event and the position of the pen down event; and removing space between the position of the pen up event and the position of the pen down event and joining any words positioned between the position of the pen up event and the position of the pen down event into a single word, if words are found to be positioned between the position of the pen up event and the position of the pen down event.
- 45. The method of claim 43, further comprises the steps of:
determining if the position of the pen down event is over an existing word; identifying the left and right halves of the word if the position of the pen down event is over an existing word; splitting the word into a right word and a left word if the position of the pen down event is over an existing word; and wherein the step of inserting, insert the determined horizontal distance between the right word and the left word, if the position of the pen up event is not to the left the position of the pen down event and the position of the pen down event is over an existing word.
- 46. The method of claim 45, further comprises the steps of:
determining whether the right half of the word has at least one stroke; and wherein the step of inserting, inserts the determined horizontal distance to the right of the word, if the position of the pen up event is not to the left the position of the pen down event, the position of the pen down event is over an existing word, and the right half of the word does not have at least one stroke.
- 47. The method of claim 45, further comprises the steps of:
determining whether the left half of the word has at least one stroke; and wherein the step of inserting, inserts the determined horizontal distance to the left of the word, if the position of the pen up event is not to the left the position of the pen down event, the position of the pen down event is over an existing word, and the left half of the word does not have at least one stroke.
- 48. The method of claim 43, further comprises the steps of:
determining whether the pen down event is to the left of the first word in the line; determining the horizontal position of the pen up event; determining whether the position of the pen up event is on the first line of a paragraph; wherein the step of inserting space, inserts the horizontal distance to the first line indent if the position of the pen up event is on the first line of a paragraph, the pen down event is to the left of the first word in the line, and the position of the pen down event is to the left of the position of the pen up event or inserts the horizontal distance to the left indent if the position of the pen up event is not on the first line of a paragraph, the pen down event is to the left of the first word in the line, and the position of the pen down event is to the left of the position of the pen up event; and wherein the step of removing space, remove the horizontal distance from the first line indent if the position of the pen up event is on the first line of a paragraph, the pen down event is to the left of the first word in the line, and the position of the pen down event is not to the left of the position of the pen up event or removes the horizontal distance from the left indent if the position of the pen up event is not on the first line of a paragraph, the pen down event is to the left of the first word in the line, and the position of the pen down event is not to the left of the position of the pen up event;
- 49. A method for highlighting a drawing area and drawing elements when displayed in a system having a display device, a drawing layer for processing drawing elements and a writing layer for processing writing elements, the method comprising the steps of:
receiving an input; determining whether the input affects a drawing element; identifying the drawing element affected; determining the vertical and horizontal extents of the drawing element affected; and display a visually distinct identifier about the vertical and horizontal extents.
- 50. The method of claim 49, wherein the step of determining whether the input affects a drawing element tests whether a drawing element has been created, deleted or modified.
- 51. The method of claim 49, wherein the visually distinct identifier is a dashed border about the vertical and horizontal extents of the drawing.
- 52. The method of claim 49, wherein the visually distinct identifier includes a legend proximate the upper left corner of the identifier.
- 53. The method of claim 49, further comprising the steps of;
determining whether the vertical and horizontal extents of the affected object intersect with any other drawing elements; and setting the vertical and horizontal extents to be the extents of the affected object and the other drawing element if the extents of the affected object intersect with other drawing elements.
- 54. In a computer system, a method for processing ink stroke representations, the method comprising the steps of:
receiving a plurality of ink stroke representations; associating the ink stroke representations with lines and grouping the ink stroke representations into words and paragraphs; storing a group of ink stroke representations in a word object; rendering the group of ink stroke representations in the word object on the display device in response to a redraw command; performing character recognition on the group of ink stroke representations in the word object; and storing the result of performing character recognition.
- 55. The method of claim 54, further comprising the steps of:
determining whether a convert command has been input; replacing the group of ink stroke representations in the word object with the result of performing character recognition if the convert command has been input; and displaying the characters corresponding to the results of performing character recognition on the display device if the convert command has been input.
- 56. The method of claim 54, wherein the step of rendering is performed in parallel with the step of performing and storing.
- 57. In a computer system, a method for processing and storing ink stroke representations, the method comprising the steps of:
receiving a plurality of ordered points representing an ink stroke; creating a bit map having a bit for each point forming the stroke; creating a tinned ink stroke representation by removing a selected point; and storing the thinned ink stroke representation and the bit map.
- 58. The method of claim 57, wherein the step creating a thinned ink stroke representation removes the selected point if it is less than a predetermined distance from a closest point on the segment between a point previous to the selected point and a point after the selected point.
- 59. The method of claim 58, further comprising a step of updating the bit map by changing a bit corresponding to the selected point to indicate that the selected point has been removed.
- 60. The method of claim 57, wherein the step of creating a thinned ink stroke representation further comprises the step of:
setting T to be a first point; setting H to be a second point; identifying points between T and H for each point between T and H first measuring the distance from the point to a line between T and H; determining whether the measured distance for any of the points between T and H is greater than a predetermined distance; and removing the points between T and H and updating the bit map if the measured distance for all the points between T and H is not greater than the predetermined distance.
- 61. The method of claim 60, further comprises the following steps before the step of removing:
setting H to a point after point currently set as H; repeating the steps of identifying, measuring and determining; repeating the steps of setting and repeating if the measured distance is not greater than the predetermined distance for the points between T and H; and setting H to the point before point currently set as H.
- 62. In a computer system having first array and a second array, a method for processing and outputting ink stroke representations, the method comprising the steps of:
receiving a plurality of points representing an ink stroke and storing the plurality of points in the first array; retrieving a first point of the stroke and storing the first point in a second array; generating a first new point a first predetermined distance from the point in the first array on the line between the point in the first array and a point before the point in the first array; generating a second new point a second predetermined distance from the point in the first array on the line between the point in the first array and a point after the point in the first array; storing the first new point and the second new point in the second array; retrieving a last point of the stroke and storing the last point in a second array; and outputting the points stored in the second array as a representation of the ink stroke.
- 63. The method of claim 62, wherein the steps of generating the first new point, generating the second new point and storing are repeated for each point in the first array between the first point and the last point of the first array,
- 64. The method of claim 62, wherein the first predetermined distance is 25% of the distance between the point in the first array and the point before the point in the first array.
- 65. The method of claim 62, wherein the second predetermined distance is 25% of the distance between the point in the first array and the point after the point in the first array.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of pending U.S. patent application Ser. No.: 08/064,954, filed May 20, 1993, invented by D. Altman, S. Kusmer, G. Stikeleather and M. Thompson, and entitled “Method And Apparatus For Grouping And Manipulating Electronic Representations Of Handwriting, Printing And Drawings.”
Divisions (3)
|
Number |
Date |
Country |
Parent |
08744517 |
Nov 1996 |
US |
Child |
09542198 |
Apr 2000 |
US |
Parent |
08253546 |
Jun 1994 |
US |
Child |
08744517 |
Nov 1996 |
US |
Parent |
08064954 |
May 1993 |
US |
Child |
08744517 |
Nov 1996 |
US |