1 #ifndef __VIZKIT3D_VIZPLUGIN_HPP__
2 #define __VIZKIT3D_VIZPLUGIN_HPP__
7 #include <osg/NodeCallback>
9 #include <osg/PositionAttitudeTransform>
11 #include <boost/thread/mutex.hpp>
24 virtual void update(QVariant&,
bool) = 0;
50 std::vector<VizPluginRubyAdapterBase*>::iterator it = std::find(
adapterList.begin(),
adapterList.end(), adapter);
66 QStringList* adapterStringList =
new QStringList();
67 for(std::vector<VizPluginRubyAdapterBase*>::iterator it =
adapterList.begin(); it !=
adapterList.end(); it++)
69 adapterStringList->push_back((*it)->getRubyMethod());
71 return adapterStringList;
82 for(std::vector<VizPluginRubyAdapterBase*>::iterator it =
adapterList.begin(); it !=
adapterList.end(); it++)
84 if ((*it)->getRubyMethod() == rubyMethodName)
159 virtual const QString getPluginName() const;
165 virtual
void click(
float x,
float y);
192 void setPose(
const QVector3D &position,
const QQuaternion &orientation);
242 void clicked(
float x,
float y);
247 void picked(
float x,
float y,
float z);
281 osg::ref_ptr<osg::NodeCallback> nodeCallback;
282 void updateCallback(osg::Node* node);
284 osg::ref_ptr<osg::Node> mainNode;
285 osg::ref_ptr<osg::Group> rootNode;
286 osg::ref_ptr<osg::PositionAttitudeTransform> vizNode;
287 osg::ref_ptr<osg::Group> oldNodes;
293 QQuaternion orientation;
299 unsigned int max_old_data;
300 QString current_frame;
322 template <
typename T>
344 class Vizkit3DPlugin :
public VizPluginBase,
345 public VizPluginAddType< T >
356 template<
typename Type>
358 boost::mutex::scoped_lock lockit(this->
updateMutex);
365 throw std::runtime_error(
"Wrong type given to visualizer");
400 #define VizPluginRubyAdapterCommon(pluginName, dataType, methodName, rubyMethodName)\
401 class VizPluginRubyAdapter##pluginName##rubyMethodName : public VizPluginRubyAdapterBase {\
403 VizPluginRubyAdapter##pluginName##rubyMethodName(pluginName* plugin)\
407 void update(QVariant& data, bool pass_ownership)\
409 void* ptr = data.value<void*>();\
410 dataType* pluginData = reinterpret_cast<dataType*>(ptr);\
411 vizPlugin->methodName(*pluginData);\
412 if (pass_ownership) \
416 QString getDataType() \
420 QString getRubyMethod() \
422 return #rubyMethodName; \
425 pluginName* vizPlugin;\
427 adapterCollection.addAdapter(new VizPluginRubyAdapter##pluginName##rubyMethodName(this));
429 #define VizPluginRubyAdapter(pluginName, dataType, typeName) \
430 VizPluginRubyAdapterCommon(pluginName, dataType, updateData, update##typeName)
431 #define VizPluginRubyMethod(pluginName, dataType, methodName) \
432 VizPluginRubyAdapterCommon(pluginName, dataType, methodName, methodName)
433 #define VizPluginRubyConfig(pluginName, dataType, methodName) \
434 VizPluginRubyAdapterCommon(pluginName, dataType, methodName, methodName)
455 #define VizkitQtPlugin(pluginName)\
456 class QtPlugin##pluginName : public vizkit3d::VizkitPluginFactory {\
458 virtual QStringList* getAvailablePlugins() const\
460 QStringList* result = new QStringList; \
461 result->push_back(#pluginName); \
464 virtual QObject* createPlugin(QString const& name)\
466 if (name == #pluginName) \
467 return new pluginName;\
471 Q_EXPORT_PLUGIN2(QtPlugin##pluginName, QtPlugin##pluginName)
480 virtual void operatorIntern( osg::Node* node, osg::NodeVisitor* nv ) = 0;
void clicked(float x, float y)
Vizkit3DWidget * getWidget() const
Definition: Vizkit3DPlugin.cpp:234
void setScale(double scale)
Definition: Vizkit3DPlugin.cpp:54
VizPluginRubyAdapterCollection adapterCollection
Definition: Vizkit3DPlugin.hpp:277
virtual void clearVisualization()
Definition: Vizkit3DPlugin.cpp:139
virtual const QString getPluginName() const
Definition: Vizkit3DPlugin.cpp:108
std::vector< QDockWidget * > getDockWidgets()
Definition: Vizkit3DPlugin.cpp:128
Definition: PickHandler.hpp:29
int getMaxOldData() const
Definition: Vizkit3DPlugin.hpp:189
void setPose(const QVector3D &position, const QQuaternion &orientation)
Definition: Vizkit3DPlugin.cpp:100
virtual void operatorIntern(osg::Node *node, osg::NodeVisitor *nv)=0
virtual QStringList * getAvailablePlugins() const =0
void deleteOldData()
Definition: Vizkit3DPlugin.cpp:229
virtual void setPluginName(const QString &name)
Definition: Vizkit3DPlugin.cpp:116
double getScale() const
Definition: Vizkit3DPlugin.cpp:59
Definition: Vizkit3DPlugin.hpp:19
bool enabled
Definition: Vizkit3DPlugin.hpp:116
void addAdapter(VizPluginRubyAdapterBase *adapter)
Definition: Vizkit3DPlugin.hpp:40
void setKeepOldData(bool value)
Definition: Vizkit3DPlugin.cpp:208
VizkitPluginFactory(QObject *parent=0)
Definition: Vizkit3DPlugin.hpp:378
boost::mutex updateMutex
Definition: Vizkit3DPlugin.hpp:273
virtual bool isDirty() const
Definition: Vizkit3DPlugin.cpp:176
void setVisualizationFrame(const QString &frame)
Definition: Vizkit3DPlugin.cpp:270
virtual ~Vizkit3DPlugin()
Definition: Vizkit3DPlugin.hpp:351
void setVisualizationFrameFromList(const QStringList &frames)
Definition: Vizkit3DPlugin.cpp:260
virtual osg::ref_ptr< osg::Node > createMainNode()
Definition: Vizkit3DPlugin.cpp:122
QStringList frame
Definition: Vizkit3DPlugin.hpp:119
void removeAdapter(VizPluginRubyAdapterBase *adapter)
Definition: Vizkit3DPlugin.hpp:48
double scale
Definition: Vizkit3DPlugin.hpp:120
virtual QObject * createPlugin(QString const &name)=0
virtual bool isPluginEnabled()
Definition: Vizkit3DPlugin.cpp:191
void pluginActivityChanged(bool)
osg::ref_ptr< osg::Node > createMainNode()
Definition: Vizkit3DPlugin.hpp:487
virtual void updateMainNode(osg::Node *node)=0
void updateData(const Type &data)
Definition: Vizkit3DPlugin.hpp:357
const std::vector< VizPluginRubyAdapterBase * > & getAdapterList() const
Definition: Vizkit3DPlugin.hpp:54
void updateMainNode(osg::Node *node)
Definition: Vizkit3DPlugin.hpp:492
void setMaxOldData(int value)
Definition: Vizkit3DPlugin.cpp:216
osg::ref_ptr< osg::Group > getRootNode() const
Definition: Vizkit3DPlugin.cpp:65
virtual QString getRubyMethod()=0
void propertyChanged(QString property_name)
void picked(float x, float y, float z)
virtual void setPluginEnabled(bool enabled)
Definition: Vizkit3DPlugin.cpp:196
VizPluginAdapter()
Definition: Vizkit3DPlugin.hpp:482
virtual void update(QVariant &, bool)=0
Definition: Vizkit3DPlugin.hpp:477
virtual void click(float x, float y)
Definition: Vizkit3DPlugin.cpp:70
std::vector< VizPluginRubyAdapterBase * > adapterList
Definition: Vizkit3DPlugin.hpp:88
QObject * getRubyAdapterCollection()
Definition: Vizkit3DPlugin.cpp:186
Definition: Vizkit3DPlugin.hpp:373
Definition: Vizkit3DPlugin.hpp:323
virtual QString getDataType()=0
Definition: Vizkit3DPlugin.hpp:32
QObject * getAdapter(QString rubyMethodName)
Definition: Vizkit3DPlugin.hpp:80
virtual ~VizPluginAddType()
Definition: Vizkit3DPlugin.hpp:328
virtual osg::ref_ptr< osg::Node > cloneCurrentViz()
Definition: Vizkit3DPlugin.cpp:203
Definition: Vizkit3DPlugin.hpp:303
virtual void updateDataIntern(const T &data)=0
virtual void createDockWidgets()
Definition: Vizkit3DPlugin.cpp:134
void setDirty()
Definition: Vizkit3DPlugin.cpp:181
osg::ref_ptr< osg::Group > getVizNode() const
Definition: Vizkit3DPlugin.cpp:49
QString getVisualizationFrame() const
Definition: Vizkit3DPlugin.cpp:253
QStringList * getListOfAvailableAdapter()
Definition: Vizkit3DPlugin.hpp:64
bool isKeepOldDataEnabled()
Definition: Vizkit3DPlugin.cpp:224
void setMainNode(osg::Node *node)
Definition: Vizkit3DPlugin.hpp:498
osg::ref_ptr< osg::Group > groupNode
Definition: Vizkit3DPlugin.hpp:504
QString vizkit3d_plugin_name
Definition: Vizkit3DPlugin.hpp:115
QStringList getVisualizationFrames() const
Definition: Vizkit3DPlugin.cpp:239
bool KeepOldData
Definition: Vizkit3DPlugin.hpp:117
Vizkit3DPlugin(QObject *parent=NULL)
Definition: Vizkit3DPlugin.hpp:348
int MaxOldData
Definition: Vizkit3DPlugin.hpp:118
osg::ref_ptr< osg::Node > ownNode
Definition: Vizkit3DPlugin.hpp:505
std::vector< QDockWidget * > dockWidgets
Definition: Vizkit3DPlugin.hpp:275
Definition: Vizkit3DPlugin.cpp:13
Definition: Vizkit3DPlugin.hpp:110