本文整理汇总了C++中DataStream::Read方法的典型用法代码示例。如果您正苦于以下问题:C++ DataStream::Read方法的具体用法?C++ DataStream::Read怎么用?C++ DataStream::Read使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataStream
的用法示例。
在下文中一共展示了DataStream::Read方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: read
unsigned long TTFFontManager::read(FT_Stream stream,
unsigned long offset,
unsigned char* buffer,
unsigned long count )
{
DataStream* dstream = (DataStream*)stream->descriptor.pointer;
dstream->Seek(offset, GEM_STREAM_START);
return dstream->Read(buffer, count);
}
示例2: GetNextMessage
char* FileBasedAGSDebugger::GetNextMessage()
{
DataStream *in = Common::File::OpenFileRead("dbgsend.tmp");
if (in == NULL)
{
// check again, because the editor might have deleted the file in the meantime
return NULL;
}
int fileSize = in->GetLength();
char *msg = (char*)malloc(fileSize + 1);
in->Read(msg, fileSize);
delete in;
unlink("dbgsend.tmp");
msg[fileSize] = 0;
return msg;
}
示例3: Init
bool WavDecoder::Init()
{
DataStream* ds = m_ds;
::memset(&m_format,0,sizeof(m_format));
//LOG_DEBUG("init");
/// read shunks
while (!ds->Eof())
{
Byte chunk_name[4];
if (ds->Read(chunk_name,4)!=4) break;
UInt32 chunk_size = 0;
if (ds->Read(reinterpret_cast<Byte*>(&chunk_size),4)!=4) break;
//// "fmt "
if (::strncmp(reinterpret_cast<const char*>(chunk_name),"fmt ",4)==0)
{
//LOG_DEBUG("found chunk 'fmt '");
if (chunk_size<16) return false;
if (ds->Read(reinterpret_cast<Byte*>(&m_format),sizeof(m_format))!=sizeof(m_format)) return false;
//endian_fix(&m_format);
/// uncompressed PCM
if (m_format.compression_code!=1) return false;
if (m_format.num_channels!=1 && m_format.num_channels!=2) return false;
if (m_format.bits_per_sample!=8 && m_format.bits_per_sample!=16) return false;
if (m_format.num_channels == 1) {
if (m_format.bits_per_sample==8)
m_type = SAMPLE_TYPE_MONO_8;
else if (m_format.bits_per_sample==16)
m_type = SAMPLE_TYPE_MONO_16;
} else if (m_format.num_channels == 2) {
if (m_format.bits_per_sample==8)
m_type = SAMPLE_TYPE_STEREO_8;
else if (m_format.bits_per_sample==16)
m_type = SAMPLE_TYPE_STEREO_16;
}
m_freq = m_format.sample_rate;
assert(chunk_size>=UInt32(sizeof(m_format)));
m_ds->Seek(chunk_size-UInt32(sizeof(m_format)),F_SEEK_CURRENT);
}
/// "data"
else if (::strncmp(reinterpret_cast<const char*>(chunk_name),"data",4)==0)
{
//LOG_DEBUG("found chunk 'data'");
m_samples+=chunk_size/m_format.block_align;
assert(chunk_size<=std::numeric_limits<Int32>::max());
m_ds->Seek(chunk_size,F_SEEK_CURRENT);
}
/// another
else
{
LOG_DEBUG("skip shunk '"<<chunk_name[0]<<chunk_name[1]<<chunk_name[2]<<chunk_name[3]<<"' "<< chunk_size << " bytes");
assert(chunk_size<=std::numeric_limits<Int32>::max());
m_ds->Seek(chunk_size,F_SEEK_CURRENT);
}
}
m_ds->Seek(4+4+4,F_SEEK_BEGIN);
m_unreaded = 0;
return m_samples!=0 && m_type!=SAMPLE_TYPE_UNKNOWN && m_freq!=0;
}
示例4: LoadBuffer
void LoadBuffer() {
size = strm->Read(buffer,size);
readed = 0;
if (size==0 && strm->Eof())
eof = true;
}
示例5: start_playback
void start_playback()
{
DataStream *in = Common::File::OpenFileRead(replayfile);
if (in != NULL) {
char buffer [100];
in->Read(buffer, 12);
buffer[12] = 0;
if (strcmp (buffer, "AGSRecording") != 0) {
Display("ERROR: Invalid recorded data file");
play.playback = 0;
}
else {
fgetstring_limit (buffer, in, 12);
if (buffer[0] != '2')
quit("!Replay file is from an old version of AGS");
if (strcmp (buffer, "2.55.553") < 0)
quit("!Replay file was recorded with an older incompatible version");
if (strcmp (buffer, ACI_VERSION_TEXT)) {
// Disable text as speech while displaying the warning message
// This happens if the user's graphics card does BGR order 16-bit colour
int oldalways = game.options[OPT_ALWAYSSPCH];
game.options[OPT_ALWAYSSPCH] = 0;
play.playback = 0;
Display("Warning! replay is from a different version of AGS (%s) - it may not work properly.", buffer);
play.playback = 1;
srand (play.randseed);
play.gamestep = 0;
game.options[OPT_ALWAYSSPCH] = oldalways;
}
int replayver = in->ReadInt32();
if ((replayver < 1) || (replayver > 3))
quit("!Unsupported Replay file version");
if (replayver >= 2) {
fgetstring_limit (buffer, in, 99);
int uid = in->ReadInt32 ();
if ((strcmp (buffer, game.gamename) != 0) || (uid != game.uniqueid)) {
char msg[150];
sprintf (msg, "!This replay is meant for the game '%s' and will not work correctly with this game.", buffer);
delete in;
quit (msg);
}
// skip the total time
in->ReadInt32 ();
// replay description, maybe we'll use this later
fgetstring_limit (buffer, in, 99);
}
play.randseed = in->ReadInt32();
int flen = in->GetLength() - in->GetPosition ();
if (replayver >= 3) {
flen = in->ReadInt32() * sizeof(short);
}
recordbuffer = (short*)malloc (flen);
in->Read(recordbuffer, flen);
srand (play.randseed);
recbuffersize = flen / sizeof(short);
recsize = 0;
disable_mgetgraphpos = 1;
replay_time = 0;
replay_last_second = loopcounter;
if (replayver >= 3) {
int issave = in->ReadInt32();
if (issave) {
if (restore_game_data (in, replayfile))
quit("!Error running replay... could be incorrect game version");
replay_last_second = loopcounter;
}
}
delete in;
}
}
else // file not found
play.playback = 0;
}
示例6: ghl_ogg_read_func
static size_t ghl_ogg_read_func (void *ptr, size_t size, size_t nmemb, void *datasource)
{
DataStream* ds = reinterpret_cast<DataStream*>(datasource);
if (!ds) return 0;
return ds->Read(reinterpret_cast<Byte*>(ptr),size*nmemb);
}