shithub: freetype+ttf2subf

Download patch

ref: c219a5e8c47a54f0b0a63776413ad6ba77193207
parent: cfd5dec319e061aee6778775f6f9f1c551622056
author: Werner Lemberg <[email protected]>
date: Sat Sep 28 12:40:57 EDT 2002

* src/include/freetype/internal/tttypes.h (num_sbit_strikes,
num_sbit_scales): Use `FT_ULong'.
* src/sfnt/sfobjs.c (sfnt_load_face): Updated accordingly.
* src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Ditto.
(find_sbit_image): Remove cast.
* src/raster/ftrend1.c (ft_raster1_render): Fix cast.

* src/sfnt/ttload.c (tt_face_load_names): Use cast.
* src/sfnt/ttcmap.c (code_to_next2): Use long constant.
(code_to_index4): Use cast.
(code_to_index8_12): Fix cast.
* src/sfnt/ttcmap0.c (tt_cmap4_char_next, tt_cmap8_char_index,
tt_cmap12_char_index): Use cast for `result'.
(tt_face_build_cmaps): Use cast.
* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_ucs4): Use cast for
`code'.
(sfnt_load_face): Use FT_Int32 for `flags'.

* src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
gray_compute_cbox, gray_convert_glyph, gray_raster_reset): Add casts
to `TCoord' and `int'.
More 16bit fixes.
s/FT_Pos/TPos/.
* src/smooth/ftsmooth.c (ft_smooth_render_generic): Add casts.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2002-09-27  Werner Lemberg  <[email protected]>
+
+	* src/include/freetype/internal/tttypes.h (num_sbit_strikes,
+	num_sbit_scales): Use `FT_ULong'.
+	* src/sfnt/sfobjs.c (sfnt_load_face): Updated accordingly.
+	* src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Ditto.
+	(find_sbit_image): Remove cast.
+	* src/raster/ftrend1.c (ft_raster1_render): Fix cast.
+
+2002-09-27  Wolfgang Domr�se  <[email protected]>
+
+	* src/sfnt/ttload.c (tt_face_load_names): Use cast.
+	* src/sfnt/ttcmap.c (code_to_next2): Use long constant.
+	(code_to_index4): Use cast.
+	(code_to_index8_12): Fix cast.
+	* src/sfnt/ttcmap0.c (tt_cmap4_char_next, tt_cmap8_char_index,
+	tt_cmap12_char_index): Use cast for `result'.
+	(tt_face_build_cmaps): Use cast.
+	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_ucs4): Use cast for
+	`code'.
+	(sfnt_load_face): Use FT_Int32 for `flags'.
+
+	* src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
+	gray_compute_cbox, gray_convert_glyph, gray_raster_reset): Add casts
+	to `TCoord' and `int'.
+	More 16bit fixes.
+	s/FT_Pos/TPos/.
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Add casts.
+
 2002-09-26  Werner Lemberg  <[email protected]>
 
 	* src/sfnt/ttpost.c (load_post_names, tt_face_free_ps_names,
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -1518,10 +1518,10 @@
     TT_PCLT               pclt;
 
     /* embedded bitmaps support */
-    FT_Int                num_sbit_strikes;
+    FT_ULong              num_sbit_strikes;
     TT_SBit_Strike        sbit_strikes;
 
-    FT_Int                num_sbit_scales;
+    FT_ULong              num_sbit_scales;
     TT_SBit_Scale         sbit_scales;
 
     /* postscript names table */
--- a/src/raster/ftrend1.c
+++ b/src/raster/ftrend1.c
@@ -200,8 +200,8 @@
       goto Exit;
 
     slot->format      = FT_GLYPH_FORMAT_BITMAP;
-    slot->bitmap_left = (FT_UInt)( cbox.xMin >> 6 );
-    slot->bitmap_top  = (FT_UInt)( cbox.yMax >> 6 );
+    slot->bitmap_left = (FT_Int)( cbox.xMin >> 6 );
+    slot->bitmap_top  = (FT_Int)( cbox.yMax >> 6 );
 
   Exit:
     return error;
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -86,7 +86,7 @@
 
     for ( n = 0; n < len; n++ )
     {
-      code = FT_NEXT_ULONG( read );
+      code = (FT_UInt)FT_NEXT_ULONG( read );
       if ( code < 32 || code > 127 )
         code = '?';
 
@@ -515,7 +515,7 @@
     /* now set up root fields */
     {
       FT_Face    root = &face->root;
-      FT_Int     flags = 0;
+      FT_Int32   flags = 0;
       FT_Memory  memory;
 
 
@@ -617,7 +617,7 @@
 
       if ( face->num_sbit_strikes )
       {
-        FT_Int  n;
+        FT_ULong  n;
 
 
         root->face_flags |= FT_FACE_FLAG_FIXED_SIZES;
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -629,7 +629,7 @@
      * This is relatively simplistic -- look for a subHeader containing
      * glyphs and then walk to the first glyph in that subHeader.
      */
-    while ( charCode < 0x10000 )
+    while ( charCode < 0x10000L )
     {
       char_lo = (FT_UInt)( charCode & 0xFF );
       char_hi = charCode >> 8;
@@ -746,7 +746,7 @@
     /* directly                                                  */
 
     if ( seg4->idRangeOffset == 0 )
-      result = ( charCode + seg4->idDelta ) & 0xFFFFU;
+      result = (FT_UInt)( charCode + seg4->idDelta ) & 0xFFFFU;
     else
     {
       /* otherwise, we must use the glyphIdArray to do it */
@@ -971,7 +971,8 @@
     cmap8_12->last_group = group;
 
   Found1:
-    return group->startGlyphID + (FT_UInt)( charCode - group->startCharCode );
+    return (FT_UInt)( group->startGlyphID +
+                      ( charCode - group->startCharCode ) );
   }
 
 
--- a/src/sfnt/ttcmap0.c
+++ b/src/sfnt/ttcmap0.c
@@ -940,7 +940,7 @@
 
       code++;
     }
-    return result;
+    return (FT_UInt)result;
 
   Exit:
     *pchar_code = result;
@@ -1281,7 +1281,7 @@
 
       if ( char_code <= end )
       {
-        result = start_id + char_code - start;
+        result = (FT_UInt)( start_id + char_code - start );
         break;
       }
     }
@@ -1588,7 +1588,7 @@
 
       if ( char_code <= end )
       {
-        result = start_id + char_code - start;
+        result = (FT_UInt)( start_id + char_code - start );
         break;
       }
     }
@@ -1747,7 +1747,7 @@
             ft_validator_init( FT_VALIDATOR( &valid ), cmap, limit,
                                FT_VALIDATE_DEFAULT );
 
-            valid.num_glyphs = face->root.num_glyphs;
+            valid.num_glyphs = (FT_UInt)face->root.num_glyphs;
 
             if ( ft_setjmp( FT_VALIDATOR( &valid )->jump_buffer ) == 0 )
             {
--- a/src/sfnt/ttload.c
+++ b/src/sfnt/ttload.c
@@ -1139,7 +1139,7 @@
         entry++;
       }
 
-      table->numNameRecords = entry - table->names;
+      table->numNameRecords = (FT_UInt)( entry - table->names );
     }
 
     FT_FRAME_EXIT();
--- a/src/sfnt/ttsbit.c
+++ b/src/sfnt/ttsbit.c
@@ -626,7 +626,7 @@
                            FT_Int     y_ppem,
                            FT_ULong  *astrike_index )
   {
-    FT_Int  i;
+    FT_ULong  i;
 
 
     if ( x_ppem < 0 || x_ppem > 255 ||
@@ -791,8 +791,8 @@
     TT_SBit_Strike  strike;
 
 
-    if ( !face->sbit_strikes                                ||
-         ( face->num_sbit_strikes <= (FT_Int)strike_index ) )
+    if ( !face->sbit_strikes                        ||
+         ( face->num_sbit_strikes <= strike_index ) )
       goto Fail;
 
     strike = &face->sbit_strikes[strike_index];
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -367,8 +367,8 @@
       return;
     }
 
-    ras.min_ex = ras.max_ex = vec->x;
-    ras.min_ey = ras.max_ey = vec->y;
+    ras.min_ex = ras.max_ex = (TCoord)vec->x;
+    ras.min_ey = ras.max_ey = (TCoord)vec->y;
 
     vec++;
 
@@ -378,10 +378,10 @@
       TPos  y = vec->y;
 
 
-      if ( x < ras.min_ex ) ras.min_ex = x;
-      if ( x > ras.max_ex ) ras.max_ex = x;
-      if ( y < ras.min_ey ) ras.min_ey = y;
-      if ( y > ras.max_ey ) ras.max_ey = y;
+      if ( x < ras.min_ex ) ras.min_ex = (TCoord)x;
+      if ( x > ras.max_ex ) ras.max_ex = (TCoord)x;
+      if ( y < ras.min_ey ) ras.min_ey = (TCoord)y;
+      if ( y > ras.max_ey ) ras.max_ey = (TCoord)y;
     }
 
     /* truncate the bounding box to integer pixels */
