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

📄 otlbase.c

📁 下载来的一个看图软件的源代码
💻 C
字号:
#include "otlbase.h"#include "otlcommn.h"  static void  otl_base_coord_validate( OTL_Bytes      table,                           OTL_Validator  valid )  {    OTL_Bytes  p = table;    OTL_UInt   format;    OTL_CHECK( 4 );    format = OTL_NEXT_USHORT( p );    p += 2;    switch ( format )    {      case 1:        break;      case 2:        OTL_CHECK( 4 );        break;      case 3:        OTL_CHECK( 2 );        otl_device_table_validate( table + OTL_PEEK_USHORT( p ) );        break;      default:        OTL_INVALID_DATA;    }  }  static void  otl_base_tag_list_validate( OTL_Bytes      table,                              OTL_Validator  valid )  {    OTL_Bytes  p = table;    OTL_UInt   count;    OTL_CHECK(2);    count = OTL_NEXT_USHORT( p );    OTL_CHECK( count*4 );  }  static void  otl_base_values_validate( OTL_Bytes      table,                            OTL_Validator  valid )  {    OTL_Bytes  p = table;    OTL_UInt   count;    OTL_CHECK( 4 );    p    += 2;  /* skip default index */    count = OTL_NEXT_USHORT( p );    OTL_CHECK( count*2 );    for ( ; count > 0; count-- )      otl_base_coord_validate( table + OTL_NEXT_USHORT( p ), valid );  }  static void  otl_base_minmax_validate( OTL_Bytes      table,                            OTL_Validator  valid )  {    OTL_Bytes  p = table;    OTL_UInt   min_coord, max_coord, count;    OTL_CHECK(6);    min_coord = OTL_NEXT_USHORT( p );    max_coord = OTL_NEXT_USHORT( p );    count     = OTL_NEXT_USHORT( p );    if ( min_coord )      otl_base_coord_validate( table + min_coord, valid );    if ( max_coord )      otl_base_coord_validate( table + max_coord, valid );    OTL_CHECK( count*8 );    for ( ; count > 0; count-- )    {      p += 4;  /* ignore tag */      min_coord = OTL_NEXT_USHORT( p );      max_coord = OTL_NEXT_USHORT( p );      if ( min_coord )        otl_base_coord_validate( table + min_coord, valid );      if ( max_coord )        otl_base_coord_validate( table + max_coord, valid );    }  }  static void  otl_base_script_validate( OTL_Bytes      table,                            OTL_Validator  valid )  {    OTL_Bytes  p = table;    OTL_UInt   values, default_minmax;    OTL_CHECK(6);    values         = OTL_NEXT_USHORT( p );    default_minmax = OTL_NEXT_USHORT( p );    count          = OTL_NEXT_USHORT( p );    if ( values )      otl_base_values_validate( table + values, valid );    if ( default_minmax )      otl_base_minmax_validate( table + default_minmax, valid );    OTL_CHECK( count*6 );    for ( ; count > 0; count-- )    {      p += 4;  /* ignore tag */      otl_base_minmax_validate( table + OTL_NEXT_USHORT( p ), valid );    }  }  static void  otl_base_script_list_validate( OTL_Bytes      table,                                 OTL_Validator  valid )  {    OTL_Bytes  p = table;    OTL_UInt   count;    OTL_CHECK(2);    count = OTL_NEXT_USHORT( p );    OTL_CHECK(count*6);    for ( ; count > 0; count-- )    {      p += 4;  /* ignore script tag */      otl_base_script_validate( table + OTL_NEXT_USHORT( p ) );    }  }  static void  otl_axis_table_validate( OTL_Bytes      table,                           OTL_Validator  valid )  {    OTL_Bytes  p = table;    OTL_UInt   tags;    OTL_CHECK(4);    tags = OTL_NEXT_USHORT( p );    if ( tags )      otl_base_tag_list_validate   ( table + tags );    otl_base_script_list_validate( table + OTL_NEXT_USHORT( p ) );  }  OTL_LOCALDEF( void )  otl_base_validate( OTL_Bytes      table,                     OTL_Validator  valid )  {    OTL_Bytes p = table;    OTL_CHECK(6);    if ( OTL_NEXT_ULONG( p ) != 0x10000UL )      OTL_INVALID_DATA;    otl_axis_table_validate( table + OTL_NEXT_USHORT( p ) );    otl_axis_table_validate( table + OTL_NEXT_USHORT( p ) );  }

⌨️ 快捷键说明

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