2010/10/14 David Bevan <[email protected]>:
> Since there are two changes, (the value of FT_MAX_CURVE_DEVIATION and the 
> algorithm),
> each must be tested independently.

David,
Focus please. This thread is about fixing deviations only by using ONE_PIXEL.



>>
>>
>> diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c
>> index 17d172f..4828013 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 / 4 )
>>      {
>>        gray_render_line( RAS_VAR_ UPSCALE( to->x ), UPSCALE( to->y ) );
>>        return;
>>      }
>>
>>      level = 1;
>> -    dx /= FT_MAX_CURVE_DEVIATION;
>> +    dx /= ONE_PIXEL / 4;
>>      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 / 3 );
>>
>>          /* s is L * the perpendicular distance from P1 to the line P0-P3.
>> */
>>          dx1 = arc[1].x - arc[0].x;
>

_______________________________________________
Freetype-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to