@@ -513,10 +513,10 @@
 
     dx = x2 - x1;
 
-    ex1 = TRUNC( x1 ); /* if (ex1 >= ras.max_ex) ex1 = ras.max_ex-1; */
-    ex2 = TRUNC( x2 ); /* if (ex2 >= ras.max_ex) ex2 = ras.max_ex-1; */
-    fx1 = x1 - SUBPIXELS( ex1 );
-    fx2 = x2 - SUBPIXELS( ex2 );
+    ex1 = (TCoord)TRUNC( x1 ); /* if (ex1 >= ras.max_ex) ex1 = ras.max_ex-1; */
+    ex2 = (TCoord)TRUNC( x2 ); /* if (ex2 >= ras.max_ex) ex2 = ras.max_ex-1; */
+    fx1 = (TCoord)( x1 - SUBPIXELS( ex1 ) );
+    fx2 = (TCoord)( x2 - SUBPIXELS( ex2 ) );
 
     /* trivial case.  Happens often */
     if ( y1 == y2 )
@@ -550,12 +550,12 @@
       dx    = -dx;
     }
 
-    delta = p / dx;
-    mod   = p % dx;
+    delta = (TCoord)( p / dx );
+    mod   = (TCoord)( p % dx );
     if ( mod < 0 )
     {
       delta--;
-      mod += dx;
+      mod += (TCoord)dx;
     }
 
     ras.area  += (TArea)( fx1 + first ) * delta;
