Hello,
While you guys are on the subject of better splines. I propose to fix
grey_render_conic too. I think that interpreting the control point as a
corner is a simplistic overestimation. A little algebra gives the
exact boundary position.
Nothing breaks at the firsts glance in my testing. Whether this speeds
things up,
I do not know how to measure. Lastly. the equation below assumes that conic
really means quadratic, in agreement with the logic of grey_split_conic.
Comments?
Alexi
--- a/src/smooth/ftgrays.c 2010-07-12 15:09:25.000000000 -0400
+++ b/src/smooth/ftgrays.c 2010-10-01 21:58:05.182637518 -0400
@@ -936,16 +936,18 @@
TPos min, max, y;
+ /* set the boundaries based on the endpoints */
min = max = arc[0].y;
- y = arc[1].y;
- if ( y< min ) min = y;
- if ( y> max ) max = y;
-
y = arc[2].y;
if ( y< min ) min = y;
if ( y> max ) max = y;
+ /* amend the boundaries based on the control point */
+ y = arc[1].y;
+ if ( y< min ) min = (min * max - y * y) / (min + max - 2 * y);
+ if ( y> max ) max = (min * max - y * y) / (min + max - 2 * y);
+
if ( TRUNC( min )>= ras.max_ey || TRUNC( max )< ras.min_ey )
goto Draw;
_______________________________________________
Freetype-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/freetype-devel