diff --git a/applications/osgdem/osgdem.cpp b/applications/osgdem/osgdem.cpp index 1a3e3df08..02c21890c 100644 --- a/applications/osgdem/osgdem.cpp +++ b/applications/osgdem/osgdem.cpp @@ -264,8 +264,7 @@ int main( int argc, char **argv ) std::string archiveName; while (arguments.read("-a",archiveName)) { dataset->setArchiveName(archiveName); } - dataset->setDestinationTileBaseName("output"); - dataset->setDestinationTileExtension(".ive"); + dataset->setDestinationName("output.ive"); unsigned int numLevels = 10; @@ -573,14 +572,7 @@ int main( int argc, char **argv ) else if (arguments.read(pos, "-o",filename)) { std::cout<<"-o "<setDestinationTileBaseName(base); - dataset->setDestinationTileExtension(extension); + dataset->setDestinationName(filename); if (!currentCS.empty()) dataset->setDestinationCoordinateSystem(currentCS); diff --git a/include/osgTerrain/DataSet b/include/osgTerrain/DataSet index 07207c2fe..f0da839fb 100644 --- a/include/osgTerrain/DataSet +++ b/include/osgTerrain/DataSet @@ -974,9 +974,12 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced /** Get the Archive if one is to being used.*/ osgDB::Archive* getArchive() { return _archive.get(); } - /** Set the DestinationTileBaseName and DestinationTileExtension from the passed in filename.*/ + /** Set the Directory, DestinationTileBaseName and DestinationTileExtension from the passed in filename.*/ void setDestinationName(const std::string& filename); + void setDirectory(const std::string& directory); + const std::string& getDirectory() const { return _directory; } + void setDestinationTileBaseName(const std::string& basename) { _tileBasename = basename; } const std::string& getDestinationTileBaseName() const { return _tileBasename; } @@ -1126,6 +1129,7 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced osg::BoundingBox _extents; std::string _archiveName; osg::ref_ptr _archive; + std::string _directory; std::string _tileBasename; std::string _tileExtension; std::string _imageExtension; diff --git a/src/osgTerrain/DataSet.cpp b/src/osgTerrain/DataSet.cpp index 5684723ce..2f903313a 100644 --- a/src/osgTerrain/DataSet.cpp +++ b/src/osgTerrain/DataSet.cpp @@ -3742,14 +3742,41 @@ void DataSet::init() void DataSet::setDestinationName(const std::string& filename) { std::string path = osgDB::getFilePath(filename); - std::string base = path.empty()?osgDB::getStrippedName(filename): - path +'/'+ osgDB::getStrippedName(filename); + std::string base = osgDB::getStrippedName(filename); std::string extension = '.'+osgDB::getLowerCaseFileExtension(filename); + osg::notify(osg::NOTICE)<<"setDestinationName("<_writeImageFile(*image,image->getFileName().c_str()); + _dataSet->_writeImageFile(*image,(_dataSet->getDirectory()+image->getFileName()).c_str()); } } } @@ -4435,7 +4462,7 @@ void DataSet::_writeRow(Row& row) if (!parent->getSubTilesGenerated() && parent->areSubTilesComplete()) { osg::ref_ptr node = parent->createSubTileScene(); - std::string filename = parent->getSubTileName(); + std::string filename = _directory+parent->getSubTileName(); if (node.valid()) { my_notify(osg::NOTICE)<<" writeSubTile filename="<addDescription(_comment); } - //std::string filename = cd->_name + _tileExtension; - std::string filename = _tileBasename+_tileExtension; + std::string filename = _directory+_tileBasename+_tileExtension; if (node.valid()) { @@ -4566,7 +4592,7 @@ void DataSet::_buildDestination(bool writeToDisk) if (_destinationGraph.valid()) { - std::string filename = _tileBasename+_tileExtension; + std::string filename = _directory+_tileBasename+_tileExtension; if (_archive.valid()) {