⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttdebug.c

📁 freetype库的应用demo,里面包含freetype的很多实例
💻 C
📖 第 1 页 / 共 3 页
字号:
            "LT",            "LTEQ",            "GT",            "GTEQ",            "EQ",            "NEQ",            "ODD",            "EVEN",            "IF",            "EIF",            "AND",            "OR",            "NOT",            "DeltaP1",            "SDB",            "SDS",            "ADD",            "SUB",            "DIV",            "MUL",            "ABS",            "NEG",            "FLOOR",            "CEILING",            "ROUND[G]",            "ROUND[B]",            "ROUND[W]",            "ROUND[?]",            "NROUND[G]",            "NROUND[B]",            "NROUND[W]",            "NROUND[?]",            "WCvtF",            "DeltaP2",            "DeltaP3",            "DeltaC1",            "DeltaC2",            "DeltaC3",            "SROUND",            "S45Round",            "JROT",            "JROF",            "ROFF",            "INS_$7B",            "RUTG",            "RDTG",            "SANGW",            "AA",            "FlipPT",            "FlipRgON",            "FlipRgOFF",            "INS_$83",            "INS_$84",            "ScanCTRL",            "SDPVTL[0]",            "SDPVTL[1]",            "GetINFO",            "IDEF",            "ROLL",            "MAX",            "MIN",            "ScanTYPE",            "IntCTRL",            "INS_$8F",            "INS_$90",            "INS_$91",            "INS_$92",            "INS_$93",            "INS_$94",            "INS_$95",            "INS_$96",            "INS_$97",            "INS_$98",            "INS_$99",            "INS_$9A",            "INS_$9B",            "INS_$9C",            "INS_$9D",            "INS_$9E",            "INS_$9F",            "INS_$A0",            "INS_$A1",            "INS_$A2",            "INS_$A3",            "INS_$A4",            "INS_$A5",            "INS_$A6",            "INS_$A7",            "INS_$A8",            "INS_$A9",            "INS_$AA",            "INS_$AB",            "INS_$AC",            "INS_$AD",            "INS_$AE",            "INS_$AF",            "PushB[0]",            "PushB[1]",            "PushB[2]",            "PushB[3]",            "PushB[4]",            "PushB[5]",            "PushB[6]",            "PushB[7]",            "PushW[0]",            "PushW[1]",            "PushW[2]",            "PushW[3]",            "PushW[4]",            "PushW[5]",            "PushW[6]",            "PushW[7]",            "MDRP[G]",            "MDRP[B]",            "MDRP[W]",            "MDRP[?]",            "MDRP[rG]",            "MDRP[rB]",            "MDRP[rW]",            "MDRP[r?]",            "MDRP[mG]",            "MDRP[mB]",            "MDRP[mW]",            "MDRP[m?]",            "MDRP[mrG]",            "MDRP[mrB]",            "MDRP[mrW]",            "MDRP[mr?]",            "MDRP[pG]",            "MDRP[pB]",            "MDRP[pW]",            "MDRP[p?]",            "MDRP[prG]",            "MDRP[prB]",            "MDRP[prW]",            "MDRP[pr?]",            "MDRP[pmG]",            "MDRP[pmB]",            "MDRP[pmW]",            "MDRP[pm?]",            "MDRP[pmrG]",            "MDRP[pmrB]",            "MDRP[pmrW]",            "MDRP[pmr?]",            "MIRP[G]",            "MIRP[B]",            "MIRP[W]",            "MIRP[?]",            "MIRP[rG]",            "MIRP[rB]",            "MIRP[rW]",            "MIRP[r?]",            "MIRP[mG]",            "MIRP[mB]",            "MIRP[mW]",            "MIRP[m?]",            "MIRP[mrG]",            "MIRP[mrB]",            "MIRP[mrW]",            "MIRP[mr?]",            "MIRP[pG]",            "MIRP[pB]",            "MIRP[pW]",            "MIRP[p?]",            "MIRP[prG]",            "MIRP[prB]",            "MIRP[prW]",            "MIRP[pr?]",            "MIRP[pmG]",            "MIRP[pmB]",            "MIRP[pmW]",            "MIRP[pm?]",            "MIRP[pmrG]",            "MIRP[pmrB]",            "MIRP[pmrW]",            "MIRP[pmr?]"          };/********************************************************************* * * Init_Keyboard : set the input file descriptor to char-by-char *                 mode on Unix.. * *********************************************************************/#ifdef UNIX struct termios  old_termio; static void Init_Keyboard( void ) {   struct termios  termio;#ifndef HAVE_TCGETATTR   ioctl( 0, TCGETS, &old_termio );#else   tcgetattr( 0, &old_termio );#endif   termio = old_termio;/*   termio.c_lflag &= ~(ICANON+ECHO+ECHOE+ECHOK+ECHONL+ECHOKE); */   termio.c_lflag &= ~(ICANON+ECHO+ECHOE+ECHOK+ECHONL);#ifndef HAVE_TCSETATTR   ioctl( 0, TCSETS, &termio );#else   tcsetattr( 0, TCSANOW, &termio );#endif } static void Reset_Keyboard( void ) {#ifndef HAVE_TCSETATTR   ioctl( 0, TCSETS, &old_termio );#else   tcsetattr( 0, TCSANOW, &old_termio );#endif }#else static void Init_Keyboard( void ) { } static void Reset_Keyboard( void ) { }#endif  void Panic( const char* message )  {    fprintf( stderr, "%s\n  error code = 0x%04x\n", message, error );    Reset_Keyboard();    exit(1);  }/****************************************************************** * *  Function    :  Calc_Length * *  Description :  Computes the length in bytes of current opcode. * *****************************************************************/#define CUR  (*exc)  static void  Calc_Length( TT_ExecContext  exc )  {    CUR.opcode = CUR.code[CUR.IP];    switch ( CUR.opcode )    {    case 0x40:      if ( CUR.IP + 1 >= CUR.codeSize )        Panic( "code range overflow !!" );      CUR.length = CUR.code[CUR.IP + 1] + 2;      break;    case 0x41:      if ( CUR.IP + 1 >= CUR.codeSize )        Panic( "code range overflow !!" );      CUR.length = CUR.code[CUR.IP + 1] * 2 + 2;      break;    case 0xB0:    case 0xB1:    case 0xB2:    case 0xB3:    case 0xB4:    case 0xB5:    case 0xB6:    case 0xB7:      CUR.length = CUR.opcode - 0xB0 + 2;      break;    case 0xB8:    case 0xB9:    case 0xBA:    case 0xBB:    case 0xBC:    case 0xBD:    case 0xBE:    case 0xBF:      CUR.length = (CUR.opcode - 0xB8) * 2 + 3;      break;    default:      CUR.length = 1;      break;    }    /* make sure result is in range */    if ( CUR.IP + CUR.length > CUR.codeSize )      Panic( "code range overflow !!" );  }  /* Disassemble the current line */  /*                              */  const FT_String* Cur_U_Line( TT_ExecContext  exec )  {    FT_String  s[32];    FT_Int op, i, n;    op = exec->code[ exec->IP ];    sprintf( tempStr, "%04lx: %02hx  %s", exec->IP, op, OpStr[op] );    if ( op == 0x40 )    {      n = exec->code[ exec->IP+1 ];      sprintf( s, "(%d)", n );      strncat( tempStr, s, 8 );      if ( n > 20 ) n = 20; /* limit output */      for ( i = 0; i < n; i++ )      {        sprintf( s, " $%02hx", exec->code[ exec->IP+i+2 ] );        strncat( tempStr, s, 8 );      }    }    else if ( op == 0x41 )    {      n = exec->code[ exec->IP+1 ];      sprintf( s, "(%d)", n );      strncat( tempStr, s, 8 );      if (n > 20) n = 20; /* limit output */      for ( i = 0; i < n; i++ )      {        sprintf( s, " $%02hx%02hx", exec->code[ exec->IP+i*2+2 ],                                    exec->code[ exec->IP+i*2+3 ] );        strncat( tempStr, s, 8 );      }    }    else if ( (op & 0xF8) == 0xB0 )    {      n = op-0xB0;      for ( i=0; i <= n; i++ )      {        sprintf( s, " $%02hx", exec->code[ exec->IP+i+1 ] );        strncat( tempStr, s, 8 );      }    }    else if ( (op & 0xF8) == 0xB8 )    {      n = op-0xB8;      for ( i = 0; i <= n; i++ )      {        sprintf( s, " $%02hx%02hx", exec->code[ exec->IP+i*2+1 ],                                  exec->code[ exec->IP+i*2+2 ] );        strncat( tempStr, s, 8 );      }    }    return (FT_String*)tempStr;  }  static  int  old_tag_to_new( int  tag )  {    int  result = tag & 1;    if (tag & FT_Curve_Tag_Touch_X)      result |= 2;    if (tag & FT_Curve_Tag_Touch_Y)      result |= 4;    return result;  }  static  FT_Error  RunIns( TT_ExecContext  exc )  {    FT_Int    A, diff, key;    FT_Long   next_IP;    FT_Char   ch, oldch = '\0', *temp;    FT_Error  error = 0;    TT_GlyphZoneRec  save;    TT_GlyphZoneRec  pts;    const FT_String*  round_str[8] =    {      "to half-grid",      "to grid",      "to double grid",      "down to grid",      "up to grid",      "off",      "super",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -