IP Library Granted Patent US 8,587,609
Granted Patent B1
US 8,587,609 · App. 12/510,834 · Granted Nov 19, 2013

Accuracy-adaptive and scalable vector graphics rendering

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 8,587,609
App. No.
12/510,834
Granted
Nov 19, 2013
Kind
B1
Abstract

Embodiments of the present invention provide methods and associated architecture of accuracy adaptive and scalable vector graphics rendering including rendering a graphic comprising a plurality of line segments by processing each of the plurality of line segments in a first pass, and processing each of a plurality of pixels through which the plurality of line segments pass in a second pass, automatically detecting one or more rendering errors of the graphic, and correcting the one or more rendering errors. Other embodiments may be described and/or claimed.

Claims (382)

1. A method for rendering a graphic in a rendering process, wherein the graphic comprises a plurality of line segments, the method comprising:

in a first pass of the rendering process, processing each of the plurality of line segments of the graphic to determine a plurality of pixels through which the plurality of line segments pass, and

in a second pass of the rendering process, processing each of the plurality of pixels through which the plurality of line segments pass to determine whether at least two of the plurality of line segments pass through a single pixel of the plurality of pixels;

automatically detecting one or more rendering errors of the graphic, wherein an error is detected in response to at least two of the plurality of line segments being determined to pass through a single pixel of the plurality of pixels; and

based on one or more rendering errors being detected, correcting the one or more rendering errors.

2. The method of claim 1 , wherein processing each of the plurality of line segments is performed, line segment by line segment, to collect statistics information for each of the plurality of pixels through which the plurality of line segments pass; and

wherein processing each of the plurality of pixels through which the plurality of line segments pass is performed in raster scan order, in order to at least determine a coverage value for each of the plurality of pixels.

3. The method of claim 2 , wherein the statistics information includes one or more of the following: visited, area, wind strength, and wind area.

4. The method of claim 2 , wherein the coverage value is a grayscale value, wherein the grayscale value is represented by G(x, y) and determined according to the following:

G

(

x

,

y

)

=

