vizkit3d
Classes | Namespaces | Macros
Vizkit3DPlugin.hpp File Reference
#include <QtCore>
#include <QtGui>
#include <osg/NodeCallback>
#include <osg/Group>
#include <osg/PositionAttitudeTransform>
#include <boost/thread/mutex.hpp>

Go to the source code of this file.

Classes

class  vizkit3d::VizPluginRubyAdapterBase
 
class  vizkit3d::VizPluginRubyAdapterCollection
 
class  vizkit3d::VizPluginBase
 
class  vizkit3d::Vizkit3DPlugin< T >
 
class  vizkit3d::VizPluginAddType< T >
 
class  vizkit3d::Vizkit3DPlugin< T >
 
class  vizkit3d::VizkitPluginFactory
 
class  vizkit3d::VizPluginAdapter< T >
 

Namespaces

 vizkit3d
 

Macros

#define VizPluginRubyAdapterCommon(pluginName, dataType, methodName, rubyMethodName)
 
#define VizPluginRubyAdapter(pluginName, dataType, typeName)   VizPluginRubyAdapterCommon(pluginName, dataType, updateData, update##typeName)
 
#define VizPluginRubyMethod(pluginName, dataType, methodName)   VizPluginRubyAdapterCommon(pluginName, dataType, methodName, methodName)
 
#define VizPluginRubyConfig(pluginName, dataType, methodName)   VizPluginRubyAdapterCommon(pluginName, dataType, methodName, methodName)
 
#define VizkitQtPlugin(pluginName)
 

Macro Definition Documentation

#define VizkitQtPlugin (   pluginName)
Value:
class QtPlugin##pluginName : public vizkit3d::VizkitPluginFactory {\
public:\
virtual QStringList* getAvailablePlugins() const\
{\
QStringList* result = new QStringList; \
result->push_back(#pluginName); \
return result;\
} \
virtual QObject* createPlugin(QString const& name)\
{\
if (name == #pluginName) \
return new pluginName;\
else return 0;\
};\
};\
Q_EXPORT_PLUGIN2(QtPlugin##pluginName, QtPlugin##pluginName)
virtual QStringList * getAvailablePlugins() const =0
virtual QObject * createPlugin(QString const &name)=0
Definition: Vizkit3DPlugin.hpp:373

Macro that exports a Vizkit3D plugin so that it can be dynamically loaded by vizkit3d

Example:

class WaypointVisualization : public vizkit3d::Vizkit3DPlugin {..}; VizkitQtPlugin(WaypointVisualization)

This works if your shared library exports only one plugin. To export multiple plugins, you need to create a subclass of vizkit3d::VizkitPluginFactory which handles the plugins, and export it with

Q_EXPORT_PLUGIN2(FactoryClass, FactoryClass)

#define VizPluginRubyAdapter (   pluginName,
  dataType,
  typeName 
)    VizPluginRubyAdapterCommon(pluginName, dataType, updateData, update##typeName)
#define VizPluginRubyAdapterCommon (   pluginName,
  dataType,
  methodName,
  rubyMethodName 
)
Value:
class VizPluginRubyAdapter##pluginName##rubyMethodName : public VizPluginRubyAdapterBase {\
public:\
VizPluginRubyAdapter##pluginName##rubyMethodName(pluginName* plugin)\
{\
vizPlugin = plugin;\
};\
void update(QVariant& data, bool pass_ownership)\
{\
void* ptr = data.value<void*>();\
dataType* pluginData = reinterpret_cast<dataType*>(ptr);\
vizPlugin->methodName(*pluginData);\
if (pass_ownership) \
delete pluginData; \
}\
public slots:\
QString getDataType() \
{\
return #dataType;\
}\
QString getRubyMethod() \
{\
return #rubyMethodName; \
}\
private:\
pluginName* vizPlugin;\
};\
adapterCollection.addAdapter(new VizPluginRubyAdapter##pluginName##rubyMethodName(this));
#define VizPluginRubyAdapter(pluginName, dataType, typeName)
Definition: Vizkit3DPlugin.hpp:429

Macro that adds a type-specific ruby adapter, provided by the plugin. Use this if you want to provide ruby adapters:

Pluginname::Pluginname() { //there will be a updateWaypoint method in ruby VizPluginRubyAdapter(Pluginname, base::Waypoint, Waypoint)

//if you want to call any other method of your plugin in ruby VizPluginRubyConfig(Pluginname, bool, enableSomething) }

#define VizPluginRubyConfig (   pluginName,
  dataType,
  methodName 
)    VizPluginRubyAdapterCommon(pluginName, dataType, methodName, methodName)
#define VizPluginRubyMethod (   pluginName,
  dataType,
  methodName 
)    VizPluginRubyAdapterCommon(pluginName, dataType, methodName, methodName)