-
Notifications
You must be signed in to change notification settings - Fork 2
/
readme.txt
146 lines (130 loc) · 6.19 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
Vectorial Polygon Rasterizer for Graphics32 1.23
================================================
Description:
A new polygon rasterizer that computes exact coverage values in floating point
precision. The rendering quality is on par with other high quality rasterizers,
such as AGG and FreeType.
Homepage:
<http://vpr.sourceforge.net>
Advantages:
- Coverage values are computed with exact sub-pixel accuracy;
- Support for rectangular clipping;
- Support for non-zero and even-odd fill modes;
- Supports poly-polygons;
- High performance - does not require oversampling;
- Supports the GR32 polygon fillers;
- Possible to implement custom renderers for different render targets;
- Support for General Polygon Clipper for performing polygon set operations.
Acknowledgements:
- Thanks to Angus Johnson and Anders Melander for helping me track down bugs.
- Thanks to Sanyin for providing SSE2 optimized CumSum implementation.
- Thanks to Michael Hinrichs for reporting about a buffer overflow bug.
Change log:
Version 1.00 (28 January 2009):
- First version. Benchmark demo included.
Version 1.01 (29 January 2009):
- Added {$I GR32.INC} to units to avoid range check errors;
- PolygonFS/PolyPolygonFS now have default parameter values for FillMode and
RasterMode;
- Fixed bug when using polygon filler (EMMS was not called);
- Fixed problem when passing zero length polygon arrays;
- Updated to correct dates in license preambles.
Version 1.02 (1 February 2009):
- Added Single precision version of Round (somewhat faster);
- Fixed a problem in the MakeAlpha*P functions that would result in
incorrect alpha values.
Version 1.04 (4 February 2009):
- Support for gamma correction (by defining USEGR32GAMMA symbol);
- Minor tweaks and optimizations.
Version 1.05 (11 February 2009):
- Added PolyFillline routine to GR32_PolygonsEx;
- Fixed vertical clipping problem;
- Minor tweaks and optimizations.
Version 1.06 (12 February 2009):
- Fix: scanlines that were completely filled were not painted.
Version 1.10 (25 February 2009):
- Changed the clipping mechanism. Clipping is now handled by the ClipPolygon
routine in GR32_VectorUtils.pas;
- Fix: coordinates were in some instances outside the clipping rectangle;
- Removed the RasterMode parameter (rmOptimize <> improved performance);
- Added support for open polylines;
- Added TJoinStyle and TEndStyle in PolyLine routines;
- Added LibArt to the benchmark tool.
Version 1.11 (26 February 2009):
- Added GR32_VectorGraphics unit, which includes auxiliary classes for
drawing paths.
Version 1.12 (28 February 2009):
- Added BuildDashedLine routine, for creating dashed strokes;
- Added Cairo Graphics to the benchmark tool;
- Minor tweaks and bugfixes.
Version 1.13 (2 Mars 2009):
- Changed naming of TEndStyle enumeration types, to avoid confusion;
- Changed MiterLimit parameter to conform with the SVG specification;
- Added TRenderSpanEvent type and changed declaration of TRenderSpanProc;
- Fixed bug in ClipPolygon routine.
Version 1.14 (3 Mars 2009):
- Fixed bug when rendering closed polylines;
- Fixed bug that caused coordinates outside the clipping rectangle to be
processed by the renderer.
Version 1.15 (4 Mars 2009):
- Fixed problem with line joins when polygon included zero-length segments.
Version 1.16 (4 Mars 2009):
- Fixed problems with line ends and open polylines.
Version 1.17 (16 Mars 2009):
- Fixed problem with line ends;
- Addded GR32_CFDG.pas -- a renderer for CFDG commands.
Version 1.18 (18 May 2009):
- Fixed problem in BuildPolyLine. Thanks to Dirk Carstensen for reporting.
Version 1.19 (25 May 2009):
- Fixed BuildPolyLine problem again. Thanks to Angus Johnson.
Version 1.20 (16 June 2009):
- Added support for LCD sub-pixel rendering (PolygonFS_LCD);
- Added TransformPolygon function to GR32_VectorUtils;
- Added AggLite library to the benchmark demo (thanks to Dmitry Gultyaev).
Version 1.21 (16 June 2009):
- Fixed D7 compilation problem;
- Fixed problems in LCD rendering routine.
Version 1.22 (17 June 2009):
- Added PolygonFS_LCD2 routine that performs an additional filtering pass.
The result is smoother, but the performance hit is bigger.
Version 1.23 (28 February 2010):
- Added General Polygon Clipper (gpc.pas) [covered by separate license];
- Added a GPC test project (originally written by Richard B. Winston);
- Added SSE2 optimized CumSum routine by Sanyin <[email protected]>;
- Fix: BuildDashedLine could return faulty line segments;
- Minor tweaks and optimizations.
Version 1.24 (30 April 2010):
- Maintenance update -- fixes a potential buffer overflow problem;
- Improved CumSum implementation by Sanyin.
Version 1.25 (6 November 2010):
- Maintenance update -- renaming/fixing broken packages.
Included files:
GR32_VPR.pas this unit includes the core routines for computing
coverage values for each scanline.
GR32_PolygonsEx.pas an interface to the GR32 library, with designated
polygon routines.
GR32_VectorUtils.pas misc. auxiliary routines used by the rasterizer.
demo\VPR_Benchmark.dpr benchmark demo (comparison with GR32_Polygons).
License:
This work is copyright Centaurix Interactive Designs / Mattias Andersson.
It is licensed under the terms of the Mozilla Public Licene 1.1
(MPL 1.1, available from http://www.mozilla.org/MPL/MPL-1.1.html)
3rd-party licenses:
- The General Polygon Clipping library is copyright (C) Advanced Interfaces
Group, University of Manchester and is free for non-commercial use only:
<http://www.cs.man.ac.uk/~toby/alan/software/gpc.html>
- AggPas and AggLite is copyright (C) Maxim Shemanarev:
<http://www.antigrain.com>
Contact Details:
Snailmail:
Mattias Andersson
Stranden 19
475 31 Öckerö
Sweden
E-mail:
Donations:
If you find this software useful, the best way to show your support would
be through a donation. See this page for more info:
<http://graphics32.org/donation/>
Copyright (C) 2008 - 2009 Mattias Andersson