Ignore:
Timestamp:
Jun 30, 2008, 6:26:14 PM (13 years ago)
Author:
Eugene Romanenko
Message:

PDF plugin: freetype library updated to version 2.3.5

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/freetype2/src/truetype/ttinterp.c

    r209 r251  
    55/*    TrueType bytecode interpreter (body).                                */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by       */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    694694  /*                                                                       */
    695695  /* <Return>                                                              */
    696   /*    TrueTyoe error code.  0 means success.                             */
     696  /*    TrueType error code.  0 means success.                             */
    697697  /*                                                                       */
    698698  /* <Note>                                                                */
     
    48224822        D = CUR_Func_project( CUR.zp0.cur + L, CUR.zp1.cur + K );
    48234823      else
    4824         D = CUR_Func_dualproj( CUR.zp0.org + L, CUR.zp1.org + K );
     4824      {
     4825        FT_Vector*  vec1 = CUR.zp0.orus + L;
     4826        FT_Vector*  vec2 = CUR.zp1.orus + K;
     4827
     4828
     4829        if ( CUR.metrics.x_scale == CUR.metrics.y_scale )
     4830        {
     4831          /* this should be faster */
     4832          D = CUR_Func_dualproj( vec1, vec2 );
     4833          D = TT_MULFIX( D, CUR.metrics.x_scale );
     4834        }
     4835        else
     4836        {
     4837          FT_Vector  vec;
     4838
     4839
     4840          vec.x = TT_MULFIX( vec1->x - vec2->x, CUR.metrics.x_scale );
     4841          vec.y = TT_MULFIX( vec1->y - vec2->y, CUR.metrics.y_scale );
     4842
     4843          D = CUR_fast_dualproj( &vec );
     4844        }
     4845      }
    48254846    }
    48264847
     
    50725093    }
    50735094
    5074     A *= 64;
    5075 
    5076 #if 0
    5077     if ( ( args[0] & 0x100 ) != 0 && CUR.metrics.pointSize <= A )
     5095    if ( ( args[0] & 0x100 ) != 0 && CUR.tt_metrics.ppem < A )
    50785096      CUR.GS.scan_control = TRUE;
    5079 #endif
    50805097
    50815098    if ( ( args[0] & 0x200 ) != 0 && CUR.tt_metrics.rotated )
     
    50855102      CUR.GS.scan_control = TRUE;
    50865103
    5087 #if 0
    5088     if ( ( args[0] & 0x800 ) != 0 && CUR.metrics.pointSize > A )
     5104    if ( ( args[0] & 0x800 ) != 0 && CUR.tt_metrics.ppem >= A )
    50895105      CUR.GS.scan_control = FALSE;
    5090 #endif
    50915106
    50925107    if ( ( args[0] & 0x1000 ) != 0 && CUR.tt_metrics.rotated )
     
    51075122  Ins_SCANTYPE( INS_ARG )
    51085123  {
    5109     /* for compatibility with future enhancements, */
    5110     /* we must ignore new modes                    */
    5111 
    5112     if ( args[0] >= 0 && args[0] <= 5 )
    5113     {
    5114       if ( args[0] == 3 )
    5115         args[0] = 2;
    5116 
     5124    if ( args[0] >= 0 )
    51175125      CUR.GS.scan_type = (FT_Int)args[0];
    5118     }
    51195126  }
    51205127
     
    54295436    /* XXX: this is probably wrong... at least it prevents memory */
    54305437    /*      corruption when zp2 is the twilight zone              */
    5431     if ( last_point > CUR.zp2.n_points )
     5438    if ( BOUNDS( last_point, CUR.zp2.n_points ) )
    54325439    {
    54335440      if ( CUR.zp2.n_points > 0 )
     
    62126219
    62136220      cur_dist = CUR_Func_project ( &CUR.zp2.cur[point], cur_base );
    6214       new_dist = ( old_range != 0 )
    6215                    ? TT_MULDIV( org_dist, cur_range, old_range )
    6216                    : cur_dist;
     6221
     6222      if ( org_dist )
     6223        new_dist = ( old_range != 0 )
     6224                     ? TT_MULDIV( org_dist, cur_range, old_range )
     6225                     : cur_dist;
     6226      else
     6227        new_dist = 0;
    62176228
    62186229      CUR_Func_move( &CUR.zp2, (FT_UShort)point, new_dist - cur_dist );
     
    62586269
    62596270  /* Local variables for Ins_IUP: */
    6260   typedef struct
     6271  typedef struct  IUP_WorkerRec_
    62616272  {
    62626273    FT_Vector*  orgs;   /* original and current coordinate */
     
    64346445      end_point   = CUR.pts.contours[contour] - CUR.pts.first_point;
    64356446      first_point = point;
     6447
     6448      if ( CUR.pts.n_points <= end_point )
     6449        end_point = CUR.pts.n_points;
    64366450
    64376451      while ( point <= end_point && ( CUR.pts.tags[point] & mask ) == 0 )
Note: See TracChangeset for help on using the changeset viewer.