From 9773d5f72136717b41339fe58d72e5c01d0afa04 Mon Sep 17 00:00:00 2001 From: Alexei Podtelezhnikov Date: Mon, 5 Sep 2016 23:33:35 -0400 Subject: [PATCH] * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert. --- ChangeLog | 4 ++++ src/smooth/ftgrays.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f63c657ca..239874e87 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-09-05 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert. + 2016-09-05 Alexei Podtelezhnikov [smooth] Improve contour start. diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c index 698c10534..f5cf7af56 100644 --- a/src/smooth/ftgrays.c +++ b/src/smooth/ftgrays.c @@ -605,6 +605,29 @@ typedef ptrdiff_t FT_PtrDist; } + /*************************************************************************/ + /* */ + /* Start a new contour at a given cell. */ + /* */ + static void + gray_start_cell( RAS_ARG_ TCoord ex, + TCoord ey ) + { + if ( ex > ras.max_ex ) + ex = ras.max_ex; + + if ( ex < ras.min_ex ) + ex = ras.min_ex - 1; + + ras.area = 0; + ras.cover = 0; + ras.ex = ex - ras.min_ex; + ras.ey = ey - ras.min_ey; + ras.invalid = 0; + + gray_set_cell( RAS_VAR_ ex, ey ); + } + #ifndef FT_LONG64 /*************************************************************************/ @@ -1201,11 +1224,15 @@ typedef ptrdiff_t FT_PtrDist; TPos x, y; + /* record current cell, if any */ + if ( !ras.invalid ) + gray_record_cell( RAS_VAR ); + /* start to a new position */ x = UPSCALE( to->x ); y = UPSCALE( to->y ); - gray_set_cell( RAS_VAR_ TRUNC( x ), TRUNC( y ) ); + gray_start_cell( RAS_VAR_ TRUNC( x ), TRUNC( y ) ); ras.x = x; ras.y = y;