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

📄 ttinterp.c

📁 Qt/Embedded是一个多平台的C++图形用户界面应用程序框架
💻 C
📖 第 1 页 / 共 5 页
字号:
    /*  SDS       */  PACK( 1, 0 ),    /*  ADD       */  PACK( 2, 1 ),    /*  SUB       */  PACK( 2, 1 ),    /*  DIV       */  PACK( 2, 1 ),    /*  MUL       */  PACK( 2, 1 ),    /*  ABS       */  PACK( 1, 1 ),    /*  NEG       */  PACK( 1, 1 ),    /*  FLOOR     */  PACK( 1, 1 ),    /*  CEILING   */  PACK( 1, 1 ),    /*  ROUND[0]  */  PACK( 1, 1 ),    /*  ROUND[1]  */  PACK( 1, 1 ),    /*  ROUND[2]  */  PACK( 1, 1 ),    /*  ROUND[3]  */  PACK( 1, 1 ),    /*  NROUND[0] */  PACK( 1, 1 ),    /*  NROUND[1] */  PACK( 1, 1 ),    /*  NROUND[2] */  PACK( 1, 1 ),    /*  NROUND[3] */  PACK( 1, 1 ),    /*  WCvtF     */  PACK( 2, 0 ),    /*  DeltaP2   */  PACK( 1, 0 ),    /*  DeltaP3   */  PACK( 1, 0 ),    /*  DeltaCn[0] */ PACK( 1, 0 ),    /*  DeltaCn[1] */ PACK( 1, 0 ),    /*  DeltaCn[2] */ PACK( 1, 0 ),    /*  SROUND    */  PACK( 1, 0 ),    /*  S45Round  */  PACK( 1, 0 ),    /*  JROT      */  PACK( 2, 0 ),    /*  JROF      */  PACK( 2, 0 ),    /*  ROFF      */  PACK( 0, 0 ),    /*  INS_$7B   */  PACK( 0, 0 ),    /*  RUTG      */  PACK( 0, 0 ),    /*  RDTG      */  PACK( 0, 0 ),    /*  SANGW     */  PACK( 1, 0 ),    /*  AA        */  PACK( 1, 0 ),    /*  FlipPT    */  PACK( 0, 0 ),    /*  FlipRgON  */  PACK( 2, 0 ),    /*  FlipRgOFF */  PACK( 2, 0 ),    /*  INS_$83   */  PACK( 0, 0 ),    /*  INS_$84   */  PACK( 0, 0 ),    /*  ScanCTRL  */  PACK( 1, 0 ),    /*  SDVPTL[0] */  PACK( 2, 0 ),    /*  SDVPTL[1] */  PACK( 2, 0 ),    /*  GetINFO   */  PACK( 1, 1 ),    /*  IDEF      */  PACK( 1, 0 ),    /*  ROLL      */  PACK( 3, 3 ),    /*  MAX       */  PACK( 2, 1 ),    /*  MIN       */  PACK( 2, 1 ),    /*  ScanTYPE  */  PACK( 1, 0 ),    /*  InstCTRL  */  PACK( 2, 0 ),    /*  INS_$8F   */  PACK( 0, 0 ),    /*  INS_$90  */   PACK( 0, 0 ),    /*  INS_$91  */   PACK( 0, 0 ),    /*  INS_$92  */   PACK( 0, 0 ),    /*  INS_$93  */   PACK( 0, 0 ),    /*  INS_$94  */   PACK( 0, 0 ),    /*  INS_$95  */   PACK( 0, 0 ),    /*  INS_$96  */   PACK( 0, 0 ),    /*  INS_$97  */   PACK( 0, 0 ),    /*  INS_$98  */   PACK( 0, 0 ),    /*  INS_$99  */   PACK( 0, 0 ),    /*  INS_$9A  */   PACK( 0, 0 ),    /*  INS_$9B  */   PACK( 0, 0 ),    /*  INS_$9C  */   PACK( 0, 0 ),    /*  INS_$9D  */   PACK( 0, 0 ),    /*  INS_$9E  */   PACK( 0, 0 ),    /*  INS_$9F  */   PACK( 0, 0 ),    /*  INS_$A0  */   PACK( 0, 0 ),    /*  INS_$A1  */   PACK( 0, 0 ),    /*  INS_$A2  */   PACK( 0, 0 ),    /*  INS_$A3  */   PACK( 0, 0 ),    /*  INS_$A4  */   PACK( 0, 0 ),    /*  INS_$A5  */   PACK( 0, 0 ),    /*  INS_$A6  */   PACK( 0, 0 ),    /*  INS_$A7  */   PACK( 0, 0 ),    /*  INS_$A8  */   PACK( 0, 0 ),    /*  INS_$A9  */   PACK( 0, 0 ),    /*  INS_$AA  */   PACK( 0, 0 ),    /*  INS_$AB  */   PACK( 0, 0 ),    /*  INS_$AC  */   PACK( 0, 0 ),    /*  INS_$AD  */   PACK( 0, 0 ),    /*  INS_$AE  */   PACK( 0, 0 ),    /*  INS_$AF  */   PACK( 0, 0 ),    /*  PushB[0]  */  PACK( 0, 1 ),    /*  PushB[1]  */  PACK( 0, 2 ),    /*  PushB[2]  */  PACK( 0, 3 ),    /*  PushB[3]  */  PACK( 0, 4 ),    /*  PushB[4]  */  PACK( 0, 5 ),    /*  PushB[5]  */  PACK( 0, 6 ),    /*  PushB[6]  */  PACK( 0, 7 ),    /*  PushB[7]  */  PACK( 0, 8 ),    /*  PushW[0]  */  PACK( 0, 1 ),    /*  PushW[1]  */  PACK( 0, 2 ),    /*  PushW[2]  */  PACK( 0, 3 ),    /*  PushW[3]  */  PACK( 0, 4 ),    /*  PushW[4]  */  PACK( 0, 5 ),    /*  PushW[5]  */  PACK( 0, 6 ),    /*  PushW[6]  */  PACK( 0, 7 ),    /*  PushW[7]  */  PACK( 0, 8 ),    /*  MDRP[00]  */  PACK( 1, 0 ),    /*  MDRP[01]  */  PACK( 1, 0 ),    /*  MDRP[02]  */  PACK( 1, 0 ),    /*  MDRP[03]  */  PACK( 1, 0 ),    /*  MDRP[04]  */  PACK( 1, 0 ),    /*  MDRP[05]  */  PACK( 1, 0 ),    /*  MDRP[06]  */  PACK( 1, 0 ),    /*  MDRP[07]  */  PACK( 1, 0 ),    /*  MDRP[08]  */  PACK( 1, 0 ),    /*  MDRP[09]  */  PACK( 1, 0 ),    /*  MDRP[10]  */  PACK( 1, 0 ),    /*  MDRP[11]  */  PACK( 1, 0 ),    /*  MDRP[12]  */  PACK( 1, 0 ),    /*  MDRP[13]  */  PACK( 1, 0 ),    /*  MDRP[14]  */  PACK( 1, 0 ),    /*  MDRP[15]  */  PACK( 1, 0 ),    /*  MDRP[16]  */  PACK( 1, 0 ),    /*  MDRP[17]  */  PACK( 1, 0 ),    /*  MDRP[18]  */  PACK( 1, 0 ),    /*  MDRP[19]  */  PACK( 1, 0 ),    /*  MDRP[20]  */  PACK( 1, 0 ),    /*  MDRP[21]  */  PACK( 1, 0 ),    /*  MDRP[22]  */  PACK( 1, 0 ),    /*  MDRP[23]  */  PACK( 1, 0 ),    /*  MDRP[24]  */  PACK( 1, 0 ),    /*  MDRP[25]  */  PACK( 1, 0 ),    /*  MDRP[26]  */  PACK( 1, 0 ),    /*  MDRP[27]  */  PACK( 1, 0 ),    /*  MDRP[28]  */  PACK( 1, 0 ),    /*  MDRP[29]  */  PACK( 1, 0 ),    /*  MDRP[30]  */  PACK( 1, 0 ),    /*  MDRP[31]  */  PACK( 1, 0 ),    /*  MIRP[00]  */  PACK( 2, 0 ),    /*  MIRP[01]  */  PACK( 2, 0 ),    /*  MIRP[02]  */  PACK( 2, 0 ),    /*  MIRP[03]  */  PACK( 2, 0 ),    /*  MIRP[04]  */  PACK( 2, 0 ),    /*  MIRP[05]  */  PACK( 2, 0 ),    /*  MIRP[06]  */  PACK( 2, 0 ),    /*  MIRP[07]  */  PACK( 2, 0 ),    /*  MIRP[08]  */  PACK( 2, 0 ),    /*  MIRP[09]  */  PACK( 2, 0 ),    /*  MIRP[10]  */  PACK( 2, 0 ),    /*  MIRP[11]  */  PACK( 2, 0 ),    /*  MIRP[12]  */  PACK( 2, 0 ),    /*  MIRP[13]  */  PACK( 2, 0 ),    /*  MIRP[14]  */  PACK( 2, 0 ),    /*  MIRP[15]  */  PACK( 2, 0 ),    /*  MIRP[16]  */  PACK( 2, 0 ),    /*  MIRP[17]  */  PACK( 2, 0 ),    /*  MIRP[18]  */  PACK( 2, 0 ),    /*  MIRP[19]  */  PACK( 2, 0 ),    /*  MIRP[20]  */  PACK( 2, 0 ),    /*  MIRP[21]  */  PACK( 2, 0 ),    /*  MIRP[22]  */  PACK( 2, 0 ),    /*  MIRP[23]  */  PACK( 2, 0 ),    /*  MIRP[24]  */  PACK( 2, 0 ),    /*  MIRP[25]  */  PACK( 2, 0 ),    /*  MIRP[26]  */  PACK( 2, 0 ),    /*  MIRP[27]  */  PACK( 2, 0 ),    /*  MIRP[28]  */  PACK( 2, 0 ),    /*  MIRP[29]  */  PACK( 2, 0 ),    /*  MIRP[30]  */  PACK( 2, 0 ),    /*  MIRP[31]  */  PACK( 2, 0 )  };  static  const TT_Char  opcode_length[256] =  {    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,   -1,-1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    2, 3, 4, 5,  6, 7, 8, 9,  3, 5, 7, 9, 11,13,15,17,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,    1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1  };  static  const TT_Vector  Null_Vector = {0,0};#undef  PACK#undef  NULL_Vector#define NULL_Vector (TT_Vector*)&Null_Vector  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    Current_Ratio                                                      */  /*                                                                       */  /* <Description>                                                         */  /*    Returns the current aspect ratio scaling factor depending on the   */  /*    projection vector's state and device resolutions.                  */  /*                                                                       */  /* <Return>                                                              */  /*    The aspect ratio in 16.16 format, always <= 1.0 .                  */  /*                                                                       */  static  TT_Long  Current_Ratio( EXEC_OP )  {    if ( CUR.tt_metrics.ratio )      return CUR.tt_metrics.ratio;    if ( CUR.GS.projVector.y == 0 )      CUR.tt_metrics.ratio = CUR.tt_metrics.x_ratio;    else if ( CUR.GS.projVector.x == 0 )      CUR.tt_metrics.ratio = CUR.tt_metrics.y_ratio;    else    {      TT_Long  x, y;#if 0      x = TT_MULDIV( CUR.GS.projVector.x, CUR.tt_metrics.x_ratio, 0x4000 );      y = TT_MULDIV( CUR.GS.projVector.y, CUR.tt_metrics.y_ratio, 0x4000 );      CUR.tt_metrics.ratio = Norm( x, y );#else      x = TT_MULDIV( CUR.GS.projVector.x, CUR.tt_metrics.x_ratio, 0x8000 );      y = TT_MULDIV( CUR.GS.projVector.y, CUR.tt_metrics.y_ratio, 0x8000 );      CUR.tt_metrics.ratio = FT_Sqrt32( x*x+y*y ) << 1;#endif    }    return CUR.tt_metrics.ratio;  }  static  TT_Long  Current_Ppem( EXEC_OP )  {    return TT_MULFIX( CUR.tt_metrics.ppem, CURRENT_Ratio() );  }  /*************************************************************************/  /*                                                                       */  /* Functions related to the control value table (CVT).                   */  /*                                                                       */  /*************************************************************************/  static  TT_F26Dot6  Read_CVT( EXEC_OP_ TT_ULong  index )  {    return CUR.cvt[index];  }  static  TT_F26Dot6  Read_CVT_Stretched( EXEC_OP_ TT_ULong  index )  {    return TT_MULFIX( CUR.cvt[index], CURRENT_Ratio() );  }  static  void  Write_CVT( EXEC_OP_ TT_ULong    index,                            TT_F26Dot6  value )  {    CUR.cvt[index] = value;  }  static  void  Write_CVT_Stretched( EXEC_OP_ TT_ULong    index,                                      TT_F26Dot6  value )  {    CUR.cvt[index] = FT_DivFix( value, CURRENT_Ratio() );  }  static  void  Move_CVT( EXEC_OP_ TT_ULong    index,                           TT_F26Dot6  value )  {    CUR.cvt[index] += value;  }  static  void  Move_CVT_Stretched( EXEC_OP_ TT_ULong    index,                                     TT_F26Dot6  value )  {    CUR.cvt[index] += FT_DivFix( value, CURRENT_Ratio() );  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    GetShortIns                                                        */  /*                                                                       */  /* <Description>                                                         */  /*    Returns a short integer taken from the instruction stream at       */  /*    address IP.                                                        */  /*                                                                       */  /* <Return>                                                              */

⌨️ 快捷键说明

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