From 34d61e8637f29b05fccae5464fa4414e62627b8e Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Fri, 15 Oct 2010 20:44:15 +0200 Subject: [PATCH] Fix thinko in spline flattening. FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL. * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and replace it everywhere with ONE_PIXEL/8. --- ChangeLog | 9 +++++++++ src/smooth/ftgrays.c | 11 +++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index d6faede19..05f43c020 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2010-10-15 Alexei Podtelezhnikov + + Fix thinko in spline flattening. + + FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL. + + * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and + replace it everywhere with ONE_PIXEL/8. + 2010-10-13 suzuki toshiya [raccess] Skip unrequired resource access rules by Darwin VFS. diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c index 17d172f68..4477638d0 100644 --- a/src/smooth/ftgrays.c +++ b/src/smooth/ftgrays.c @@ -91,11 +91,6 @@ #define FT_COMPONENT trace_smooth - /* The maximum distance of a curve from the chord, in 64ths of a pixel; */ - /* used when flattening curves. */ -#define FT_MAX_CURVE_DEVIATION 16 - - #ifdef _STANDALONE_ @@ -891,14 +886,14 @@ typedef ptrdiff_t FT_PtrDist; if ( dx < dy ) dx = dy; - if ( dx <= FT_MAX_CURVE_DEVIATION ) + if ( dx <= ONE_PIXEL / 8 ) { gray_render_line( RAS_VAR_ UPSCALE( to->x ), UPSCALE( to->y ) ); return; } level = 1; - dx /= FT_MAX_CURVE_DEVIATION; + dx /= ONE_PIXEL / 8; while ( dx > 1 ) { dx >>= 2; @@ -1074,7 +1069,7 @@ typedef ptrdiff_t FT_PtrDist; goto Split; /* Max deviation may be as much as (s/L) * 3/4 (if Hain's v = 1). */ - s_limit = L * (TPos)( FT_MAX_CURVE_DEVIATION / 0.75 ); + s_limit = L * (TPos)( ONE_PIXEL / 6 ); /* s is L * the perpendicular distance from P1 to the line P0-P3. */ dx1 = arc[1].x - arc[0].x;