IP Library › Granted Patent US 9,792,517
Granted Patent B2
US 9,792,517 · App. 15/043,300 · Granted Oct 17, 2017

Method and system for generating and selectively outputting two types of ink vector data

Inventors: Plamen Petkov (Sofia, BG); Branimir Angelov (Sofia, BG); Kevin Louis Parkes (Shepton Mallet, GB)
Assignee: Wacom Co., Ltd.
G06K9/222G06F3/03545G06F3/04883G06K9/00416G06F2203/04807
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,792,517
App. No.
15/043,300
Granted
Oct 17, 2017
Kind
B2
Abstract

A computer-implemented method is provided to selectively output two types of vector data representative of user-input strokes. Type one stroke objects are generated in a device including a position input sensor, on which a user operates a pointer to generate a type one stroke object representative of a stroke. A stroke starts at a pen-down time at which the pointer is placed on the position input sensor and ends at a pen-up time at which the pointer is removed from the position input sensor. Real-time rendering of a type one stroke object is started after the pen-down time of a stroke without waiting for the pen-up time. After completion of a type one stroke object through its pen-up time, the type one stroke object is converted to a type two stroke object, which is a set of curves defining a boundary of the stroke, and can be rendered.

Claims (71)

1. A computer-implemented method of selectively outputting two types of vector data representative of user-input strokes, comprising:

generating type one stroke objects in a device including a position input sensor, wherein the type one stroke objects represent strokes formed by a user operating a pointer relative to the position input sensor, and each type one stroke object represents a stroke starting at a pen-down time at which the pointer is detectably placed relative to the position input sensor and ending at a pen-up time at which the pointer is removed from the position input sensor;

starting real-time rendering of a type one stroke object after the pen-down time of a stroke represented by said type one stroke object without waiting for completion of the stroke at the pen-up time;

after completion of a type one stroke object representative of a stroke from its pen-down time to its pen-up time, converting the type one stroke object to a type two stroke object, wherein the type two stroke object is a set of curves defining a boundary of the stroke; and

rendering the type two stroke object, instead of the corresponding type one stroke object, after the pen-up time of the stroke represented by said type one stroke object.

2. The computer-implemented method of claim 1 , wherein the step of generating type one stroke objects includes:

sequentially receiving pen event data detected by the position input sensor;

sequentially generating point objects based on coordinate values included in the received pen event data, wherein the point objects serve as control points for interpolating curve segments according to a defined curve interpolation algorithm to form a type one stroke object and wherein each point object is associated with width information; and

generating a type one stroke object as a collection of the point objects that define a stroke represented by the type one stroke object.

3. The computer-implemented method of claim 2 , wherein the step of generating type one stroke objects further includes:

sequentially obtaining at least one of color values and transparency values for the point objects; and

generating the type one stroke object as a collection of the point objects each associated with a color value and/or a transparency value.

4. The computer-implemented method of claim 2 , wherein the width information is indicative of a radius of a point object for use in defining a width of a stroke represented by the type one stroke object.

5. The computer-implemented method of claim 2 , wherein the defined curve interpolation algorithm is a Catmull-Rom Curve algorithm.

6. The computer-implemented method of claim 2 , wherein the step of starting real-time output of the type one stroke object includes:

segmenting each curve segment of the type one stroke object into multiple division points i;

applying the width information to each of the division points i to determine two outline curves forming the type one stroke object; and

rendering the type one stroke object by rasterizing between the two outline curves.

7. The computer-implemented method of claim 6 , wherein the division points i are in the same sequential order as a sequential order in which the stroke represented by the type one stroke object is user-inputted from the pen-down time to the pen-up time.

8. The computer-implemented method of claim 6 , wherein the step of segmenting the curve segments into multiple division points i includes:

as the division points, in addition to the control points, using filler points added to achieve a desired level of pixel resolution when the type one stroke object is rendered.

9. The computer-implemented method of claim 6 , wherein the step of starting real-time output of the type one stroke object further includes:

after the step of segmenting the curve segments into multiple division points i, applying smoothing to rearrange the division points i.

10. The computer-implemented method of claim 6 , wherein the step of rendering the type one stroke object includes:

defining a plurality of polygons between the two outline curves; and

rasterizing the polygons.

11. The computer-implemented method of claim 1 , wherein the step of converting the type one stroke object to the type two stroke object includes:

using a clipping algorithm, simplifying a shape of the type one stroke object into one or more simplified shapes that do not include self-intersection, wherein each simplified shape is defined by boundary points and the curves formed between the boundary points; and