@@ -568,12 +568,12 @@
     if ( ex1 != ex2 )
     {
       p     = ONE_PIXEL * ( y2 - y1 + delta );
-      lift  = p / dx;
-      rem   = p % dx;
+      lift  = (TCoord)( p / dx );
+      rem   = (TCoord)( p % dx );
       if ( rem < 0 )
       {
         lift--;
-        rem += dx;
+        rem += (TCoord)dx;
       }
 
       mod -= dx;
@@ -584,7 +584,7 @@
         mod  += rem;
         if ( mod >= 0 )
         {
-          mod -= dx;
+          mod -= (TCoord)dx;
           delta++;
         }
 
@@ -612,13 +612,14 @@
   {
     TCoord  ey1, ey2, fy1, fy2;
     TPos    dx, dy, x, x2;
-    int     p, rem, mod, lift, delta, first, incr;
+    long    p, first;
+    int     delta, rem, mod, lift, incr;
 
 
-    ey1 = TRUNC( ras.last_ey );
-    ey2 = TRUNC( to_y ); /* if (ey2 >= ras.max_ey) ey2 = ras.max_ey-1; */
-    fy1 = ras.y - ras.last_ey;
-    fy2 = to_y - SUBPIXELS( ey2 );
+    ey1 = (TCoord)TRUNC( ras.last_ey );
+    ey2 = (TCoord)TRUNC( to_y ); /* if (ey2 >= ras.max_ey) ey2 = ras.max_ey-1; */
+    fy1 = (TCoord)( ras.y - ras.last_ey );
+    fy2 = (TCoord)( to_y - SUBPIXELS( ey2 ) );
 
     dx = to_x - ras.x;
     dy = to_y - ras.y;
@@ -654,8 +655,8 @@
 
     if ( dx == 0 )
     {
-      TCoord  ex     = TRUNC( ras.x );
-      TCoord  two_fx = ( ras.x - SUBPIXELS( ex ) ) << 1;
+      TCoord  ex     = (TCoord)TRUNC( ras.x );
+      TCoord  two_fx = (TCoord)( ( ras.x - SUBPIXELS( (TPos)ex ) ) << 1 );
       TPos    area;
 
 
@@ -666,7 +667,7 @@
         incr  = -1;
       }
 
-      delta      = first - fy1;
+      delta      = (int)( first - fy1 );
       ras.area  += (TArea)two_fx * delta;
       ras.cover += delta;
       ey1       += incr;
@@ -673,9 +674,9 @@
 
       gray_set_cell( raster, ex, ey1 );
 
-      delta = first + first - ONE_PIXEL;
+      delta = (int)( first + first - ONE_PIXEL );
       area  = (TArea)two_fx * delta;
-      while( ey1 != ey2 )
+      while ( ey1 != ey2 )
       {
         ras.area  += area;
         ras.cover += delta;
@@ -683,7 +684,7 @@
         gray_set_cell( raster, ex, ey1 );
       }
 
-      delta      = fy2 - ONE_PIXEL + first;
+      delta      = (int)( fy2 - ONE_PIXEL + first );
       ras.area  += (TArea)two_fx * delta;
       ras.cover += delta;
       goto End;
@@ -690,24 +691,24 @@
     }
 
     /* ok, we have to render several scanlines */
-    p     = ( ONE_PIXEL - fy1 ) * dx;
-    first = ONE_PIXEL;
+    p     = (int)( ( ONE_PIXEL - fy1 ) * dx );
+    first = (int)ONE_PIXEL;
     incr  = 1;
 
     if ( dy < 0 )
     {
-      p     = fy1 * dx;
+      p     = fy1 * (int)dx;
       first = 0;
       incr  = -1;
       dy    = -dy;
     }
 
-    delta = p / dy;
-    mod   = p % dy;
+    delta = (int)( p / dy );
+    mod   = (int)( p % dy );
     if ( mod < 0 )
     {
       delta--;
-      mod += dy;
+      mod += (TCoord)dy;
     }
 
     x = ras.x + delta;
@@ -714,19 +715,19 @@
     gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, first );
 
     ey1 += incr;
