Refactored ImageSequence to better handle random access usage.
This commit is contained in:
@@ -107,33 +107,17 @@ bool ImageSequence_writeLocalData(const Object& obj, Output& fw)
|
||||
|
||||
fw.indent()<<"Length "<<is.getLength()<<std::endl;
|
||||
|
||||
if (!is.getFileNames().empty())
|
||||
if (is.getNumImageData()>0)
|
||||
{
|
||||
fw.indent()<<"FileNames {"<<std::endl;
|
||||
fw.moveIn();
|
||||
|
||||
const osg::ImageSequence::FileNames& names = is.getFileNames();
|
||||
for(osg::ImageSequence::FileNames::const_iterator itr = names.begin();
|
||||
itr != names.end();
|
||||
const osg::ImageSequence::ImageDataList& id = is.getImageDataList();
|
||||
for(osg::ImageSequence::ImageDataList::const_iterator itr = id.begin();
|
||||
itr != id.end();
|
||||
++itr)
|
||||
{
|
||||
fw.indent()<<fw.wrapString(*itr)<<std::endl;
|
||||
}
|
||||
|
||||
fw.moveOut();
|
||||
fw.indent()<<"}"<<std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
fw.indent()<<"Images {"<<std::endl;
|
||||
fw.moveIn();
|
||||
|
||||
const osg::ImageSequence::Images& images = is.getImages();
|
||||
for(osg::ImageSequence::Images::const_iterator itr = images.begin();
|
||||
itr != images.end();
|
||||
++itr)
|
||||
{
|
||||
if (!(*itr)->getFileName().empty()) fw.indent()<<fw.wrapString((*itr)->getFileName())<<std::endl;
|
||||
fw.indent()<<fw.wrapString(itr->_filename)<<std::endl;
|
||||
}
|
||||
|
||||
fw.moveOut();
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
// _fileNames
|
||||
static bool checkFileNames( const osg::ImageSequence& image )
|
||||
{
|
||||
return image.getNumImageFiles()>0;
|
||||
return image.getNumImageData()>0;
|
||||
}
|
||||
|
||||
static bool readFileNames( osgDB::InputStream& is, osg::ImageSequence& image )
|
||||
@@ -23,12 +23,13 @@ static bool readFileNames( osgDB::InputStream& is, osg::ImageSequence& image )
|
||||
|
||||
static bool writeFileNames( osgDB::OutputStream& os, const osg::ImageSequence& image )
|
||||
{
|
||||
const osg::ImageSequence::FileNames& files = image.getFileNames();
|
||||
os.writeSize(files.size()); os << os.BEGIN_BRACKET << std::endl;
|
||||
for ( osg::ImageSequence::FileNames::const_iterator itr=files.begin();
|
||||
itr!=files.end(); ++itr )
|
||||
const osg::ImageSequence::ImageDataList& imageDataList = image.getImageDataList();
|
||||
os.writeSize(imageDataList.size()); os << os.BEGIN_BRACKET << std::endl;
|
||||
for ( osg::ImageSequence::ImageDataList::const_iterator itr=imageDataList.begin();
|
||||
itr!=imageDataList.end();
|
||||
++itr )
|
||||
{
|
||||
os.writeWrappedString( *itr );
|
||||
os.writeWrappedString( itr->_filename );
|
||||
os << std::endl;
|
||||
}
|
||||
os << os.END_BRACKET << std::endl;
|
||||
@@ -38,7 +39,7 @@ static bool writeFileNames( osgDB::OutputStream& os, const osg::ImageSequence& i
|
||||
// _images
|
||||
static bool checkImages( const osg::ImageSequence& image )
|
||||
{
|
||||
return image.getNumImages()>0;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool readImages( osgDB::InputStream& is, osg::ImageSequence& image )
|
||||
@@ -53,14 +54,15 @@ static bool readImages( osgDB::InputStream& is, osg::ImageSequence& image )
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool writeImages( osgDB::OutputStream& os, const osg::ImageSequence& image )
|
||||
static bool writeImages( osgDB::OutputStream& os, const osg::ImageSequence& image)
|
||||
{
|
||||
const osg::ImageSequence::Images& images = image.getImages();
|
||||
os.writeSize(images.size()); os << os.BEGIN_BRACKET << std::endl;
|
||||
for ( osg::ImageSequence::Images::const_iterator itr=images.begin();
|
||||
itr!=images.end(); ++itr )
|
||||
const osg::ImageSequence::ImageDataList& imageDataList = image.getImageDataList();
|
||||
os.writeSize(imageDataList.size()); os << os.BEGIN_BRACKET << std::endl;
|
||||
for ( osg::ImageSequence::ImageDataList::const_iterator itr=imageDataList.begin();
|
||||
itr!=imageDataList.end();
|
||||
++itr )
|
||||
{
|
||||
os.writeObject( (*itr).get() );
|
||||
os.writeObject( (*itr)._image.get() );
|
||||
}
|
||||
os << os.END_BRACKET << std::endl;
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user