From 65d5ef608d401648571cd62869faeecce3cee5ab Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 25 Jul 2008 17:42:37 +0000 Subject: [PATCH] Reverted back to using std::list --- include/osg/ImageSequence | 2 +- src/osg/ImageSequence.cpp | 9 ++++-- src/osgPlugins/ive/ImageSequence.cpp | 44 +++++++++++++++++++++++++++ src/osgWrappers/osg/ImageSequence.cpp | 4 +-- src/osgWrappers/osg/Node.cpp | 2 ++ 5 files changed, 55 insertions(+), 6 deletions(-) diff --git a/include/osg/ImageSequence b/include/osg/ImageSequence index fe3cd58e3..a9acc995d 100644 --- a/include/osg/ImageSequence +++ b/include/osg/ImageSequence @@ -49,7 +49,7 @@ class OSG_EXPORT ImageSequence : public ImageStream virtual double getTimeMultiplier() const { return _timeMultiplier; } typedef std::list< osg::ref_ptr > Images; - typedef std::vector< std::string > FileNames; + typedef std::list< std::string > FileNames; enum Mode { diff --git a/src/osg/ImageSequence.cpp b/src/osg/ImageSequence.cpp index 6e8e6e9f6..dcd96e4cb 100644 --- a/src/osg/ImageSequence.cpp +++ b/src/osg/ImageSequence.cpp @@ -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< (_fileNamesIteratorTime + _timePerImage)) { _fileNamesIteratorTime += _timePerImage; diff --git a/src/osgPlugins/ive/ImageSequence.cpp b/src/osgPlugins/ive/ImageSequence.cpp index 88088749d..d182fb3e1 100644 --- a/src/osgPlugins/ive/ImageSequence.cpp +++ b/src/osgPlugins/ive/ImageSequence.cpp @@ -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; ireadString()); + } + } + else + { + unsigned int numImages = in->readUInt(); + for(unsigned int i=0; ireadImage()); + } + } + } else{ throw Exception("ImageSequence::read(): Expected ImageSequence identification."); diff --git a/src/osgWrappers/osg/ImageSequence.cpp b/src/osgWrappers/osg/ImageSequence.cpp index b1f2e1668..d25cc614d 100644 --- a/src/osgWrappers/osg/ImageSequence.cpp +++ b/src/osgWrappers/osg/ImageSequence.cpp @@ -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 >) diff --git a/src/osgWrappers/osg/Node.cpp b/src/osgWrappers/osg/Node.cpp index 3b0ebb864..c736d25df 100644 --- a/src/osgWrappers/osg/Node.cpp +++ b/src/osgWrappers/osg/Node.cpp @@ -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 >) +