Reverted back to using std::list<std::String>

This commit is contained in:
Robert Osfield
2008-07-25 17:42:37 +00:00
parent d137394169
commit 65d5ef608d
5 changed files with 55 additions and 6 deletions

View File

@@ -49,7 +49,7 @@ class OSG_EXPORT ImageSequence : public ImageStream
virtual double getTimeMultiplier() const { return _timeMultiplier; }
typedef std::list< osg::ref_ptr<osg::Image> > Images;
typedef std::vector< std::string > FileNames;
typedef std::list< std::string > FileNames;
enum Mode
{

View File

@@ -214,9 +214,12 @@ void ImageSequence::update(osg::NodeVisitor* nv)
{
if (_fileNames.size()>_images.size())
{
for(unsigned int i=_images.size(); i<_fileNames.size(); ++i)
FileNames::iterator itr = _fileNames.begin();
for(unsigned int i=0;i<_images.size();++i) ++itr;
for(; itr!=_fileNames.end(); ++itr)
{
osg::Image* image = irh->readImageFile(_fileNames[i]);
osg::Image* image = irh->readImageFile(*itr);
_images.push_back(image);
}
}
@@ -246,7 +249,7 @@ void ImageSequence::update(osg::NodeVisitor* nv)
//
if (_fileNamesIterator!=_fileNames.end())
{
// osg::notify(osg::NOTICE)<<" _fileNamesIteratorTime = "<<_fileNamesIteratorTime<<std::endl;
//osg::notify(osg::NOTICE)<<" _fileNamesIteratorTime = "<<_fileNamesIteratorTime<<" "<<_timePerImage<<std::endl;
while(preLoadTime > (_fileNamesIteratorTime + _timePerImage))
{
_fileNamesIteratorTime += _timePerImage;

View File

@@ -32,6 +32,29 @@ void ImageSequence::write(DataOutputStream* out)
else
throw Exception("ImageSequence::write(): Could not cast this osg::ImageSequence to an osg::Object.");
// Write ImageSequence's properties.
out->writeInt(getMode());
out->writeDouble(getDuration());
out->writeUInt(getFileNames().size());
for(FileNames::iterator itr = getFileNames().begin();
itr != getFileNames().end();
++itr)
{
out->writeString(*itr);
}
if (getFileNames().empty())
{
out->writeUInt(getImages().size());
for(Images::iterator itr = getImages().begin();
itr != getImages().end();
++itr)
{
out->writeImage(itr->get());
}
}
}
@@ -51,6 +74,27 @@ void ImageSequence::read(DataInputStream* in)
throw Exception("ImageSequence::read(): Could not cast this osg::ImageSequence to an osg::Object.");
// Read ImageSequence's properties.
setMode((osg::ImageSequence::Mode)(in->readInt()));
setDuration(in->readDouble());
unsigned int numFileNames = in->readUInt();
if (numFileNames>0)
{
for(unsigned int i=0; i<numFileNames; ++i)
{
addImageFile(in->readString());
}
}
else
{
unsigned int numImages = in->readUInt();
for(unsigned int i=0; i<numImages; ++i)
{
addImage(in->readImage());
}
}
}
else{
throw Exception("ImageSequence::read(): Expected ImageSequence identification.");

View File

@@ -27,7 +27,7 @@
TYPE_NAME_ALIAS(std::list< osg::ref_ptr< osg::Image > >, osg::ImageSequence::Images)
TYPE_NAME_ALIAS(std::vector< std::string >, osg::ImageSequence::FileNames)
TYPE_NAME_ALIAS(std::list< std::string >, osg::ImageSequence::FileNames)
BEGIN_ENUM_REFLECTOR(osg::ImageSequence::Mode)
I_DeclaringFile("osg/ImageSequence");
@@ -233,5 +233,5 @@ END_REFLECTOR
STD_LIST_REFLECTOR(std::list< osg::ref_ptr< osg::Image > >)
STD_VECTOR_REFLECTOR(std::vector< std::string >)
STD_LIST_REFLECTOR(std::list< std::string >)

View File

@@ -487,3 +487,5 @@ STD_VECTOR_REFLECTOR(std::vector< osg::Matrix >)
STD_VECTOR_REFLECTOR(std::vector< osg::NodePath >)
STD_VECTOR_REFLECTOR(std::vector< std::string >)