{

W

(

x

,

y

)

if

W

(

x

,

y

)

-

a

(

x

,

y

)

<

8

W

(

x

,

y

)

if

W

(

x

,

y

)

+

a

(

x

,

y

)

>

248

1

2

[

W

(

x

,

y

)

+

a

(

x

,

y

)

]

otherwise

where x and y indicate a position of a pixel of the plurality of pixels, W(x, y) represents accumulated wind area, and a(x, y) represents an associated area.

5. The method of claim 1 , wherein detecting one or more rendering errors of the graphic is performed during the second pass to detect a condition in which at least two of the plurality of line segments (i) have a similar moving direction, and (ii) pass through a single pixel of the plurality of pixels, wherein the condition is indicative of a rendering error.

6. The method of claim 1 , wherein detecting one or more rendering errors of the graphic is performed according to the following:

error_detected

=

{

1

if

s

(

x

,

y

)

>

16

or

w

(

x

,

y

)

>

256

1

if

W

(

x

,

y

)

-

a

(

x

,

y

)

>

16

or

W

(

x

,

y

)

+

a

(

x

,

y

)

<

240

0

otherwise

where x and y indicate a position of a pixel of the plurality of pixels, 1 indicates that an error is detected, 0 indicates that an error is not detected, s(x, y) represents a wind strength, w(x, y) represents a wind area, W(x, y) represents accumulated wind area, and a(x, y) represents an associated area.

7. The method of claim 1 , wherein correcting the one or more rendering errors comprises re-rendering the graphic at a higher resolution to avoid a condition where two of the plurality of line segments have a similar moving direction and pass through a single pixel of the plurality of pixels.

8. The method of claim 1 , further comprising performing area-based anti-aliasing including:

determining whether one or more corner points of each pixel of the plurality of pixels through which the plurality of line segments pass is inside or outside of a fill area; and

determining a coverage value for one or more pixels of the plurality of pixels based at least in part on the one or more corner points being inside or outside of the fill area.

9. The method of claim 8 , wherein performing area-based anti-aliasing further comprises:

filling one or more pixels by

iteratively scanning boundary edges of one or more pixels until a boundary edge having a corner point inside or outside of the fill area is found, and

determining a coverage value for one or more pixels adjacent to the boundary edge having the corner point inside or outside of the fill area, based at least in part on the corner point being inside or outside of the fill area.

10. The method of claim 8 , wherein whether one or more corner points of each pixel of the plurality of pixels through which the plurality of line segments pass is inside or outside of a fill area comprises is determined by:

conceptually shifting a corner point in a direction to avoid a condition where a line segment of the plurality of line segments passes through the corner point.

11. The method of claim 1 , wherein the graphic comprises at least one of a glyph or a scalable vector graphic.

12. The method of claim 1 , further comprising:

applying Bezier decomposition of one or more curves to provide at least one of the plurality of line segments.

13. The method of claim 2 , further comprising:

calculating or updating the statistics information for each of the plurality of pixels through which the plurality of line segments pass.

14. The method of claim 1 , wherein the rendering process of the graphic is performed, in parallel, on line segments of the plurality of line segments, to provide scalability over memory limitations.

15. An apparatus comprising:

a processor;

a storage medium coupled to the processor; and

a module stored on the storage medium, the module configured to

render a graphic comprising a plurality of line segments by

processing, via the processor, each of the plurality of line segments of the graphic to determine a plurality of pixels through which the plurality of line segments pass in a first rendering pass, and

processing, via the processor, each of a plurality of pixels through which the plurality of line segments pass in a second rendering pass to determine whether at least two of the plurality of line segments pass through a single pixel of the plurality of pixels,

wherein the module is further configured to

automatically detect one or more rendering errors of the graphic, wherein an error is detected in response to at least two of the plurality of line segments being determined to pass through a single pixel of the plurality of pixels, and

based on one or more rendering errors being detected, correct the one or more rendering errors.

16. The apparatus of claim 15 , wherein the processor is configured to process each of the plurality of line segments, line segment by line segment, to collect statistics information for each of the plurality of pixels through which the plurality of line segments pass; and

wherein the processor is further configured to process each of the plurality of pixels through which the plurality of line segments pass in raster scan order, in order to at least determine a coverage value for each of the plurality of pixels.

17. The apparatus of claim 16 , further comprising:

one or more hardware accelerators operatively coupled with the module to calculate a coverage impact for the plurality of line segments and update the statistics information based on the calculated coverage impact for each of the plurality of pixels through which the plurality of line segments pass, wherein the statistics information includes the following: visited, area, wind strength, and wind area.

18. The apparatus of claim 16 , wherein the coverage value is a grayscale value, wherein the grayscale value is represented by G(x, y), and determined according to the following:

G

(

x

,

y

)

=

{

W

(

x

,

y

)

if

W

(

x

,

y

)

-

a

(

x

,

y

)

<

8

W

(

x

,

y

)

if

W

(

x

,

y

)

+

a

(

x

,

y

)

>

248

1

2

[

W

(

x

,

y

)

+

a

(

x

,

y

)

]

otherwise

where x and y indicate a position of a pixel of the plurality of pixels, W(x, y) represents accumulated wind area, and a(x, y) represents an associated area.

19. The apparatus of claim 15 , wherein the module is configured to automatically detect one or more rendering errors of the graphic during the second pass to detect a condition in which at least two of the plurality of line segments have a similar moving direction and pass through a single pixel of the plurality of pixels, wherein the condition is indicative of an error.

20. The apparatus of claim 15 , wherein the module is configured to detect one or more rendering errors of the graphic according to the following:

error_detected

=

{

1

if

s

(

x

,

y

)

>

16

or

w

(

x

,

y

)

>

256

1

if

W

(

x

,

y

)

-

a

(

x

,

y

)

>

16

or

W

(

x

,

y

)

+

a

(

x

,

y

)

<

240

0

otherwise

where x and y indicate a position of a pixel of the plurality of pixels, 1 indicates that an error is detected, 0 indicates that an error is not detected, s(x, y) represents a wind strength, w(x, y) represents a wind area, W(x, y) represents accumulated wind area, and a(x, y) represents an associated area.

Assignments (4)
SECURITY INTEREST Recorded Sep 27, 2017
From: SYNAPTICS INCORPORATED
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 044037/0896 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2017
From: MARVELL INTERNATIONAL LTD.
To: SYNAPTICS INCORPORATED; SYNAPTICS LLC
Reel/Frame 043853/0827 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2009
From: WANG, HAOHONG; CHIN, YUNSEN; SHA, LI; XIANG, SHUHUA
To: MARVELL SEMICONDUCTOR, INC.
Reel/Frame 023036/0937 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2009
From: MARVELL SEMICONDUCTOR, INC.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 023036/0945 →