Show
Ignore:
Timestamp:
01/27/10 18:09:05 (5 years ago)
Author:
robert
Message:

From Wang Rui, "Changes:

1. Rewrite the reading/writing exception handlers to work like the ive
plugin exceptions.
2. Write a header writing/checking function in ReaderWriterOSG2.cpp,
which may help decide if the stream is ascii or binary. The
readInputIterator() function will return null pointer if the input
file is nither osgb nor osgt format, which indicates that the old .osg
format could be used here, in case we've merged the two plugins
together.
3. Add a new ForceReadingImage? option in the InputStream?, which will
allocate an empty image object with the filename if specifed external
image file is missed. It may be useful for format converting in some
cases.
4. Add new osgParticle wrappers, as well as some modification to the
osgParticle headers, for instance, change isEnabled() to getEnabled().
5. Some fixes to the osg serialization wrappers."

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/include/osgDB/Serializer

    r11002 r11018  
    138138    { 
    139139        C& object = OBJECT_CAST<C&>(obj); 
    140         if ( !is.isBinary() && !is.matchString(_name) ) 
    141             return true; 
     140        if ( is.isBinary() ) 
     141        { 
     142            bool ok = false; is >> ok; 
     143            if ( !ok ) return true; 
     144        } 
     145        else 
     146        { 
     147            if ( !is.matchString(_name) ) 
     148                return true; 
     149        } 
    142150        return (*_reader)(is, object); 
    143151    } 
     
    146154    { 
    147155        const C& object = OBJECT_CAST<const C&>(obj); 
    148         if ( !os.isBinary() ) 
    149         { 
    150             if ( !(*_checker)(object) ) return true; 
    151             os << _name; 
     156        bool ok = (*_checker)(object); 
     157        if ( os.isBinary() ) 
     158        { 
     159            os << ok; 
     160            if ( !ok ) return true; 
     161        } 
     162        else 
     163        { 
     164            if ( !ok ) return true; 
     165            os << PROPERTY(_name.c_str()); 
    152166        } 
    153167        return (*_writer)(os, object); 
     
    159173    std::string _name; 
    160174    Checker _checker; 
     175     
     176public: 
    161177    Reader _reader; 
    162178    Writer _writer; 
     
    220236        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    221237        { 
    222             os << ParentType::_name; 
     238            os << PROPERTY((ParentType::_name).c_str()); 
    223239            if ( _useHex ) os << std::hex; 
    224240            os << (object.*_getter)(); 
     
    229245    } 
    230246     
    231 protected: 
     247public: 
    232248    Getter _getter; 
    233249    Setter _setter; 
     250     
     251protected: 
    234252    bool _useHex; 
    235253}; 
     
    275293        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    276294        { 
    277             os << ParentType::_name << (object.*_getter)() << std::endl; 
    278         } 
    279         return true; 
    280     } 
    281      
    282 protected: 
     295            os << PROPERTY((ParentType::_name).c_str()) << (object.*_getter)() << std::endl; 
     296        } 
     297        return true; 
     298    } 
     299     
     300public: 
    283301    Getter _getter; 
    284302    Setter _setter; 
     
    324342        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    325343        { 
    326             os << ParentType::_name << (object.*_getter)() << std::endl; 
     344            os << PROPERTY((ParentType::_name).c_str()) << (object.*_getter)() << std::endl; 
    327345        } 
    328346        return true; 
     
    344362    } 
    345363     
     364public: 
    346365    Getter _getter; 
    347366    Setter _setter; 
     
    386405        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    387406        { 
    388             os << ParentType::_name << GLENUM((object.*_getter)()) << std::endl; 
    389         } 
    390         return true; 
    391     } 
    392      
    393 protected: 
     407            os << PROPERTY((ParentType::_name).c_str()) << GLENUM((object.*_getter)()) << std::endl; 
     408        } 
     409        return true; 
     410    } 
     411     
     412public: 
    394413    Getter _getter; 
    395414    Setter _setter; 
     
    436455        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    437456        { 
    438             os << ParentType::_name; 
     457            os << PROPERTY((ParentType::_name).c_str()); 
    439458            os.writeWrappedString( (object.*_getter)() ); 
    440459            os << std::endl; 
     
    443462    } 
    444463     
    445 protected: 
     464public: 
    446465    Getter _getter; 
    447466    Setter _setter; 
     
    499518        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    500519        { 
    501             os << ParentType::_name << hasObject; 
     520            os << PROPERTY((ParentType::_name).c_str()) << hasObject; 
    502521            if ( hasObject ) 
    503522            { 
     
    511530    } 
    512531     
    513 protected: 
     532public: 
    514533    Getter _getter; 
    515534    Setter _setter; 
     
    567586        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    568587        { 
    569             os << ParentType::_name << hasObject; 
     588            os << PROPERTY((ParentType::_name).c_str()) << hasObject; 
    570589            if ( hasObject ) 
    571590            { 
     
    579598    } 
    580599     
    581 protected: 
     600public: 
    582601    Getter _getter; 
    583602    Setter _setter; 
     
    632651        else if ( ParentType::_defaultValue!=(object.*_getter)() ) 
    633652        { 
    634             os << ParentType::_name << getString((object.*_getter)()) << std::endl; 
    635         } 
    636         return true; 
    637     } 
    638      
    639 protected: 
     653            os << PROPERTY((ParentType::_name).c_str()) << getString((object.*_getter)()) << std::endl; 
     654        } 
     655        return true; 
     656    } 
     657     
     658public: 
    640659    Getter _getter; 
    641660    Setter _setter; 
     661     
     662protected: 
    642663    IntLookup _lookup; 
    643664}; 
     
    707728        else if ( size>0 ) 
    708729        { 
    709             os << ParentType::_name << size << BEGIN_BRACKET << std::endl; 
     730            os << PROPERTY((ParentType::_name).c_str()) << size << BEGIN_BRACKET << std::endl; 
    710731            for ( ConstIterator itr=list.begin(); 
    711732                  itr!=list.end(); ++itr ) 
     
    718739    } 
    719740     
    720 protected: 
     741public: 
    721742    Getter _getter; 
    722743    Setter _setter; 
     
    846867 
    847868#define END_ENUM_SERIALIZER() \ 
    848     wrapper->addSerializer(serializer.get()); } 
     869    wrapper->addSerializer(serializer); } 
    849870 
    850871