Moved PluginQuery from osgconv into osgDB
This commit is contained in:
parent
5cdb5c055c
commit
0d1656055c
@ -3,12 +3,10 @@
|
||||
|
||||
SET(TARGET_SRC
|
||||
OrientationConverter.cpp
|
||||
PluginQuery.cpp
|
||||
osgconv.cpp
|
||||
)
|
||||
SET(TARGET_H
|
||||
OrientationConverter.h
|
||||
PluginQuery.h
|
||||
)
|
||||
|
||||
#### end var setup ###
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <osgDB/WriteFile>
|
||||
#include <osgDB/FileNameUtils>
|
||||
#include <osgDB/ReaderWriter>
|
||||
#include <osgDB/PluginQuery>
|
||||
|
||||
#include <osgUtil/Optimizer>
|
||||
#include <osgUtil/Simplifier>
|
||||
@ -28,7 +29,6 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "OrientationConverter.h"
|
||||
#include "PluginQuery.h"
|
||||
|
||||
typedef std::vector<std::string> FileNameList;
|
||||
|
||||
|
@ -12,6 +12,8 @@
|
||||
#ifndef PLUGINQUERY_H
|
||||
#define PLUGINQUERY_H
|
||||
|
||||
#include <osgDB/Export>
|
||||
|
||||
#include <list>
|
||||
|
||||
namespace osgDB
|
||||
@ -19,8 +21,7 @@ namespace osgDB
|
||||
|
||||
typedef std::list<std::string> FileNameList;
|
||||
|
||||
|
||||
FileNameList listAllAvailablePlugins();
|
||||
FileNameList OSGDB_EXPORT listAllAvailablePlugins();
|
||||
|
||||
class ReaderWriterInfo : public osg::Referenced
|
||||
{
|
||||
@ -35,9 +36,9 @@ class ReaderWriterInfo : public osg::Referenced
|
||||
|
||||
typedef std::list< osg::ref_ptr<ReaderWriterInfo> > ReaderWriterInfoList;
|
||||
|
||||
bool queryPlugin(const std::string& fileName, ReaderWriterInfoList& infoList);
|
||||
bool OSGDB_EXPORT queryPlugin(const std::string& fileName, ReaderWriterInfoList& infoList);
|
||||
|
||||
bool outputPluginDetails(std::ostream& out, const std::string& fileName);
|
||||
bool OSGDB_EXPORT outputPluginDetails(std::ostream& out, const std::string& fileName);
|
||||
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ SET(LIB_PUBLIC_HEADERS
|
||||
${HEADER_PATH}/Input
|
||||
${HEADER_PATH}/Output
|
||||
${HEADER_PATH}/ParameterOutput
|
||||
${HEADER_PATH}/PluginQuery
|
||||
${HEADER_PATH}/ReaderWriter
|
||||
${HEADER_PATH}/ReadFile
|
||||
${HEADER_PATH}/Registry
|
||||
@ -50,8 +51,9 @@ ADD_LIBRARY(${LIB_NAME}
|
||||
ImagePager.cpp
|
||||
Input.cpp
|
||||
Output.cpp
|
||||
ReadFile.cpp
|
||||
PluginQuery.cpp
|
||||
ReaderWriter.cpp
|
||||
ReadFile.cpp
|
||||
Registry.cpp
|
||||
SharedStateManager.cpp
|
||||
Version.cpp
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include <osgDB/FileUtils>
|
||||
#include <osg/Version>
|
||||
|
||||
#include "PluginQuery.h"
|
||||
#include <osgDB/PluginQuery>
|
||||
|
||||
using namespace osgDB;
|
||||
|
||||
@ -43,6 +43,18 @@ FileNameList osgDB::listAllAvailablePlugins()
|
||||
|
||||
bool osgDB::queryPlugin(const std::string& fileName, ReaderWriterInfoList& infoList)
|
||||
{
|
||||
typedef std::set<const ReaderWriter*> ReaderWriterSet;
|
||||
ReaderWriterSet previouslyLoadedReaderWriters;
|
||||
|
||||
const Registry::ReaderWriterList& rwList = osgDB::Registry::instance()->getReaderWriterList();
|
||||
for(Registry::ReaderWriterList::const_iterator itr = rwList.begin();
|
||||
itr != rwList.end();
|
||||
++itr)
|
||||
{
|
||||
const ReaderWriter* rw = itr->get();
|
||||
previouslyLoadedReaderWriters.insert(rw);
|
||||
}
|
||||
|
||||
if (osgDB::Registry::instance()->loadLibrary(fileName))
|
||||
{
|
||||
const Registry::ReaderWriterList& rwList = osgDB::Registry::instance()->getReaderWriterList();
|
||||
@ -51,6 +63,9 @@ bool osgDB::queryPlugin(const std::string& fileName, ReaderWriterInfoList& infoL
|
||||
++itr)
|
||||
{
|
||||
const ReaderWriter* rw = itr->get();
|
||||
|
||||
if (previouslyLoadedReaderWriters.count(rw)==0)
|
||||
{
|
||||
osg::ref_ptr<ReaderWriterInfo> rwi = new ReaderWriterInfo;
|
||||
rwi->plugin = fileName;
|
||||
rwi->description = rw->className();
|
||||
@ -60,6 +75,7 @@ bool osgDB::queryPlugin(const std::string& fileName, ReaderWriterInfoList& infoL
|
||||
|
||||
infoList.push_back(rwi.get());
|
||||
}
|
||||
}
|
||||
|
||||
osgDB::Registry::instance()->closeLibrary(fileName);
|
||||
return true;
|
Loading…
Reference in New Issue
Block a user