亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? afhints.c

?? QT 開發環境里面一個很重要的文件
?? C
?? 第 1 頁 / 共 2 頁
字號:
    hints->x_delta = x_delta;    hints->y_delta = y_delta;    points = hints->points;    if ( hints->num_points == 0 )      goto Exit;    {      AF_Point  point;      AF_Point  point_limit = points + hints->num_points;      /* compute coordinates & Bezier flags */      {        FT_Vector*  vec = outline->points;        char*       tag = outline->tags;        for ( point = points; point < point_limit; point++, vec++, tag++ )        {          point->fx = (FT_Short)vec->x;          point->fy = (FT_Short)vec->y;          point->ox = point->x = FT_MulFix( vec->x, x_scale ) + x_delta;          point->oy = point->y = FT_MulFix( vec->y, y_scale ) + y_delta;          switch ( FT_CURVE_TAG( *tag ) )          {          case FT_CURVE_TAG_CONIC:            point->flags = AF_FLAG_CONIC;            break;          case FT_CURVE_TAG_CUBIC:            point->flags = AF_FLAG_CUBIC;            break;          default:            point->flags = 0;          }        }      }      /* compute `next' and `prev' */      {        FT_Int    contour_index;        AF_Point  prev;        AF_Point  first;        AF_Point  end;        contour_index = 0;        first = points;        end   = points + outline->contours[0];        prev  = end;        for ( point = points; point < point_limit; point++ )        {          point->prev = prev;          if ( point < end )          {            point->next = point + 1;            prev        = point;          }          else          {            point->next = first;            contour_index++;            if ( point + 1 < point_limit )            {              end   = points + outline->contours[contour_index];              first = point + 1;              prev  = end;            }          }        }      }      /* set-up the contours array */      {        AF_Point*  contour       = hints->contours;        AF_Point*  contour_limit = contour + hints->num_contours;        short*     end           = outline->contours;        short      idx           = 0;        for ( ; contour < contour_limit; contour++, end++ )        {          contour[0] = points + idx;          idx        = (short)( end[0] + 1 );        }      }      /* compute directions of in & out vectors */      {        for ( point = points; point < point_limit; point++ )        {          AF_Point  prev;          AF_Point  next;          FT_Pos    in_x, in_y, out_x, out_y;          prev   = point->prev;          in_x   = point->fx - prev->fx;          in_y   = point->fy - prev->fy;          point->in_dir = (FT_Char)af_direction_compute( in_x, in_y );          next   = point->next;          out_x  = next->fx - point->fx;          out_y  = next->fy - point->fy;          point->out_dir = (FT_Char)af_direction_compute( out_x, out_y );          if ( point->flags & ( AF_FLAG_CONIC | AF_FLAG_CUBIC ) )          {          Is_Weak_Point:            point->flags |= AF_FLAG_WEAK_INTERPOLATION;          }          else if ( point->out_dir == point->in_dir )          {            AF_Angle  angle_in, angle_out, delta;            if ( point->out_dir != AF_DIR_NONE )              goto Is_Weak_Point;            angle_in  = af_angle_atan( in_x, in_y );            angle_out = af_angle_atan( out_x, out_y );            AF_ANGLE_DIFF( delta, angle_in, angle_out );            if ( delta < 2 && delta > -2 )              goto Is_Weak_Point;          }          else if ( point->in_dir == -point->out_dir )            goto Is_Weak_Point;        }      }    }    /* compute inflection points */    af_glyph_hints_compute_inflections( hints );  Exit:    return error;  }  FT_LOCAL_DEF( void )  af_glyph_hints_save( AF_GlyphHints  hints,                       FT_Outline*    outline )  {    AF_Point    point = hints->points;    AF_Point    limit = point + hints->num_points;    FT_Vector*  vec   = outline->points;    char*       tag   = outline->tags;    for ( ; point < limit; point++, vec++, tag++ )    {      vec->x = point->x;      vec->y = point->y;      if ( point->flags & AF_FLAG_CONIC )        tag[0] = FT_CURVE_TAG_CONIC;      else if ( point->flags & AF_FLAG_CUBIC )        tag[0] = FT_CURVE_TAG_CUBIC;      else        tag[0] = FT_CURVE_TAG_ON;    }  }  /****************************************************************   *   *                     EDGE POINT GRID-FITTING   *   ****************************************************************/  FT_LOCAL_DEF( void )  af_glyph_hints_align_edge_points( AF_GlyphHints  hints,                                    AF_Dimension   dim )  {    AF_AxisHints  axis       = & hints->axis[dim];    AF_Edge       edges      = axis->edges;    AF_Edge       edge_limit = edges + axis->num_edges;    AF_Edge       edge;    for ( edge = edges; edge < edge_limit; edge++ )    {      /* move the points of each segment     */      /* in each edge to the edge's position */      AF_Segment  seg = edge->first;      do      {        AF_Point  point = seg->first;        for (;;)        {          if ( dim == AF_DIMENSION_HORZ )          {            point->x      = edge->pos;            point->flags |= AF_FLAG_TOUCH_X;          }          else          {            point->y      = edge->pos;            point->flags |= AF_FLAG_TOUCH_Y;          }          if ( point == seg->last )            break;          point = point->next;        }        seg = seg->edge_next;      } while ( seg != edge->first );    }  }  /****************************************************************   *   *                    STRONG POINT INTERPOLATION   *   ****************************************************************/  /* hint the strong points -- this is equivalent to the TrueType `IP' */  /* hinting instruction                                               */  FT_LOCAL_DEF( void )  af_glyph_hints_align_strong_points( AF_GlyphHints  hints,                                      AF_Dimension   dim )  {    AF_Point      points      = hints->points;    AF_Point      point_limit = points + hints->num_points;    AF_AxisHints  axis        = &hints->axis[dim];    AF_Edge       edges       = axis->edges;    AF_Edge       edge_limit  = edges + axis->num_edges;    AF_Flags      touch_flag;    if ( dim == AF_DIMENSION_HORZ )      touch_flag = AF_FLAG_TOUCH_X;    else      touch_flag  = AF_FLAG_TOUCH_Y;    if ( edges < edge_limit )    {      AF_Point  point;      AF_Edge   edge;      for ( point = points; point < point_limit; point++ )      {        FT_Pos  u, ou, fu;  /* point position */        FT_Pos  delta;        if ( point->flags & touch_flag )          continue;        /* if this point is candidate to weak interpolation, we       */        /* interpolate it after all strong points have been processed */        if (  ( point->flags & AF_FLAG_WEAK_INTERPOLATION ) &&             !( point->flags & AF_FLAG_INFLECTION )         )          continue;        if ( dim == AF_DIMENSION_VERT )        {          u  = point->fy;          ou = point->oy;        }        else        {          u  = point->fx;          ou = point->ox;        }        fu = u;        /* is the point before the first edge? */        edge  = edges;        delta = edge->fpos - u;        if ( delta >= 0 )        {          u = edge->pos - ( edge->opos - ou );          goto Store_Point;        }        /* is the point after the last edge? */        edge  = edge_limit - 1;        delta = u - edge->fpos;        if ( delta >= 0 )        {          u = edge->pos + ( ou - edge->opos );          goto Store_Point;        }        {          FT_UInt  min, max, mid;          FT_Pos   fpos;          /* find enclosing edges */          min = 0;          max = edge_limit - edges;          while ( min < max )          {            mid  = ( max + min ) >> 1;            edge = edges + mid;            fpos = edge->fpos;            if ( u < fpos )              max = mid;            else if ( u > fpos )              min = mid + 1;            else            {              /* we are on the edge */              u = edge->pos;              goto Store_Point;            }          }          {            AF_Edge  before = edges + min - 1;            AF_Edge  after  = edges + min + 0;            /* assert( before && after && before != after ) */            if ( before->scale == 0 )              before->scale = FT_DivFix( after->pos - before->pos,                                         after->fpos - before->fpos );            u = before->pos + FT_MulFix( fu - before->fpos,                                         before->scale );          }        }      Store_Point:        /* save the point position */        if ( dim == AF_DIMENSION_HORZ )          point->x = u;        else          point->y = u;        point->flags |= touch_flag;      }    }  }  /****************************************************************   *   *                    WEAK POINT INTERPOLATION   *   ****************************************************************/  static void  af_iup_shift( AF_Point  p1,                AF_Point  p2,                AF_Point  ref )  {    AF_Point  p;    FT_Pos    delta = ref->u - ref->v;    for ( p = p1; p < ref; p++ )      p->u = p->v + delta;    for ( p = ref + 1; p <= p2; p++ )      p->u = p->v + delta;  }  static void  af_iup_interp( AF_Point  p1,                 AF_Point  p2,                 AF_Point  ref1,                 AF_Point  ref2 )  {    AF_Point  p;    FT_Pos    u;    FT_Pos    v1 = ref1->v;    FT_Pos    v2 = ref2->v;    FT_Pos    d1 = ref1->u - v1;    FT_Pos    d2 = ref2->u - v2;    if ( p1 > p2 )      return;    if ( v1 == v2 )    {      for ( p = p1; p <= p2; p++ )      {        u = p->v;        if ( u <= v1 )          u += d1;        else          u += d2;        p->u = u;      }      return;    }    if ( v1 < v2 )    {      for ( p = p1; p <= p2; p++ )      {        u = p->v;        if ( u <= v1 )          u += d1;        else if ( u >= v2 )          u += d2;        else          u = ref1->u + FT_MulDiv( u - v1, ref2->u - ref1->u, v2 - v1 );        p->u = u;      }    }    else    {      for ( p = p1; p <= p2; p++ )      {        u = p->v;        if ( u <= v2 )          u += d2;        else if ( u >= v1 )          u += d1;        else          u = ref1->u + FT_MulDiv( u - v1, ref2->u - ref1->u, v2 - v1 );        p->u = u;      }    }  }  FT_LOCAL_DEF( void )  af_glyph_hints_align_weak_points( AF_GlyphHints  hints,                                    AF_Dimension   dim )  {    AF_Point   points        = hints->points;    AF_Point   point_limit   = points + hints->num_points;    AF_Point*  contour       = hints->contours;    AF_Point*  contour_limit = contour + hints->num_contours;    AF_Flags   touch_flag;    AF_Point   point;    AF_Point   end_point;    AF_Point   first_point;    /* PASS 1: Move segment points to edge positions */    if ( dim == AF_DIMENSION_HORZ )    {      touch_flag = AF_FLAG_TOUCH_X;      for ( point = points; point < point_limit; point++ )      {        point->u = point->x;        point->v = point->ox;      }    }    else    {      touch_flag = AF_FLAG_TOUCH_Y;      for ( point = points; point < point_limit; point++ )      {        point->u = point->y;        point->v = point->oy;      }    }    point = points;    for ( ; contour < contour_limit; contour++ )    {      point       = *contour;      end_point   = point->prev;      first_point = point;      while ( point <= end_point && !( point->flags & touch_flag ) )        point++;      if ( point <= end_point )      {        AF_Point  first_touched = point;        AF_Point  cur_touched   = point;        point++;        while ( point <= end_point )        {          if ( point->flags & touch_flag )          {            /* we found two successive touched points; we interpolate */            /* all contour points between them                        */            af_iup_interp( cur_touched + 1, point - 1,                           cur_touched, point );            cur_touched = point;          }          point++;        }        if ( cur_touched == first_touched )        {          /* this is a special case: only one point was touched in the */          /* contour; we thus simply shift the whole contour           */          af_iup_shift( first_point, end_point, cur_touched );        }        else        {          /* now interpolate after the last touched point to the end */          /* of the contour                                          */          af_iup_interp( cur_touched + 1, end_point,                         cur_touched, first_touched );          /* if the first contour point isn't touched, interpolate */          /* from the contour start to the first touched point     */          if ( first_touched > points )            af_iup_interp( first_point, first_touched - 1,                           cur_touched, first_touched );        }      }    }    /* now save the interpolated values back to x/y */    if ( dim == AF_DIMENSION_HORZ )    {      for ( point = points; point < point_limit; point++ )        point->x = point->u;    }    else    {      for ( point = points; point < point_limit; point++ )        point->y = point->u;    }  }#ifdef AF_USE_WARPER  FT_LOCAL_DEF( void )  af_glyph_hints_scale_dim( AF_GlyphHints  hints,                            AF_Dimension   dim,                            FT_Fixed       scale,                            FT_Pos         delta )  {    AF_Point  points       = hints->points;    AF_Point  points_limit = points + hints->num_points;    AF_Point  point;        if ( dim == AF_DIMENSION_HORZ )    {      for ( point = points; point < points_limit; point++ )        point->x = FT_MulFix( point->fx, scale ) + delta;    }    else    {      for ( point = points; point < points_limit; point++ )        point->y = FT_MulFix( point->fy, scale ) + delta;    }  }#endif /* AF_USE_WARPER *//* END */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜三级在线| 狠狠久久亚洲欧美| 日本高清成人免费播放| 亚洲欧洲精品一区二区精品久久久| 国产美女在线精品| 久久综合色8888| 国内精品久久久久影院一蜜桃| 欧美一级高清片在线观看| 视频一区二区欧美| 88在线观看91蜜桃国自产| 婷婷成人激情在线网| 欧美人牲a欧美精品| 亚洲福中文字幕伊人影院| 欧美日韩日日摸| 日韩中文字幕亚洲一区二区va在线| 欧洲精品一区二区三区在线观看| 亚洲裸体xxx| 色8久久人人97超碰香蕉987| 亚洲综合一区二区三区| 精品视频免费在线| 日本午夜一区二区| wwwwww.欧美系列| 国产成人欧美日韩在线电影| 中文乱码免费一区二区| av在线不卡电影| 亚洲综合视频网| 777色狠狠一区二区三区| 美女视频免费一区| 国产无一区二区| fc2成人免费人成在线观看播放| 亚洲欧美日韩国产手机在线| 欧美日韩在线三级| 精品一区二区三区香蕉蜜桃| 国产欧美一区视频| 99久精品国产| 亚洲国产精品欧美一二99| 欧美一区二区视频网站| 国产一区二区三区久久久| 国产精品久久久久婷婷| 欧美性生活大片视频| 免费不卡在线观看| 国产欧美视频一区二区| 一本到不卡免费一区二区| 性做久久久久久免费观看| 日韩视频一区二区三区| 国产精品18久久久久久久久 | 亚洲免费资源在线播放| 欧美美女喷水视频| 国产老肥熟一区二区三区| 亚洲天堂成人在线观看| 7777精品伊人久久久大香线蕉最新版| 精品一区二区三区免费播放| 国产精品久久久久久妇女6080 | 欧美日韩国产欧美日美国产精品| 免费精品视频在线| 国产精品妹子av| 777奇米成人网| 波多野洁衣一区| 日韩中文字幕av电影| 欧美国产成人精品| 欧美影院午夜播放| 欧美福利一区二区| 国产一区免费电影| 亚洲一区免费在线观看| www国产亚洲精品久久麻豆| 99精品国产一区二区三区不卡| 日韩精品高清不卡| 国产精品亲子伦对白| 欧美高清视频www夜色资源网| 国产高清在线观看免费不卡| 亚洲电影在线免费观看| 国产日韩欧美激情| 欧美日韩精品免费观看视频 | 国产精品一区免费在线观看| 亚洲午夜激情网站| 欧美激情艳妇裸体舞| 69久久99精品久久久久婷婷 | 一本到一区二区三区| 精品一区二区三区久久| 一区二区三区毛片| 国产欧美精品一区二区色综合| 6080午夜不卡| 日本韩国一区二区三区视频| 国产黄色精品视频| 蜜芽一区二区三区| 一区二区三区中文字幕| 欧美极品xxx| 欧美电影免费观看高清完整版在| 91麻豆国产自产在线观看| 国产一区在线精品| 日韩黄色免费电影| 亚洲三级久久久| 国产亚洲精品久| 日韩一卡二卡三卡| 欧美日韩免费高清一区色橹橹| 成人免费毛片app| 韩国中文字幕2020精品| 日韩国产欧美视频| 亚洲一区二三区| 国产精品久久久久久久久动漫| xnxx国产精品| 欧美一区二区三区人| 欧美色成人综合| 色综合天天综合网天天狠天天| 国产一区二区三区观看| 麻豆专区一区二区三区四区五区| 亚洲自拍偷拍欧美| **性色生活片久久毛片| 国产欧美在线观看一区| 久久久精品日韩欧美| 精品国产sm最大网站免费看| 欧美一区二区久久| 制服视频三区第一页精品| 欧美系列一区二区| 色88888久久久久久影院野外| bt7086福利一区国产| 国产成人在线观看| 国产麻豆日韩欧美久久| 精品一区二区在线观看| 九九国产精品视频| 精品一区二区三区av| 裸体一区二区三区| 亚洲资源中文字幕| 一区在线播放视频| 亚洲婷婷综合久久一本伊一区| 国产精品久久久久一区二区三区共| 国产欧美中文在线| 中文字幕va一区二区三区| 国产精品女人毛片| 国产精品理伦片| 中文字幕人成不卡一区| 亚洲人成小说网站色在线| 亚洲一二三专区| 亚洲欧美成aⅴ人在线观看| 亚洲蜜臀av乱码久久精品| 洋洋av久久久久久久一区| 一区二区三区久久久| 亚洲综合成人在线| 日本三级韩国三级欧美三级| 日本美女一区二区三区视频| 麻豆一区二区三区| 国产成人啪免费观看软件| 成人av网站在线| 91免费观看在线| 欧美三级日韩三级国产三级| 欧美一级日韩一级| 精品国产91九色蝌蚪| 国产丝袜美腿一区二区三区| 国产精品不卡一区二区三区| 一区二区三区欧美日| 婷婷综合五月天| 久久不见久久见免费视频1| 国产乱码精品一区二区三区av| 国产成人免费高清| 91麻豆国产福利精品| 欧美三级三级三级爽爽爽| 日韩美女视频在线| 国产日韩av一区| 亚洲另类在线一区| 日韩国产欧美在线观看| 国产精品白丝jk黑袜喷水| 色综合天天综合狠狠| 欧美日本国产一区| 精品88久久久久88久久久| 国产精品久久久久久久久晋中 | 国产高清精品久久久久| 一本色道久久综合亚洲aⅴ蜜桃 | 日本伊人午夜精品| 国产精品一区二区不卡| 91国偷自产一区二区三区成为亚洲经典 | 亚洲精品一卡二卡| 日韩1区2区日韩1区2区| 国产高清精品在线| 欧美三级三级三级爽爽爽| 亚洲精品一区二区精华| 综合久久一区二区三区| 日本视频一区二区| 成人av免费在线| 91麻豆精品国产综合久久久久久 | 亚洲在线观看免费| 激情五月播播久久久精品| 91小视频在线免费看| 日韩欧美一级二级三级| 一区在线播放视频| 久久精品久久综合| av爱爱亚洲一区| 日韩亚洲欧美综合| 亚洲日本一区二区三区| 久久精品国产精品亚洲精品| 99国产欧美久久久精品| 欧美成人官网二区| 亚洲精品视频在线观看网站| 激情综合网av| 欧美最猛性xxxxx直播| 国产女主播一区| 日韩电影在线观看网站| 91视频一区二区| 久久综合久久久久88| 亚洲国产综合在线| av在线综合网|