| Index: third_party/freetype/src/pshinter/pshalgo.c
|
| diff --git a/third_party/freetype/src/pshinter/pshalgo.c b/third_party/freetype/src/pshinter/pshalgo.c
|
| index 644c76d1017955608dae18ca80552e03b3da4298..6e654cb1ef886ae9fce21066f34bb8699518c4c6 100644
|
| --- a/third_party/freetype/src/pshinter/pshalgo.c
|
| +++ b/third_party/freetype/src/pshinter/pshalgo.c
|
| @@ -4,7 +4,7 @@
|
| /* */
|
| /* PostScript hinting algorithm (body). */
|
| /* */
|
| -/* Copyright 2001-2010, 2012-2014 by */
|
| +/* Copyright 2001-2015 by */
|
| /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
| /* */
|
| /* This file is part of the FreeType project, and may only be used */
|
| @@ -30,16 +30,14 @@
|
|
|
|
|
| #ifdef DEBUG_HINTER
|
| - PSH_Hint_Table ps_debug_hint_table = 0;
|
| - PSH_HintFunc ps_debug_hint_func = 0;
|
| - PSH_Glyph ps_debug_glyph = 0;
|
| + PSH_Hint_Table ps_debug_hint_table = NULL;
|
| + PSH_HintFunc ps_debug_hint_func = NULL;
|
| + PSH_Glyph ps_debug_glyph = NULL;
|
| #endif
|
|
|
|
|
| #define COMPUTE_INFLEXS /* compute inflection points to optimize `S' */
|
| /* and similar glyphs */
|
| -#define STRONGER /* slightly increase the contrast of smooth */
|
| - /* hinting */
|
|
|
|
|
| /*************************************************************************/
|
| @@ -67,13 +65,13 @@
|
| {
|
| FT_FREE( table->zones );
|
| table->num_zones = 0;
|
| - table->zone = 0;
|
| + table->zone = NULL;
|
|
|
| FT_FREE( table->sort );
|
| FT_FREE( table->hints );
|
| table->num_hints = 0;
|
| table->max_hints = 0;
|
| - table->sort_global = 0;
|
| + table->sort_global = NULL;
|
| }
|
|
|
|
|
| @@ -121,7 +119,7 @@
|
| PSH_Hint hint2;
|
|
|
|
|
| - hint->parent = 0;
|
| + hint->parent = NULL;
|
| for ( ; count > 0; count--, sorted++ )
|
| {
|
| hint2 = sorted[0];
|
| @@ -194,7 +192,7 @@
|
| table->sort_global = table->sort + count;
|
| table->num_hints = 0;
|
| table->num_zones = 0;
|
| - table->zone = 0;
|
| + table->zone = NULL;
|
|
|
| /* initialize the `table->hints' array */
|
| {
|
| @@ -890,9 +888,6 @@
|
| /*************************************************************************/
|
| /*************************************************************************/
|
|
|
| -#define PSH_ZONE_MIN -3200000L
|
| -#define PSH_ZONE_MAX +3200000L
|
| -
|
| #define xxDEBUG_ZONES
|
|
|
|
|
| @@ -910,10 +905,6 @@
|
| zone->max );
|
| }
|
|
|
| -#else
|
| -
|
| -#define psh_print_zone( x ) do { } while ( 0 )
|
| -
|
| #endif /* DEBUG_ZONES */
|
|
|
|
|
| @@ -925,103 +916,9 @@
|
| /*************************************************************************/
|
| /*************************************************************************/
|
|
|
| -#if 1
|
| -
|
| #define psh_corner_is_flat ft_corner_is_flat
|
| #define psh_corner_orientation ft_corner_orientation
|
|
|
| -#else
|
| -
|
| - FT_LOCAL_DEF( FT_Int )
|
| - psh_corner_is_flat( FT_Pos x_in,
|
| - FT_Pos y_in,
|
| - FT_Pos x_out,
|
| - FT_Pos y_out )
|
| - {
|
| - FT_Pos ax = x_in;
|
| - FT_Pos ay = y_in;
|
| -
|
| - FT_Pos d_in, d_out, d_corner;
|
| -
|
| -
|
| - if ( ax < 0 )
|
| - ax = -ax;
|
| - if ( ay < 0 )
|
| - ay = -ay;
|
| - d_in = ax + ay;
|
| -
|
| - ax = x_out;
|
| - if ( ax < 0 )
|
| - ax = -ax;
|
| - ay = y_out;
|
| - if ( ay < 0 )
|
| - ay = -ay;
|
| - d_out = ax + ay;
|
| -
|
| - ax = x_out + x_in;
|
| - if ( ax < 0 )
|
| - ax = -ax;
|
| - ay = y_out + y_in;
|
| - if ( ay < 0 )
|
| - ay = -ay;
|
| - d_corner = ax + ay;
|
| -
|
| - return ( d_in + d_out - d_corner ) < ( d_corner >> 4 );
|
| - }
|
| -
|
| - static FT_Int
|
| - psh_corner_orientation( FT_Pos in_x,
|
| - FT_Pos in_y,
|
| - FT_Pos out_x,
|
| - FT_Pos out_y )
|
| - {
|
| - FT_Int result;
|
| -
|
| -
|
| - /* deal with the trivial cases quickly */
|
| - if ( in_y == 0 )
|
| - {
|
| - if ( in_x >= 0 )
|
| - result = out_y;
|
| - else
|
| - result = -out_y;
|
| - }
|
| - else if ( in_x == 0 )
|
| - {
|
| - if ( in_y >= 0 )
|
| - result = -out_x;
|
| - else
|
| - result = out_x;
|
| - }
|
| - else if ( out_y == 0 )
|
| - {
|
| - if ( out_x >= 0 )
|
| - result = in_y;
|
| - else
|
| - result = -in_y;
|
| - }
|
| - else if ( out_x == 0 )
|
| - {
|
| - if ( out_y >= 0 )
|
| - result = -in_x;
|
| - else
|
| - result = in_x;
|
| - }
|
| - else /* general case */
|
| - {
|
| - long long delta = (long long)in_x * out_y - (long long)in_y * out_x;
|
| -
|
| - if ( delta == 0 )
|
| - result = 0;
|
| - else
|
| - result = 1 - 2 * ( delta < 0 );
|
| - }
|
| -
|
| - return result;
|
| - }
|
| -
|
| -#endif /* !1 */
|
| -
|
|
|
| #ifdef COMPUTE_INFLEXS
|
|
|
| @@ -1149,7 +1046,7 @@
|
| glyph->num_points = 0;
|
| glyph->num_contours = 0;
|
|
|
| - glyph->memory = 0;
|
| + glyph->memory = NULL;
|
| }
|
|
|
|
|
| @@ -1274,8 +1171,8 @@
|
| FT_NEW_ARRAY( glyph->contours, outline->n_contours ) )
|
| goto Exit;
|
|
|
| - glyph->num_points = outline->n_points;
|
| - glyph->num_contours = outline->n_contours;
|
| + glyph->num_points = (FT_UInt)outline->n_points;
|
| + glyph->num_contours = (FT_UInt)outline->n_contours;
|
|
|
| {
|
| FT_UInt first = 0, next, n;
|
| @@ -1285,15 +1182,15 @@
|
|
|
| for ( n = 0; n < glyph->num_contours; n++ )
|
| {
|
| - FT_Int count;
|
| + FT_UInt count;
|
| PSH_Point point;
|
|
|
|
|
| - next = outline->contours[n] + 1;
|
| + next = (FT_UInt)outline->contours[n] + 1;
|
| count = next - first;
|
|
|
| contour->start = points + first;
|
| - contour->count = (FT_UInt)count;
|
| + contour->count = count;
|
|
|
| if ( count > 0 )
|
| {
|
| @@ -1696,16 +1593,12 @@
|
| mask++;
|
| for ( ; num_masks > 1; num_masks--, mask++ )
|
| {
|
| - FT_UInt next;
|
| - FT_Int count;
|
| + FT_UInt next = FT_MIN( mask->end_point, glyph->num_points );
|
|
|
|
|
| - next = mask->end_point > glyph->num_points
|
| - ? glyph->num_points
|
| - : mask->end_point;
|
| - count = next - first;
|
| - if ( count > 0 )
|
| + if ( next > first )
|
| {
|
| + FT_UInt count = next - first;
|
| PSH_Point point = glyph->points + first;
|
|
|
|
|
| @@ -2048,7 +1941,7 @@
|
| /* count the number of strong points in this contour */
|
| next = start + contour->count;
|
| fit_count = 0;
|
| - first = 0;
|
| + first = NULL;
|
|
|
| for ( point = start; point < next; point++ )
|
| if ( psh_point_is_fitted( point ) )
|
|
|