template<class FileBase> inline bytevector FileRead(FileBase& ifile, size_t chunk, const string& filename) { bytevector data(chunk); ifile.read(data.data(), chunk); size_t nread = ifile.gcount(); if ( nread < data.size() ) data.resize(nread); if ( data.empty() ) throw Source::ReadEOF(filename); return data; }
TFW_BEGIN_NS //////////////////////////////////////////////////////////////////////////// // 静的関数 #if SUPPORT_EXTLIB_LPNG /*---------------------------------------------------------------------*//** ファイル読み込みコールバック関数 **//*---------------------------------------------------------------------*/ static void cbFileRead(png_structp png, png_bytep data, png_size_t length) { FileBase* file = (FileBase*)png_get_io_ptr(png); file->read(data, (u32)length); }