outputting the one or more simplified shapes as the type two stroke object comprised of the set of curves defining the boundary of the stroke.

12. The computer-implemented method of claim 11 , wherein the clipping algorithm is a Vatti clipping algorithm or a Greiner-Hormann algorithm.

13. The computer-implemented method of claim 11 , wherein the boundary points are not in the same sequential order as a sequential order in which the stroke represented by the type two stroke object is user-inputted from the pen-down time to the pen-up time.

14. The computer-implemented method of claim 11 , wherein the step of simplifying the shape of the type one stroke object includes:

placing the boundary points at corners of the one or more simplified shapes.

15. The computer-implemented method of claim 11 , wherein the step of simplifying the shape of the type one stroke object includes:

applying smoothing to rearrange the boundary points.

16. The computer-implemented method of claim 11 , wherein the step of converting the type one stroke object to the type two stroke object further includes:

applying curve fitting to the type two stroke object.

17. The computer-implemented method of claim 11 , wherein the step of outputting the one or more simplified shapes as the type two stroke object includes:

rendering the type two stroke object on a display.

18. The computer-implemented method of claim 11 , wherein the curves formed between the boundary points are Bezier curves.

19. The computer-implemented method of claim 1 , further comprising:

storing the type one stroke objects;

storing the type two stroke objects; and

selectively outputting the type one stroke objects or the type two stroke objects depending on an output request.

20. The computer-implemented method of claim 19 , further comprising:

outputting the type one stroke objects in response to an output request from applications including a real-time drawing application and a text recognition application; and

outputting the type two stroke objects in response to an output request from applications including a bulk drawing application and a portable document format (PDF) application.

21. The computer-implemented method of claim 11 , further comprising:

adjusting a color value of each boundary point based on the color value and a transparency value of the boundary point; and

outputting the boundary points associated with adjusted color values in response to an output request from a portable document format (PDF) application.

22. A system of selectively outputting two types of vector data representative of user-input strokes, comprising:

a memory device;

a processor coupled to the memory device, wherein the processor is configured to perform:

receiving pen event data from a position input sensor, the pen event data being representative of strokes formed by a user operating a pointer relative to the position input sensor, each stroke starting at a pen-down time at which the pointer is detectably placed relative to the position input sensor and ending at a pen-up time at which the pointer is removed from the position input sensor;

generating type one stroke objects based on the received pen event data, wherein the type one stroke objects represent the strokes, respectively;

starting real-time rendering of a type one stroke object after the pen-down time of a stroke represented by said type one stroke object without waiting for completion of the stroke at the pen-up time;

after completion of a type one stroke object representative of a stroke from its pen-down time to its pen-up time, converting the type one stroke object to a type two stroke object, wherein the type two stroke object includes a set of curves defining a boundary of the stroke; and

rendering the type two stroke object, instead of the corresponding type one stroke object, after the pen-up time of the stroke represented by said type one stroke object.

23. The system of claim 22 , wherein the processor further performs:

storing the type one stroke objects in the memory device;

storing the type two stroke objects in the memory device; and

selectively outputting the type one stroke objects or the type two stroke objects depending on an output request.

24. A computer-implemented method of selectively outputting two types of vector data representative of user-input strokes, comprising:

generating type one stroke objects in a device including a position input sensor, wherein the type one stroke objects represent strokes formed by a user operating a pointer relative to the position input sensor, and each type one stroke object represents a stroke starting at a pen-down time at which the pointer is detectably placed relative to the position input sensor and ending at a pen-up time at which the pointer is removed from the position input sensor;

starting real-time rendering of a type one stroke object after the pen-down time of a stroke represented by said type one stroke object without waiting for completion of the stroke at the pen-up time;

after completion of a type one stroke object representative of a stroke from its pen-down time to its pen-up time, converting the type one stroke object to a type two stroke object, wherein the type two stroke object is a set of boundary points that represent a boundary of the entire stroke; and

rendering the type two stroke object, instead of the corresponding type one stroke object, after the pen-up time of the stroke represented by said type one stroke object.

25. The computer-implemented method of claim 24 , further comprising:

storing the type one stroke objects;

storing the type two stroke objects; and

selectively outputting the type one stroke objects or the type two stroke objects depending on an output request.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2016
From: PETKOV, PLAMEN; ANGELOV, BRANIMIR; PARKES, KEVIN LOUIS
To: WACOM CO., LTD.
Reel/Frame 038141/0168 →
Continuity (1)
Related Publication 20170236020A1 · Aug 17, 2017