Changeset 8581

Show
Ignore:
Timestamp:
07/14/08 22:22:38
Author:
robert
Message:

Added --plugins and --formats query support into osgconv to help with querying the
available plugins and the file formats/protocols they support

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • OpenSceneGraph/trunk/applications/osgconv/PluginQuery.cpp

    r8579 r8581  
    4040    return pluginFiles; 
    4141} 
     42 
     43 
     44bool osgDB::queryPlugin(const std::string& fileName, ReaderWriterInfoList& infoList) 
     45{ 
     46    if (osgDB::Registry::instance()->loadLibrary(fileName)) 
     47    { 
     48        const Registry::ReaderWriterList& rwList = osgDB::Registry::instance()->getReaderWriterList(); 
     49        for(Registry::ReaderWriterList::const_iterator itr = rwList.begin(); 
     50            itr != rwList.end(); 
     51            ++itr) 
     52        { 
     53            const ReaderWriter* rw = itr->get(); 
     54            osg::ref_ptr<ReaderWriterInfo> rwi = new ReaderWriterInfo; 
     55            rwi->plugin = fileName; 
     56            rwi->description = rw->className(); 
     57            rwi->protocols = rw->supportedProtocols(); 
     58            rwi->extensions = rw->supportedExtensions(); 
     59            rwi->options = rw->supportedOptions(); 
     60             
     61            infoList.push_back(rwi.get()); 
     62        } 
     63 
     64        osgDB::Registry::instance()->closeLibrary(fileName); 
     65        return true; 
     66    } 
     67    else 
     68    { 
     69        return false; 
     70    } 
     71} 
  • OpenSceneGraph/trunk/applications/osgconv/PluginQuery.h

    r8579 r8581  
    2323FileNameList listAllAvailablePlugins(); 
    2424 
     25class ReaderWriterInfo : public osg::Referenced 
     26{ 
     27    public: 
     28     
     29        std::string                         plugin; 
     30        std::string                         description; 
     31        ReaderWriter::FormatDescriptionMap  protocols; 
     32        ReaderWriter::FormatDescriptionMap  extensions; 
     33        ReaderWriter::FormatDescriptionMap  options; 
     34}; 
     35 
     36typedef std::list< osg::ref_ptr<ReaderWriterInfo> > ReaderWriterInfoList; 
     37 
     38bool queryPlugin(const std::string& fileName, ReaderWriterInfoList& infoList); 
    2539 
    2640} 
  • OpenSceneGraph/trunk/applications/osgconv/osgconv.cpp

    r8579 r8581  
    508508    arguments.getApplicationUsage()->addCommandLineOption("-h or --help","Display command line parameters"); 
    509509    arguments.getApplicationUsage()->addCommandLineOption("--help-env","Display environmental variables available"); 
    510     arguments.getApplicationUsage()->addCommandLineOption("--fmts","List supported file formats"); 
     510    arguments.getApplicationUsage()->addCommandLineOption("--formats","List supported file formats"); 
     511    arguments.getApplicationUsage()->addCommandLineOption("--plugins","List database olugins"); 
    511512 
    512513 
     
    525526    } 
    526527     
    527     if (arguments.read("--fmts")) 
     528    if (arguments.read("--plugins")) 
    528529    { 
    529530        osgDB::FileNameList plugins = osgDB::listAllAvailablePlugins(); 
     
    534535            std::cout<<"Plugin "<<*itr<<std::endl; 
    535536        } 
    536         return 1; 
     537        return 0; 
     538    }     
     539     
     540    if (arguments.read("--formats")) 
     541    { 
     542        osgDB::FileNameList plugins = osgDB::listAllAvailablePlugins(); 
     543        for(osgDB::FileNameList::iterator itr = plugins.begin(); 
     544            itr != plugins.end(); 
     545            ++itr) 
     546        { 
     547            std::cout<<"Plugin "<<*itr<<std::endl; 
     548            std::cout<<"{"<<std::endl; 
     549            osgDB::ReaderWriterInfoList infoList; 
     550            if (osgDB::queryPlugin(*itr, infoList)) 
     551            { 
     552                for(osgDB::ReaderWriterInfoList::iterator rwi_itr = infoList.begin(); 
     553                    rwi_itr != infoList.end(); 
     554                    ++rwi_itr) 
     555                { 
     556                    osgDB::ReaderWriterInfo& info = *(*rwi_itr); 
     557                    std::cout<<"    ReaderWriter : "<<info.description<<std::endl; 
     558                    std::cout<<"    {"<<std::endl; 
     559 
     560                    for(osgDB::ReaderWriter::FormatDescriptionMap::iterator fdm_itr = info.protocols.begin(); 
     561                        fdm_itr != info.protocols.end(); 
     562                        ++fdm_itr) 
     563                    { 
     564                        std::cout<<"        protocol : "<<fdm_itr->first<<"\t"<<fdm_itr->second<<std::endl; 
     565                    } 
     566 
     567                    for(osgDB::ReaderWriter::FormatDescriptionMap::iterator fdm_itr = info.extensions.begin(); 
     568                        fdm_itr != info.extensions.end(); 
     569                        ++fdm_itr) 
     570                    { 
     571                        std::cout<<"        extensions : ."<<fdm_itr->first<<"\t"<<fdm_itr->second<<std::endl; 
     572                    } 
     573                     
     574                    for(osgDB::ReaderWriter::FormatDescriptionMap::iterator fdm_itr = info.options.begin(); 
     575                        fdm_itr != info.options.end(); 
     576                        ++fdm_itr) 
     577                    { 
     578                        std::cout<<"        options : "<<fdm_itr->first<<"\t"<<fdm_itr->second<<std::endl; 
     579                    } 
     580                    std::cout<<"    }"<<std::endl; 
     581                } 
     582            } 
     583            std::cout<<"}"<<std::endl<<std::endl; 
     584        } 
     585        return 0; 
    537586    }     
    538587