688 |
{ |
{ |
689 |
/* we are just leaving an edge; record a new segment! */ |
/* we are just leaving an edge; record a new segment! */ |
690 |
segment->last = point; |
segment->last = point; |
691 |
segment->pos = ( min_pos + max_pos ) >> 1; |
segment->pos = (FT_Short)(( min_pos + max_pos ) >> 1); |
692 |
|
|
693 |
/* a segment is round if either its first or last point */ |
/* a segment is round if either its first or last point */ |
694 |
/* is a control point */ |
/* is a control point */ |
705 |
if ( v > max_pos ) |
if ( v > max_pos ) |
706 |
max_pos = v; |
max_pos = v; |
707 |
|
|
708 |
segment->min_coord = min_pos; |
segment->min_coord = (FT_Short) min_pos; |
709 |
segment->max_coord = max_pos; |
segment->max_coord = (FT_Short) max_pos; |
710 |
|
|
711 |
on_edge = 0; |
on_edge = 0; |
712 |
segment = NULL; |
segment = NULL; |
732 |
if ( error ) |
if ( error ) |
733 |
goto Exit; |
goto Exit; |
734 |
|
|
735 |
segment->dir = segment_dir; |
segment->dir = (FT_Char) segment_dir; |
736 |
segment->flags = AF_EDGE_NORMAL; |
segment->flags = AF_EDGE_NORMAL; |
737 |
min_pos = max_pos = point->u; |
min_pos = max_pos = point->u; |
738 |
segment->first = point; |
segment->first = point; |
1150 |
edge->dir = AF_DIR_NONE; |
edge->dir = AF_DIR_NONE; |
1151 |
|
|
1152 |
if ( ups > downs ) |
if ( ups > downs ) |
1153 |
edge->dir = up_dir; |
edge->dir = (FT_Char) up_dir; |
1154 |
|
|
1155 |
else if ( ups < downs ) |
else if ( ups < downs ) |
1156 |
edge->dir = -up_dir; |
edge->dir = (FT_Char) -up_dir; |
1157 |
|
|
1158 |
else if ( ups == downs ) |
else if ( ups == downs ) |
1159 |
edge->dir = 0; /* both up and down! */ |
edge->dir = 0; /* both up and down! */ |
1232 |
/* zone, check for left edges */ |
/* zone, check for left edges */ |
1233 |
/* */ |
/* */ |
1234 |
/* of course, that's for TrueType */ |
/* of course, that's for TrueType */ |
1235 |
is_top_blue = ( blue->flags & AF_LATIN_BLUE_TOP ) != 0; |
is_top_blue = (FT_Byte)(( blue->flags & AF_LATIN_BLUE_TOP ) != 0); |
1236 |
is_major_dir = FT_BOOL( edge->dir == axis->major_dir ); |
is_major_dir = FT_BOOL( edge->dir == axis->major_dir ); |
1237 |
|
|
1238 |
/* if it is a top zone, the edge must be against the major */ |
/* if it is a top zone, the edge must be against the major */ |