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

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

?? ftoutln.c

?? QT 開發環境里面一個很重要的文件
?? C
?? 第 1 頁 / 共 2 頁
字號:
        while ( p < q )        {          swap = *p;          *p   = *q;          *q   = swap;          p++;          q--;        }      }      /* reverse tags table */      {        char*  p = outline->tags + first;        char*  q = outline->tags + last;        char   swap;        while ( p < q )        {          swap = *p;          *p   = *q;          *q   = swap;          p++;          q--;        }      }      first = last + 1;    }    outline->flags ^= FT_OUTLINE_REVERSE_FILL;  }  /* documentation is in ftoutln.h */  FT_EXPORT_DEF( FT_Error )  FT_Outline_Render( FT_Library         library,                     FT_Outline*        outline,                     FT_Raster_Params*  params )  {    FT_Error     error;    FT_Bool      update = 0;    FT_Renderer  renderer;    FT_ListNode  node;    if ( !library )      return FT_Err_Invalid_Library_Handle;    if ( !outline || !params )      return FT_Err_Invalid_Argument;    renderer = library->cur_renderer;    node     = library->renderers.head;    params->source = (void*)outline;    error = FT_Err_Cannot_Render_Glyph;    while ( renderer )    {      error = renderer->raster_render( renderer->raster, params );      if ( !error || FT_ERROR_BASE( error ) != FT_Err_Cannot_Render_Glyph )        break;      /* FT_Err_Cannot_Render_Glyph is returned if the render mode   */      /* is unsupported by the current renderer for this glyph image */      /* format                                                      */      /* now, look for another renderer that supports the same */      /* format                                                */      renderer = FT_Lookup_Renderer( library, FT_GLYPH_FORMAT_OUTLINE,                                     &node );      update   = 1;    }    /* if we changed the current renderer for the glyph image format */    /* we need to select it as the next current one                  */    if ( !error && update && renderer )      FT_Set_Renderer( library, renderer, 0, 0 );    return error;  }  /* documentation is in ftoutln.h */  FT_EXPORT_DEF( FT_Error )  FT_Outline_Get_Bitmap( FT_Library        library,                         FT_Outline*       outline,                         const FT_Bitmap  *abitmap )  {    FT_Raster_Params  params;    if ( !abitmap )      return FT_Err_Invalid_Argument;    /* other checks are delayed to FT_Outline_Render() */    params.target = abitmap;    params.flags  = 0;    if ( abitmap->pixel_mode == FT_PIXEL_MODE_GRAY  ||         abitmap->pixel_mode == FT_PIXEL_MODE_LCD   ||         abitmap->pixel_mode == FT_PIXEL_MODE_LCD_V )      params.flags |= FT_RASTER_FLAG_AA;    return FT_Outline_Render( library, outline, &params );  }  /* documentation is in ftoutln.h */  FT_EXPORT_DEF( void )  FT_Vector_Transform( FT_Vector*        vector,                       const FT_Matrix*  matrix )  {    FT_Pos xz, yz;    if ( !vector || !matrix )      return;    xz = FT_MulFix( vector->x, matrix->xx ) +         FT_MulFix( vector->y, matrix->xy );    yz = FT_MulFix( vector->x, matrix->yx ) +         FT_MulFix( vector->y, matrix->yy );    vector->x = xz;    vector->y = yz;  }  /* documentation is in ftoutln.h */  FT_EXPORT_DEF( void )  FT_Outline_Transform( const FT_Outline*  outline,                        const FT_Matrix*   matrix )  {    FT_Vector*  vec;    FT_Vector*  limit;    if ( !outline || !matrix )      return;    vec   = outline->points;    limit = vec + outline->n_points;    for ( ; vec < limit; vec++ )      FT_Vector_Transform( vec, matrix );  }#if 0#define FT_OUTLINE_GET_CONTOUR( outline, c, first, last )  \  do {                                                     \    (first) = ( c > 0 ) ? (outline)->points +              \                            (outline)->contours[c - 1] + 1 \                        : (outline)->points;               \    (last) = (outline)->points + (outline)->contours[c];   \  } while ( 0 )  /* Is a point in some contour?                     */  /*                                                 */  /* We treat every point of the contour as if it    */  /* it were ON.  That is, we allow false positives, */  /* but disallow false negatives.  (XXX really?)    */  static FT_Bool  ft_contour_has( FT_Outline*  outline,                  FT_Short     c,                  FT_Vector*   point )  {    FT_Vector*  first;    FT_Vector*  last;    FT_Vector*  a;    FT_Vector*  b;    FT_UInt     n = 0;    FT_OUTLINE_GET_CONTOUR( outline, c, first, last );    for ( a = first; a <= last; a++ )    {      FT_Pos  x;      FT_Int  intersect;      b = ( a == last ) ? first : a + 1;      intersect = ( a->y - point->y ) ^ ( b->y - point->y );      /* a and b are on the same side */      if ( intersect >= 0 )      {        if ( intersect == 0 && a->y == point->y )        {          if ( ( a->x <= point->x && b->x >= point->x ) ||               ( a->x >= point->x && b->x <= point->x ) )            return 1;        }        continue;      }      x = a->x + ( b->x - a->x ) * (point->y - a->y ) / ( b->y - a->y );      if ( x < point->x )        n++;      else if ( x == point->x )        return 1;    }    return ( n % 2 );  }    static FT_Bool  ft_contour_enclosed( FT_Outline*  outline,                       FT_UShort    c )  {    FT_Vector*  first;    FT_Vector*  last;    FT_Short    i;    FT_OUTLINE_GET_CONTOUR( outline, c, first, last );    for ( i = 0; i < outline->n_contours; i++ )    {      if ( i != c && ft_contour_has( outline, i, first ) )      {        FT_Vector*  pt;        for ( pt = first + 1; pt <= last; pt++ )          if ( !ft_contour_has( outline, i, pt ) )            return 0;        return 1;      }    }    return 0;  }  /* This version differs from the public one in that each */  /* part (contour not enclosed in another contour) of the */  /* outline is checked for orientation.  This is          */  /* necessary for some buggy CJK fonts.                   */  static FT_Orientation  ft_outline_get_orientation( FT_Outline*  outline )  {    FT_Short        i;    FT_Vector*      first;    FT_Vector*      last;    FT_Orientation  orient = FT_ORIENTATION_NONE;    first = outline->points;    for ( i = 0; i < outline->n_contours; i++, first = last + 1 )    {      FT_Vector*  point;      FT_Vector*  xmin_point;      FT_Pos      xmin;      last = outline->points + outline->contours[i];      /* skip degenerate contours */      if ( last < first + 2 )        continue;      if ( ft_contour_enclosed( outline, i ) )        continue;      xmin       = first->x;      xmin_point = first;      for ( point = first + 1; point <= last; point++ )      {        if ( point->x < xmin )        {          xmin       = point->x;          xmin_point = point;        }      }      /* check the orientation of the contour */      {        FT_Vector*      prev;        FT_Vector*      next;        FT_Orientation  o;        prev = ( xmin_point == first ) ? last : xmin_point - 1;        next = ( xmin_point == last ) ? first : xmin_point + 1;        if ( FT_Atan2( prev->x - xmin_point->x, prev->y - xmin_point->y ) >             FT_Atan2( next->x - xmin_point->x, next->y - xmin_point->y ) )          o = FT_ORIENTATION_POSTSCRIPT;        else          o = FT_ORIENTATION_TRUETYPE;        if ( orient == FT_ORIENTATION_NONE )          orient = o;        else if ( orient != o )          return FT_ORIENTATION_NONE;      }    }    return orient;  }#endif /* 0 */  /* documentation is in ftoutln.h */  FT_EXPORT_DEF( FT_Error )  FT_Outline_Embolden( FT_Outline*  outline,                       FT_Pos       strength )  {    FT_Vector*  points;    FT_Vector   v_prev, v_first, v_next, v_cur;    FT_Angle    rotate, angle_in, angle_out;    FT_Int      c, n, first;    FT_Int      orientation;    if ( !outline )      return FT_Err_Invalid_Argument;    strength /= 2;    if ( strength == 0 )      return FT_Err_Ok;    orientation = FT_Outline_Get_Orientation( outline );    if ( orientation == FT_ORIENTATION_NONE )    {      if ( outline->n_contours )        return FT_Err_Invalid_Argument;      else        return FT_Err_Ok;    }    if ( orientation == FT_ORIENTATION_TRUETYPE )      rotate = -FT_ANGLE_PI2;    else      rotate = FT_ANGLE_PI2;    points = outline->points;    first = 0;    for ( c = 0; c < outline->n_contours; c++ )    {      int  last = outline->contours[c];      v_first = points[first];      v_prev  = points[last];      v_cur   = v_first;      for ( n = first; n <= last; n++ )      {        FT_Vector  in, out;        FT_Angle   angle_diff;        FT_Pos     d;        FT_Fixed   scale;        if ( n < last )          v_next = points[n + 1];        else          v_next = v_first;        /* compute the in and out vectors */        in.x = v_cur.x - v_prev.x;        in.y = v_cur.y - v_prev.y;        out.x = v_next.x - v_cur.x;        out.y = v_next.y - v_cur.y;        angle_in   = FT_Atan2( in.x, in.y );        angle_out  = FT_Atan2( out.x, out.y );        angle_diff = FT_Angle_Diff( angle_in, angle_out );        scale      = FT_Cos( angle_diff / 2 );        if ( scale < 0x4000L && scale > -0x4000L )          in.x = in.y = 0;        else        {          d = FT_DivFix( strength, scale );          FT_Vector_From_Polar( &in, d, angle_in + angle_diff / 2 - rotate );        }        outline->points[n].x = v_cur.x + strength + in.x;        outline->points[n].y = v_cur.y + strength + in.y;        v_prev = v_cur;        v_cur  = v_next;      }      first = last + 1;    }    return FT_Err_Ok;  }  /* documentation is in ftoutln.h */  FT_EXPORT_DEF( FT_Orientation )  FT_Outline_Get_Orientation( FT_Outline*  outline )  {    FT_Pos      xmin       = 32768L;    FT_Vector*  xmin_point = NULL;    FT_Vector*  xmin_first = NULL;    FT_Vector*  xmin_last  = NULL;    short*      contour;    FT_Vector*  first;    FT_Vector*  last;    FT_Vector*  prev;    FT_Vector*  next;    if ( !outline || outline->n_points <= 0 )      return FT_ORIENTATION_TRUETYPE;    first = outline->points;    for ( contour = outline->contours;          contour < outline->contours + outline->n_contours;          contour++, first = last + 1 )    {      FT_Vector*  point;      FT_Int      on_curve;      FT_Int      on_curve_count = 0;      FT_Pos      tmp_xmin       = 32768L;      FT_Vector*  tmp_xmin_point = NULL;      last = outline->points + *contour;      /* skip degenerate contours */      if ( last < first + 2 )        continue;      for ( point = first; point <= last; ++point )      {        /* Count on-curve points.  If there are less than 3 on-curve */        /* points, just bypass this contour.                         */        on_curve        = outline->tags[point - outline->points] & 1;        on_curve_count += on_curve;        if ( point->x < tmp_xmin && on_curve )        {          tmp_xmin       = point->x;          tmp_xmin_point = point;        }      }      if ( on_curve_count > 2 && tmp_xmin < xmin )      {        xmin       = tmp_xmin;        xmin_point = tmp_xmin_point;        xmin_first = first;        xmin_last  = last;      }    }    if ( !xmin_point )      return FT_ORIENTATION_TRUETYPE;    prev = ( xmin_point == xmin_first ) ? xmin_last : xmin_point - 1;    next = ( xmin_point == xmin_last ) ? xmin_first : xmin_point + 1;    /* Skip off-curve points */    while ( ( outline->tags[prev - outline->points] & 1 ) == 0 )    {      if ( prev == xmin_first )        prev = xmin_last;      else        --prev;    }    while ( ( outline->tags[next - outline->points] & 1 ) == 0 )    {      if ( next == xmin_last )        next = xmin_first;      else        ++next;    }    if ( FT_Atan2( prev->x - xmin_point->x, prev->y - xmin_point->y ) >         FT_Atan2( next->x - xmin_point->x, next->y - xmin_point->y ) )      return FT_ORIENTATION_POSTSCRIPT;    else      return FT_ORIENTATION_TRUETYPE;  }/* END */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内欧美视频一区二区| 日日噜噜夜夜狠狠视频欧美人| 国产伦精品一区二区三区在线观看 | 欧美一卡二卡三卡| 老司机免费视频一区二区三区| 精品国产精品一区二区夜夜嗨| 国产一区高清在线| 最新中文字幕一区二区三区 | 日韩亚洲欧美在线观看| 国模娜娜一区二区三区| 国产精品你懂的| 欧美色网站导航| 国内成人自拍视频| 亚洲色图在线看| 欧美一级理论片| 成人晚上爱看视频| 亚洲成年人影院| 国产日韩欧美在线一区| 色综合天天天天做夜夜夜夜做| 婷婷成人综合网| 欧美国产国产综合| 欧美剧情片在线观看| 久久精品国产精品亚洲红杏| 1区2区3区精品视频| 91精品国产综合久久国产大片| 国产精品99久久久久久久女警| 亚洲精品va在线观看| 精品国产91久久久久久久妲己| 成人国产电影网| 蜜桃视频第一区免费观看| 国产精品天天摸av网| 91精品国产综合久久香蕉的特点| 国产麻豆日韩欧美久久| 亚洲成av人**亚洲成av**| 国产亚洲欧美色| 欧美日本一区二区在线观看| 国产98色在线|日韩| 日韩在线a电影| 国产精品女主播在线观看| 69久久99精品久久久久婷婷 | 欧美日韩一级大片网址| 国产在线国偷精品免费看| 亚洲午夜久久久久久久久电影院| 久久亚洲精品国产精品紫薇| 91老师国产黑色丝袜在线| 国产美女一区二区| 青青草视频一区| 亚洲一区二区四区蜜桃| 国产精品视频你懂的| 亚洲精品一区二区三区99| 777奇米四色成人影色区| 91福利精品第一导航| 成人美女视频在线观看| 久久成人综合网| 日韩一区精品视频| 自拍偷拍亚洲激情| 欧美国产禁国产网站cc| 国产色综合久久| 26uuu欧美| 精品久久久网站| 精品人在线二区三区| 欧美一区二区视频观看视频| 欧美性xxxxx极品少妇| 一本大道久久a久久综合婷婷| 丰满亚洲少妇av| 国产不卡免费视频| 岛国精品在线播放| 成人性生交大片免费看在线播放 | 91农村精品一区二区在线| 成人美女视频在线观看18| 国产91精品露脸国语对白| 国产一区二三区| 成熟亚洲日本毛茸茸凸凹| 国产精品888| 国产成人一区二区精品非洲| 国产一区二区三区电影在线观看| 日韩成人精品在线| 蜜桃视频一区二区三区在线观看| 久热成人在线视频| 精品在线视频一区| 国产精品1024| 99re8在线精品视频免费播放| av在线不卡网| 在线视频一区二区三| 欧美日韩在线不卡| 91精品欧美一区二区三区综合在 | 亚洲国产一二三| 五月天一区二区| 美女国产一区二区| 国产福利视频一区二区三区| 白白色 亚洲乱淫| 91豆麻精品91久久久久久| 欧美日韩一区视频| 欧美一区二区三区日韩| 久久麻豆一区二区| 亚洲三级电影全部在线观看高清| 亚洲激情图片qvod| 麻豆精品视频在线观看| 国产精品99久久久久久有的能看| 91在线国产福利| 欧美另类一区二区三区| 精品久久久久久久久久久院品网| 国产婷婷精品av在线| 亚洲欧洲综合另类| 美国十次了思思久久精品导航| 国产精品18久久久久久久久久久久| caoporm超碰国产精品| 欧美少妇性性性| 久久亚洲一区二区三区四区| 亚洲色图在线看| 久久99久久99| 在线观看日韩电影| 精品国产91久久久久久久妲己| 亚洲男同性恋视频| 狠狠色2019综合网| 欧亚一区二区三区| 久久久天堂av| 亚洲国产成人高清精品| 国产·精品毛片| 欧美日韩一区二区不卡| 国产精品视频免费| 琪琪一区二区三区| 色婷婷av一区| 国产日本欧洲亚洲| 蜜臀av性久久久久蜜臀aⅴ | 在线视频欧美精品| 精品美女一区二区| 亚洲成人三级小说| 不卡的电视剧免费网站有什么| 日韩亚洲欧美高清| 亚洲精品日韩一| 成人综合日日夜夜| 日韩免费观看高清完整版在线观看| 亚洲欧美国产77777| 国产一区二区三区免费看| 欧美日韩一本到| 亚洲精品亚洲人成人网| 国产精品66部| 亚洲精品一区二区三区福利 | 精品在线观看视频| 欧美日韩精品免费观看视频| 最新国产の精品合集bt伙计| 国产久卡久卡久卡久卡视频精品| 制服.丝袜.亚洲.另类.中文| 怡红院av一区二区三区| 成人国产精品免费| 欧美激情在线一区二区三区| 久久99久久99精品免视看婷婷| 欧美精品777| 亚洲成人免费在线| 欧美亚洲另类激情小说| 日韩理论电影院| 国产精品自拍三区| xvideos.蜜桃一区二区| 韩日精品视频一区| 日韩欧美一级片| 蜜臀91精品一区二区三区| 91精品国产高清一区二区三区| 亚洲不卡一区二区三区| 欧美色精品在线视频| 亚洲影视在线播放| 精品视频1区2区| 亚洲女与黑人做爰| 91在线观看地址| 一区二区三区不卡视频在线观看| 色综合久久久久久久久久久| 国产精品麻豆一区二区| 成人av电影观看| 一区二区三区日韩欧美| 色呦呦国产精品| 粉嫩嫩av羞羞动漫久久久| 国产精品一卡二卡| 欧美精品一区二区三区在线| 蜜桃精品在线观看| 精品久久久三级丝袜| 国产中文字幕精品| 国产日韩欧美不卡| 色综合夜色一区| 香蕉影视欧美成人| 精品免费一区二区三区| 国产成人午夜99999| 中文字幕一区二| 在线观看国产日韩| 日韩成人免费在线| 久久一日本道色综合| 成人激情免费视频| 一区二区三区免费| 51精品国自产在线| 国产成人av一区二区三区在线| 中文字幕中文字幕一区| 欧美视频在线播放| 美女一区二区三区在线观看| 国产欧美日韩亚州综合 | 精品亚洲成a人| 欧美韩国日本综合| 在线日韩av片| 精品一区二区在线观看| 国产精品电影一区二区三区| 欧美日韩激情一区二区| 国产精品影视在线观看|