本文整理汇总了C++中ogre::DataStreamPtr::tell方法的典型用法代码示例。如果您正苦于以下问题:C++ DataStreamPtr::tell方法的具体用法?C++ DataStreamPtr::tell怎么用?C++ DataStreamPtr::tell使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::DataStreamPtr
的用法示例。
在下文中一共展示了DataStreamPtr::tell方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: vorbisSeek
//----------------------------------------------------------------------------//
int OggBuffer::vorbisSeek(void *datasource, ogg_int64_t offset, int whence)
{
size_t spaceToEOF;
ogg_int64_t actualOffset;
Ogre::DataStreamPtr vorbisData;
vorbisData = *(Ogre::DataStreamPtr*)datasource;
switch (whence)
{
case SEEK_SET:
if (vorbisData->size() >= offset)
actualOffset = offset;
else
actualOffset = vorbisData->size();
vorbisData->seek((int)actualOffset);
break;
case SEEK_CUR:
spaceToEOF = vorbisData->size() - vorbisData->tell();
if (offset < spaceToEOF)
actualOffset = (offset);
else
actualOffset = spaceToEOF;
vorbisData->seek( static_cast<size_t>(vorbisData->tell() + actualOffset));
break;
case SEEK_END:
vorbisData->seek(vorbisData->size());
break;
default:
SoundSystem::getSingleton().logMessage("*** ERROR *** Unknown seek command in VorbisSeek");
break;
};
return 0;
}
示例2: vorbisRead
//----------------------------------------------------------------------------//
size_t OggBuffer::vorbisRead(void *ptr, size_t byteSize, size_t sizeToRead, void *datasource )
{
size_t spaceToEOF; // How much more we can read till we hit the EOF marker
size_t actualSizeToRead; // How much data we are actually going to read from memory
Ogre::DataStreamPtr vorbisData; // Our vorbis data, for the typecast
// Get the data in the right format
vorbisData = *(Ogre::DataStreamPtr*)datasource;
// Calculate how much we need to read. This can be sizeToRead*byteSize or less depending on how near the EOF marker we are
spaceToEOF = vorbisData->size() - vorbisData->tell();
if ((sizeToRead * byteSize) < spaceToEOF)
actualSizeToRead = (sizeToRead * byteSize);
else
actualSizeToRead = spaceToEOF;
// A simple copy of the data from memory to the datastruct that the vorbis libs will use
if (actualSizeToRead)
{
// Copy the data from the start of the file PLUS how much we have already read in
vorbisData->read(ptr, actualSizeToRead);
}
// Return how much we read (in the same way fread would)
return actualSizeToRead;
}
示例3: Tell
size_t RocketInterface::Tell(Rocket::Core::FileHandle file)
{
if (!file)
return 0;
Ogre::DataStreamPtr stream = *reinterpret_cast<Ogre::DataStreamPtr*>(file);
return stream->tell();
}
示例4: seek
int64_t FFmpeg_Decoder::seek(void *user_data, int64_t offset, int whence)
{
Ogre::DataStreamPtr stream = static_cast<FFmpeg_Decoder*>(user_data)->mDataStream;
whence &= ~AVSEEK_FORCE;
if(whence == AVSEEK_SIZE)
return stream->size();
if(whence == SEEK_SET)
stream->seek(offset);
else if(whence == SEEK_CUR)
stream->seek(stream->tell()+offset);
else if(whence == SEEK_END)
stream->seek(stream->size()+offset);
else
return -1;
return stream->tell();
}
示例5: OgreResource_Seek
int64_t OgreResource_Seek(void *user_data, int64_t offset, int whence)
{
Ogre::DataStreamPtr stream = static_cast<VideoState*>(user_data)->stream;
whence &= ~AVSEEK_FORCE;
if(whence == AVSEEK_SIZE)
return stream->size();
if(whence == SEEK_SET)
stream->seek((size_t)offset);
else if(whence == SEEK_CUR)
stream->seek((size_t)(stream->tell() + offset));
else if(whence == SEEK_END)
stream->seek((size_t)(stream->size() + offset));
else
return -1;
return stream->tell();
}
示例6: start_position
//--------------------------------------------------------------------------
void
FLevelFileSerializer::importFLevelFile( Ogre::DataStreamPtr &stream, FLevelFile* pDest )
{
size_t start_position( stream->tell() );
readFileHeader( stream );
uint32 section_offsets[ m_header.section_count ];
readInts( stream, section_offsets, m_header.section_count );
Ogre::DataStreamPtr section;
for( size_t i(0); i < m_header.section_count; ++i )
{
size_t current_offset( stream->tell() - start_position );
size_t section_gap( section_offsets[i] - current_offset );
if( current_offset > section_offsets[i] )
{
OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS
,"FLevel sections overlap"
,"FLevelFileSerializer::importFLevelFile" );
}
else if( section_gap )
{
stream->skip( section_gap );
Ogre::LogManager::getSingleton().stream()
<< "Warning: skiping gap in front of section " << i
<< " gap size " << section_gap
<< " FLevelFileSerializer::importFLevelFile";
}
readSectionData( stream, section );
readSection( section, pDest, i );
section->close();
section.setNull();
}
readEnd( stream );
}
示例7: Seek
bool RocketInterface::Seek(Rocket::Core::FileHandle file, long offset, int origin)
{
if (!file)
return false;
Ogre::DataStreamPtr stream = *reinterpret_cast<Ogre::DataStreamPtr*>(file);
long pos = 0;
size_t size = stream->size();
if (origin == SEEK_CUR)
pos = stream->tell() + offset;
else if (origin == SEEK_END)
pos = size + offset;
else
pos = offset;
if (pos < 0 || pos > (long)size)
return false;
stream->seek((size_t)pos);
return true;
}
示例8: vorbisTell
//----------------------------------------------------------------------------//
long OggBuffer::vorbisTell(void *datasource)
{
Ogre::DataStreamPtr vorbisData = *(Ogre::DataStreamPtr*)datasource;
return static_cast<long>(vorbisData->tell());
}
示例9: bytesAvailable
qint64 OgreNetworkReply::bytesAvailable() const
{
if (mDataStream.isNull())
return 0;
return QNetworkReply::bytesAvailable() + mDataStream->size() - mDataStream->tell();
}
示例10: seek
bool OgreNetworkReply::seek(qint64 pos)
{
QNetworkReply::seek(pos);
mDataStream->seek(pos);
return (mDataStream->tell() == pos);
}
示例11: tell
size_t tell() const {
return inp->tell();
}
示例12: importFont
//.........这里部分代码省略.........
if(has_separate_blend)
{
pass->setSeparateSceneBlending( (Ogre::SceneBlendFactor)mat_scene_blend_source,
(Ogre::SceneBlendFactor)mat_scene_blend_dest,
(Ogre::SceneBlendFactor)mat_scene_blend_source_a,
(Ogre::SceneBlendFactor)mat_scene_blend_dest_a);
} else {
pass->setSceneBlending((Ogre::SceneBlendFactor)mat_scene_blend_source,(Ogre::SceneBlendFactor)mat_scene_blend_dest);
}
uint32 mat_alpha_reject_func;
uint8 mat_alpha_reject_val;
bool map_alpha_reject_atc;
stream->read(&mat_alpha_reject_func, sizeof(uint32));
stream->read(&mat_alpha_reject_val, sizeof(uint8));
stream->read(&map_alpha_reject_atc, sizeof(bool));
pass->setAlphaRejectSettings((Ogre::CompareFunction) mat_alpha_reject_func, mat_alpha_reject_val, map_alpha_reject_atc);
pass->setDepthCheckEnabled(false);
pass->setDepthWriteEnabled(false);
pass->setLightingEnabled(false);
Ogre::TextureUnitState * tex_unit = pass->createTextureUnitState();
uint32 tex_address_mode_u;
uint32 tex_address_mode_v;
uint32 tex_address_mode_w;
uint32 tex_filtering_min;
uint32 tex_filtering_mag;
Ogre::ColourValue tex_border_color;
stream->read(&tex_address_mode_u, sizeof(uint32));
stream->read(&tex_address_mode_v, sizeof(uint32));
stream->read(&tex_address_mode_w, sizeof(uint32));
stream->read(&tex_filtering_min, sizeof(uint32));
stream->read(&tex_filtering_mag, sizeof(uint32));
stream->read(tex_border_color.ptr(), sizeof(float) * 4);
tex_unit->setTextureAddressingMode( (Ogre::TextureUnitState::TextureAddressingMode) tex_address_mode_u,
(Ogre::TextureUnitState::TextureAddressingMode) tex_address_mode_v,
(Ogre::TextureUnitState::TextureAddressingMode) tex_address_mode_w);
tex_unit->setTextureFiltering((Ogre::FilterOptions)tex_filtering_min, (Ogre::FilterOptions)tex_filtering_mag, Ogre::FO_NONE);
tex_unit->setTextureBorderColour(tex_border_color);
uint32 numcol = 0;
stream->read(&numcol, sizeof(uint32));
for(uint32 l = 0; l != numcol; ++l)
{
std::cout << "reading color #"<<l<<"...\n";
Ogre::ColourValue color;
stream->read(color.ptr(), sizeof(float) * 4);
pDest->mColorList.push_back(color);
std::cout << "color #"<<l<<" read complete...\n";
}
std::cout << "all color values have been read correctly...\n";
std::cout << "reading font glyph list...\n";
for(uint16 i = 0; i != 256; ++i)
{
std::cout << "reading glyph #"<<(int)i<<"...\n";
FontGlyph glyph;
stream->read(&glyph, sizeof(FontGlyph));
pDest->mGlyph.push_back(glyph);
std::cout << "glyph #"<<(int)i<<" read complete...\n";
}
std::cout << "all font glyph have been read correctly...\n";
// size_t width, size_t height, size_t depth, size_t pixel format
size_t txt_width, txt_height, txt_depth, txt_pixelformat, txt_faces, txt_mipmaps = 0;
stream->read(&txt_width, sizeof(size_t));
stream->read(&txt_height, sizeof(size_t));
stream->read(&txt_depth, sizeof(size_t));
stream->read(&txt_pixelformat, sizeof(size_t));
stream->read(&txt_faces, sizeof(size_t));
stream->read(&txt_mipmaps, sizeof(size_t));
std::cout <<
"Loading Font Texture Data...\n"
"Texture Width: "<<txt_width<<"\n"
"Texture Height: "<<txt_height<<"\n"
"Texture Depth: "<<txt_depth<<"\n"
"Texture Pixel Format: "<<txt_pixelformat<<"\n"
"Texture Faces: "<<txt_faces<<"\n"
"Texture Mipmaps: "<<txt_mipmaps<<"\n";
pDest->mFontImage = new Ogre::Image();
size_t totalimagesize = Ogre::Image::calculateSize(txt_mipmaps, txt_faces, txt_width, txt_height, txt_depth, (Ogre::PixelFormat)txt_pixelformat);
std::cout << "Current position at file: "<<stream->tell()<<"\n"
"Target Image Size: "<<totalimagesize<<"\n"
"Remaining File Size: "<<stream->size()<<"\n";
unsigned char * imgbuffer = new unsigned char [totalimagesize];
stream->read(imgbuffer, totalimagesize);
pDest->mFontImage->loadDynamicImage(imgbuffer, txt_width, txt_height, txt_depth, (Ogre::PixelFormat)txt_pixelformat, true, txt_faces, txt_mipmaps);
Ogre::TexturePtr texture = Ogre::TextureManager::getSingleton().loadImage(pDest->mIName+"_tex",pDest->getGroup(), *pDest->mFontImage, Ogre::TEX_TYPE_2D, 0);
tex_unit->setTextureName(texture->getName(), Ogre::TEX_TYPE_2D);
}
示例13:
long OOSStreamTell(void *datasource)
{
Ogre::DataStreamPtr dataStream = *reinterpret_cast<Ogre::DataStreamPtr*>(datasource);
return static_cast<long>(dataStream->tell());
}