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

📄 ftsysio.c

📁 下载来的一个看图软件的源代码
💻 C
字号:
#include <ft2build.h>#include FT_SYSTEM_STREAM_H#include <stdio.h> /* the ISO/ANSI standard stream object */  typedef struct FT_StdStreamRec_  {    FT_StreamRec  stream;    FILE*         file;    const char*   pathname;    } FT_StdStreamRec, *FT_StdStream; /* read bytes from a standard stream */  static FT_ULong  ft_std_stream_read( FT_StdStream   stream,                      FT_Byte*       buffer,                      FT_ULong       size )  {    long   read_bytes;        read_bytes = fread( buffer, 1, size, stream->file );    if ( read_bytes < 0 )      read_bytes = 0;          return (FT_ULong) read_bytes;  } /* seek the standard stream to a new position */  static FT_Error  ft_std_stream_seek( FT_StdStream   stream,                      FT_ULong       pos )  {    return ( fseek( stream->file, pos, SEEK_SET ) < 0 )         ? FT_Err_Stream_Seek         : FT_Err_Ok;  }     /* close a standard stream */    static void  ft_std_stream_done( FT_StdStream  stream )  {    fclose( stream->file );    stream->file     = NULL;    stream->pathname = NULL;  } /* open a standard stream from a given pathname */  static void  ft_std_stream_init( FT_StdStream  stream,                      const char*   pathname )  {    FT_ASSERT( pathname != NULL );    stream->file = fopen( pathname, "rb" );    if ( stream->file == NULL )    {      FT_ERROR(( "iso.stream.init: could not open '%s'\n", pathname ));      FT_XTHROW( FT_Err_Stream_Open );    }        /* compute total size in bytes */    fseek( file, 0, SEEK_END );    FT_STREAM__SIZE(stream) = ftell( file );    fseek( file, 0, SEEK_SET );        stream->pathname = pathname;    stream->pos      = 0;        FT_TRACE1(( "iso.stream.init: opened '%s' (%ld bytes) succesfully\n",                 pathname, FT_STREAM__SIZE(stream) ));  }                   static void  ft_std_stream_class_init( FT_ClassRec*  _clazz )  {    FT_StreamClassRec*  clazz = FT_STREAM_CLASS(_clazz);        clazz->stream_read = (FT_Stream_ReadFunc) ft_std_stream_read;    clazz->stream_seek = (FT_Stream_SeekFunc) ft_std_stream_seek;  }  static const FT_TypeRec  ft_std_stream_type;  {    "StreamClass",    NULL,        sizeof( FT_ClassRec ),    ft_stream_class_init,    NULL,        sizeof( FT_StdStreamRec ),    ft_std_stream_init,    ft_std_stream_done,    NULL,  };    FT_EXPORT_DEF( FT_Stream )  ft_std_stream_new( FT_Memory    memory,                     const char*  pathname )  {    FT_Class  clazz;        clazz = ft_class_from_type( memory, &ft_std_stream_type );        return (FT_Stream) ft_object_new( clazz, pathname );  }                       FT_EXPORT_DEF( void )  ft_std_stream_create( FT_Memory    memory,                        const char*  pathname,                        FT_Stream*   astream )  {    FT_Class  clazz;        clazz = ft_class_from_type( memory, &ft_std_stream_type );        ft_object_create( clazz, pathname, FT_OBJECT_P(astream) );  }                        

⌨️ 快捷键说明

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