Changes between Initial Version and Version 1 of SerializationNotes


Ignore:
Timestamp:
Feb 22, 2010, 9:41:07 PM (12 years ago)
Author:
Torben Dannhauer
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SerializationNotes

    v1 v1  
     1[[TracGuideToc]]
     2
     3--------- Funktion des Serializers beim lesen der Wrapper-Definition
     4
     5Funktion des ADD_LIST_SERIALIZER(NAME, TYPE):
     6
     7NAME: Name der public Funktion, unter der der Vector gelesen und geschrieben werden kann
     8TYPE: Typ der Liste. Um es übersichtlich zu halten, muss ein public Typedef durchgeführt werden. dieser kann gemäss c++ syntax mit node::typedef genutzt werden.
     9
     10Bsp:
     11ADD_LIST_SERIALIZER( ClipPlaneList, osg::ClipNode::ClipPlaneList );
     12
     13Name der Get/Set Funktionen:
     14- getClipPlaneList();
     15- setClipPlaneList(..);
     16
     17Typdefinition des vectors:
     18- typedef std::vector<ref_ptr<ClipPlane> > ClipPlaneList
     19
     20zu finden ist dieser Typ gemäß c++ Syntax mit namespace::classname::type (daher muss der typedef public sein, sonst ist er ja von aussen nicht sichtbar)
     21
     22->zu serialisierendes Element wäre dann im Beispiel: osg::Clipnode::ClipPlaneList
     23
     24Wichtig bei enums:
     25 enum <typename> {VA1, VAL2, ...}
     26
     27variable muss dann anders heißen als der type.
     28Der wrapper NAME muss identisch lauten wie der enum Typ.
     29
     30
     31--------- Zugriff auf die serialisierten Daten
     32
     33osgDB::ReaderWriter* rw = osgDB::Registry::instance()->getReaderWriterForExtension("osgb");
     34if ( rw )
     35{
     36        osgDB::ReaderWriter::WriteResult wr = rw->writeNode( *scene, ostream );
     37
     38        osgDB::ReaderWriter::ReadResult rr = rw->readNode( istream );
     39        return rr.takeNode();   // Node mit takeNode entgegennehmen.
     40}
     41
     42
     43--------- De-/Komprimieren des Datenstroms
     44
     45Um die Nodes zu komprimieren, muss osgDB::ReaderWriter->readNode(..) und osgDB::ReaderWriter->writeNode(..)
     46die entsprechende Option mitgegeben werden:
     47"compressor=zlib"
     48
     49Bsp:
     50osgDB::ReaderWriter::WriteResult wr = rw->writeNode( *scene, ostream, new osgDB::Options("WriteImageHint=IncludeData Compressor=zlib") );
     51osgDB::ReaderWriter::ReadResult rr = rw->readNode( istream, new osgDB::Options("WriteImageHint=IncludeData Compressor=zlib") );
     52
     53