-    gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 );
+    gray_set_cell( RAS_VAR_ (TCoord)TRUNC( x ), ey1 );
 
     if ( ey1 != ey2 )
     {
-      p     = ONE_PIXEL * dx;
-      lift  = p / dy;
-      rem   = p % dy;
+      p     = (int)( ONE_PIXEL * dx );
+      lift  = (int)( p / dy );
+      rem   = (int)( p % dy );
       if ( rem < 0 )
       {
         lift--;
-        rem += dy;
+        rem += (int)dy;
       }
-      mod -= dy;
+      mod -= (int)dy;
 
       while ( ey1 != ey2 )
       {
@@ -734,12 +735,14 @@
         mod  += rem;
         if ( mod >= 0 )
         {
-          mod -= dy;
+          mod -= (int)dy;
           delta++;
         }
 
         x2 = x + delta;
-        gray_render_scanline( RAS_VAR_ ey1, x, ONE_PIXEL - first, x2, first );
+        gray_render_scanline( RAS_VAR_ ey1, x,
+                                       (TCoord)( ONE_PIXEL - first ), x2,
+                                       first );
         x = x2;
 
         ey1 += incr;
@@ -747,7 +750,9 @@
       }
     }
 
-    gray_render_scanline( RAS_VAR_ ey1, x, ONE_PIXEL - first, to_x, fy2 );
+    gray_render_scanline( RAS_VAR_ ey1, x,
+                                   (TCoord)( ONE_PIXEL - first ), to_x,
+                                   fy2 );
 
   End:
     ras.x       = to_x;
@@ -1237,7 +1242,8 @@
     x = UPSCALE( to->x );
     y = UPSCALE( to->y );
 
