/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2003 Robert Osfield * * This application is open source and may be redistributed and/or modified * freely and without restriction, both in commericial and non commericial applications, * as long as this copyright notice is maintained. * * This application is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include #include #include int main( int argc, char **argv ) { // use an ArgumentParser object to manage the program arguments. osg::ArgumentParser arguments(&argc,argv); // set up the usage document, in case we need to print out how to use this program. arguments.getApplicationUsage()->setApplicationName(arguments.getApplicationName()); arguments.getApplicationUsage()->setDescription(arguments.getApplicationName()+" is the standard OpenSceneGraph example which loads and visualises 3d models."); arguments.getApplicationUsage()->setCommandLineUsage(arguments.getApplicationName()+" [options] filename ..."); // create DataSet. osgDB::Archive::Status status; // if user request help write it out to cout. if (arguments.read("-h") || arguments.read("--help")) { arguments.getApplicationUsage()->write(std::cout); return 1; } std::string archiveFilename; while (arguments.read("-a",archiveFilename) || arguments.read("--archive",archiveFilename)) { } bool insert = false; while (arguments.read("-i") || arguments.read("--insert")) { insert = true; } bool extract = false; while (arguments.read("-e") || arguments.read("--extract")) { extract = true; } bool list = false; while (arguments.read("-l") || arguments.read("--list")) { list = true; } typedef std::vector FileNameList; FileNameList files; for(int pos=1;pos obj = osgDB::readObjectFile(*itr); if (obj.valid()) { archive.writeObject(*obj, *itr); } } } else { archive.open(archiveFilename,osgDB::Archive::READ); if (extract) { for (FileNameList::iterator itr=files.begin(); itr!=files.end(); ++itr) { osgDB::ReaderWriter::ReadResult result = archive.readObject(*itr); osg::ref_ptr obj = result.getObject(); if (obj.valid()) { if (obj.valid()) osgDB::writeObjectFile(*obj, *itr); } } } } if (list) { std::cout<<"Cannot list at present."<