A fix from Tom to fix the last=first point problem if it is a control point.
This commit is contained in:
parent
4b92cf80c7
commit
eadc8df24d
|
@ -500,9 +500,11 @@
|
|||
/* is located on the first point. */
|
||||
if ( outline->n_points > 1 )
|
||||
{
|
||||
FT_Int first = 0;
|
||||
FT_Vector* p1 = outline->points + first;
|
||||
FT_Vector* p2 = outline->points + outline->n_points - 1;
|
||||
FT_Int first = 0;
|
||||
FT_Vector* p1 = outline->points + first;
|
||||
FT_Vector* p2 = outline->points + outline->n_points - 1;
|
||||
FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1;
|
||||
|
||||
|
||||
if ( outline->n_contours > 1 )
|
||||
{
|
||||
|
@ -510,8 +512,11 @@
|
|||
p1 = outline->points + first;
|
||||
}
|
||||
|
||||
/* `delete' last point only if it coincides with the first */
|
||||
/* point and it is not a control point (which can happen). */
|
||||
if ( p1->x == p2->x && p1->y == p2->y )
|
||||
outline->n_points--;
|
||||
if ( *control == FT_Curve_Tag_On )
|
||||
outline->n_points--;
|
||||
}
|
||||
|
||||
if ( outline->n_contours > 0 )
|
||||
|
|
|
@ -1238,13 +1238,15 @@
|
|||
{
|
||||
FT_Outline* outline = builder->current;
|
||||
|
||||
|
||||
/* XXXX: We must not include the last point in the path if it */
|
||||
/* is located on the first point. */
|
||||
if ( outline->n_points > 1 )
|
||||
{
|
||||
FT_Int first = 0;
|
||||
FT_Vector* p1 = outline->points + first;
|
||||
FT_Vector* p2 = outline->points + outline->n_points - 1;
|
||||
FT_Int first = 0;
|
||||
FT_Vector* p1 = outline->points + first;
|
||||
FT_Vector* p2 = outline->points + outline->n_points - 1;
|
||||
FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1;
|
||||
|
||||
|
||||
if ( outline->n_contours > 1 )
|
||||
|
@ -1253,8 +1255,11 @@
|
|||
p1 = outline->points + first;
|
||||
}
|
||||
|
||||
/* `delete' last point only if it coincides with the first */
|
||||
/* point and it is not a control point (which can happen). */
|
||||
if ( p1->x == p2->x && p1->y == p2->y )
|
||||
outline->n_points--;
|
||||
if ( *control == FT_Curve_Tag_On )
|
||||
outline->n_points--;
|
||||
}
|
||||
|
||||
if ( outline->n_contours > 0 )
|
||||
|
|
Loading…
Reference in New Issue