Changeset 3247

Show
Ignore:
Timestamp:
08/06/04 10:56:18 (10 years ago)
Author:
robert
Message:

Added support for the "precision <value>" options string

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgPlugins/osg/ReaderWriterOSG.cpp

    r2501 r3247  
     1#include <sstream> 
     2 
    13#include <osg/Image> 
    24#include <osg/Group> 
     
    8082        } 
    8183 
    82         virtual WriteResult writeObject(const Object& obj,const std::string& fileName, const osgDB::ReaderWriter::Options*) 
     84        void setPrecision(Output& fout, const osgDB::ReaderWriter::Options* options) 
    8385        { 
    84             Output fout; 
    85             fout.open(fileName.c_str()); 
     86            if (options) 
     87            { 
     88                std::istringstream iss(options->getOptionString()); 
     89                std::string opt; 
     90                while (iss >> opt) { 
     91                    if(opt=="PRECISION" || opt=="precision") { 
     92                        int prec; 
     93                        iss >> prec; 
     94                        fout.precision(prec); 
     95                    } 
     96                } 
     97            } 
     98        }             
     99 
     100        virtual WriteResult writeObject(const Object& obj,const std::string& fileName, const osgDB::ReaderWriter::Options* options) 
     101        { 
     102            Output fout(fileName.c_str()); 
    86103            if (fout) 
    87104            { 
     105                setPrecision(fout,options); 
     106 
    88107                fout.writeObject(obj); 
    89108                fout.close(); 
     
    93112        } 
    94113 
    95         virtual WriteResult writeNode(const Node& node,const std::string& fileName, const osgDB::ReaderWriter::Options*) 
     114        virtual WriteResult writeNode(const Node& node,const std::string& fileName, const osgDB::ReaderWriter::Options* options) 
    96115        { 
    97116            std::string ext = getFileExtension(fileName); 
    98117            if (!acceptsExtension(ext)) return WriteResult::FILE_NOT_HANDLED; 
    99118 
     119 
    100120            Output fout(fileName.c_str()); 
    101121            if (fout) 
    102122            { 
     123                setPrecision(fout,options); 
     124 
    103125                fout.writeObject(node); 
    104126                fout.close();