Changeset 935

Show
Ignore:
Timestamp:
09/06/08 11:21:57
Author:
robert
Message:

Added localisation of image files to the same directories of the nodes that reference them.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/vpb/DataSet

    r934 r935  
    176176 
    177177        // helper functions for handling optional archive 
    178         void _writeNodeFile(const osg::Node& node,const std::string& filename); 
    179         void _writeImageFile(const osg::Image& image,const std::string& filename); 
    180         void _writeNodeFileAndImages(const osg::Node& node,const std::string& filename); 
     178        void _writeNodeFile(osg::Node& node,const std::string& filename); 
     179        void _writeImageFile(osg::Image& image,const std::string& filename); 
     180        void _writeNodeFileAndImages(osg::Node& node,const std::string& filename); 
    181181        
    182182        void setState(osg::State* state) { _state = state; } 
  • trunk/src/vpb/DataSet.cpp

    r934 r935  
    14491449} 
    14501450 
    1451 void DataSet::_writeNodeFile(const osg::Node& node,const std::string& filename) 
     1451void DataSet::_writeNodeFile(osg::Node& node,const std::string& filename) 
    14521452{ 
    14531453    if (getDisableWrites()) return; 
     
    14751475} 
    14761476 
    1477 void DataSet::_writeImageFile(const osg::Image& image,const std::string& filename) 
     1477void DataSet::_writeImageFile(osg::Image& image,const std::string& filename) 
    14781478{ 
    14791479    if (getDisableWrites()) return; 
     1480 
     1481    //image.setFileName(filename.c_str()); 
    14801482 
    14811483    if (_archive.valid()) _archive->writeImage(image,filename); 
     
    15031505public: 
    15041506 
    1505     WriteImageFilesVisitor(vpb::DataSet* dataSet): 
     1507    WriteImageFilesVisitor(vpb::DataSet* dataSet, const std::string& directory): 
    15061508        osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN), 
    1507         _dataSet(dataSet) {} 
    1508  
    1509     vpb::DataSet* _dataSet; 
     1509        _dataSet(dataSet), 
     1510        _directory(directory) 
     1511    { 
     1512        if (!_directory.empty()) 
     1513        { 
     1514            char lastCharacter = _directory[_directory.size()-1]; 
     1515            if (lastCharacter != '/' && lastCharacter != '\\') 
     1516            { 
     1517                _directory.push_back('/'); 
     1518            } 
     1519        } 
     1520    } 
     1521 
     1522    vpb::DataSet*   _dataSet; 
     1523    std::string     _directory; 
    15101524     
    15111525    virtual void apply(osg::Node& node) 
     
    15401554            if (image) 
    15411555            { 
    1542                 osg::notify(osg::NOTICE)<<"Writing out image layer "<<image->getFileName()<<std::endl; 
    1543                 _dataSet->_writeImageFile(*image,(_dataSet->getDirectory()+image->getFileName()).c_str()); 
     1556                osg::notify(osg::NOTICE)<<"Writing out image layer "<<image->getFileName()<<" _directory="<<_directory<<std::endl; 
     1557                _dataSet->_writeImageFile(*image,_directory+image->getFileName()); 
    15441558            } 
    15451559            return;    
     
    16061620            if (image) 
    16071621            { 
    1608                 _dataSet->_writeImageFile(*image,(_dataSet->getDirectory()+image->getFileName()).c_str()); 
     1622                _dataSet->_writeImageFile(*image,_directory+image->getFileName()); 
    16091623            } 
    16101624        } 
     
    16121626}; 
    16131627 
    1614 void DataSet::_writeNodeFileAndImages(const osg::Node& node,const std::string& filename) 
     1628void DataSet::_writeNodeFileAndImages(osg::Node& node,const std::string& filename) 
    16151629{ 
    16161630    if (getDisableWrites()) return; 
    16171631 
     1632    log(osg::NOTICE,"_writeNodeFile(%s)",filename.c_str()); 
     1633 
    16181634    if (getDestinationTileExtension()==".osg") 
    16191635    { 
    1620         WriteImageFilesVisitor wifv(this); 
     1636        WriteImageFilesVisitor wifv(this, osgDB::getFilePath(filename)); 
    16211637        const_cast<osg::Node&>(node).accept(wifv); 
    16221638    } 
    16231639 
    16241640    _writeNodeFile(node,filename); 
     1641 
    16251642} 
    16261643