-    gray_start_cell( (PRaster)raster, TRUNC( x ), TRUNC( y ) );
+    gray_start_cell( (PRaster)raster,
+                     (TCoord)TRUNC( x ), (TCoord)TRUNC( y ) );
 
     ((PRaster)raster)->x = x;
     ((PRaster)raster)->y = y;
@@ -1361,8 +1367,8 @@
     /*                                                           */
     /* the coverage percentage is area/(PIXEL_BITS*PIXEL_BITS*2) */
     /*                                                           */
-    coverage = area >> ( PIXEL_BITS * 2 + 1 - 8);  /* use range 0..256 */
-
+    coverage = (int)( area >> ( PIXEL_BITS * 2 + 1 - 8 ) );
+                                                    /* use range 0..256 */
     if ( coverage < 0 )
       coverage = -coverage;
 
@@ -1593,14 +1599,14 @@
     FT_Vector*  limit;
     char*       tags;
 
-    int     n;         /* index of contour in outline     */
-    int     first;     /* index of first point in contour */
-    int     error;
-    char    tag;       /* current point's state           */
+    int   n;         /* index of contour in outline     */
+    int   first;     /* index of first point in contour */
+    int   error;
+    char  tag;       /* current point's state           */
 
 #if 0
-    int     shift = func_interface->shift;
-    FT_Pos  delta = func_interface->delta;
+    int   shift = func_interface->shift;
+    TPos  delta = func_interface->delta;
 #endif
 
 
@@ -1784,7 +1790,7 @@
 
   typedef struct  TBand_
   {
-    FT_Pos  min, max;
+    TPos  min, max;
 
   } TBand;
 
@@ -1839,11 +1845,11 @@
          ras.max_ey <= clip->yMin || ras.min_ey >= clip->yMax )
       return 0;
 
-    if ( ras.min_ex < clip->xMin ) ras.min_ex = clip->xMin;
-    if ( ras.min_ey < clip->yMin ) ras.min_ey = clip->yMin;
+    if ( ras.min_ex < clip->xMin ) ras.min_ex = (TCoord)clip->xMin;
+    if ( ras.min_ey < clip->yMin ) ras.min_ey = (TCoord)clip->yMin;
 
-    if ( ras.max_ex > clip->xMax ) ras.max_ex = clip->xMax;
-    if ( ras.max_ey > clip->yMax ) ras.max_ey = clip->yMax;
+    if ( ras.max_ex > clip->xMax ) ras.max_ex = (TCoord)clip->xMax;
+    if ( ras.max_ey > clip->yMax ) ras.max_ey = (TCoord)clip->yMax;
 
     /* simple heuristic used to speed-up the bezier decomposition -- see */
     /* the code in gray_render_conic() and gray_render_cubic() for more  */
@@ -1886,14 +1892,14 @@
 
       while ( band >= bands )
       {
-        FT_Pos  bottom, top, middle;
-        int     error;
+        TPos  bottom, top, middle;
+        int   error;
 
 
         ras.num_cells = 0;
         ras.invalid   = 1;
-        ras.min_ey    = band->min;
-        ras.max_ey    = band->max;
+        ras.min_ey    = (TCoord)band->min;
+        ras.max_ey    = (TCoord)band->max;
 
 #if 1
         error = gray_convert_glyph_inner( RAS_VAR );
@@ -2136,7 +2142,7 @@
     if ( raster && pool_base && pool_size >= 4096 )
       gray_init_cells( rast, (char*)pool_base, pool_size );
 
-    rast->band_size  = ( pool_size / sizeof ( TCell ) ) / 8;
+    rast->band_size  = (int)( ( pool_size / sizeof ( TCell ) ) / 8 );
   }
 
 
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -218,8 +218,8 @@
       goto Exit;
 
     slot->format      = FT_GLYPH_FORMAT_BITMAP;
-    slot->bitmap_left = cbox.xMin >> 6;
-    slot->bitmap_top  = cbox.yMax >> 6;
+    slot->bitmap_left = (FT_Int)( cbox.xMin >> 6 );
+    slot->bitmap_top  = (FT_Int)( cbox.yMax >> 6 );
 
   Exit:
     if ( outline && origin )