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;
42 adapterList.push_back(adapter);
50 std::vector<VizPluginRubyAdapterBase*>::iterator it = std::find(adapterList.begin(), adapterList.end(), adapter);
51 if (it != adapterList.end()) adapterList.erase(it);
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)
115 Q_PROPERTY(QString vizkit3d_plugin_name READ getPluginName)
116 Q_PROPERTY(
bool enabled READ isPluginEnabled WRITE setPluginEnabled)
117 Q_PROPERTY(
bool KeepOldData READ isKeepOldDataEnabled WRITE setKeepOldData)
118 Q_PROPERTY(
int MaxOldData READ getMaxOldData WRITE setMaxOldData)
119 Q_PROPERTY(QStringList frame READ getVisualizationFrames WRITE setVisualizationFrameFromList)
120 Q_PROPERTY(
double scale READ getScale WRITE setScale)
133 virtual
bool isDirty() const;
139 osg::ref_ptr<
osg::Group> getVizNode() const;
140 osg::ref_ptr<
osg::Group> getRootNode() const;
145 std::vector<QDockWidget*> getDockWidgets();
151 virtual
bool isPluginEnabled();
156 virtual
void setPluginEnabled(
bool enabled);
159 virtual const QString getPluginName() const;
160 virtual
void setPluginName(const QString &name);
165 virtual
void click(
float x,
float y);
170 QObject* getRubyAdapterCollection();
176 void setKeepOldData(
bool value);
177 bool isKeepOldDataEnabled();
182 virtual
void clearVisualization();
187 void deleteOldData();
189 int getMaxOldData()
const {
return max_old_data;};
190 void setMaxOldData(
int value);
192 void setPose(
const QVector3D &position,
const QQuaternion &orientation);
198 QStringList getVisualizationFrames()
const;
202 QString getVisualizationFrame()
const;
206 void setVisualizationFrameFromList(
const QStringList &frames);
210 void setVisualizationFrame(
const QString &frame);
215 double getScale()
const;
220 void setScale(
double scale);
226 void propertyChanged(QString property_name);
231 void childrenChanged();
236 void pluginActivityChanged(
bool);
242 void clicked(
float x,
float y);
247 void picked(
float x,
float y,
float z);
253 virtual void updateMainNode(osg::Node* node) = 0;
258 virtual osg::ref_ptr<osg::Node> createMainNode();
263 virtual void createDockWidgets();
268 virtual osg::ref_ptr<osg::Node> cloneCurrentViz();
276 QString vizkit3d_plugin_name;
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>
335 virtual void updateDataIntern(
const T &data) = 0;
356 template<
typename Type>
358 boost::mutex::scoped_lock lockit(this->updateMutex);
365 throw std::runtime_error(
"Wrong type given to visualizer");
381 virtual QObject* createPlugin(QString
const& name) = 0;
382 virtual QStringList* getAvailablePlugins()
const = 0;
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;
483 : groupNode(new
osg::Group())
495 operatorIntern( node, NULL );
500 groupNode->addChild( node );
VizPluginRubyAdapterCollection adapterCollection
Definition: Vizkit3DPlugin.hpp:277
Definition: PickHandler.hpp:29
Definition: Vizkit3DPlugin.hpp:19
void addAdapter(VizPluginRubyAdapterBase *adapter)
Definition: Vizkit3DPlugin.hpp:40
VizkitPluginFactory(QObject *parent=0)
Definition: Vizkit3DPlugin.hpp:378
boost::mutex updateMutex
Definition: Vizkit3DPlugin.hpp:273
virtual ~Vizkit3DPlugin()
Definition: Vizkit3DPlugin.hpp:351
void removeAdapter(VizPluginRubyAdapterBase *adapter)
Definition: Vizkit3DPlugin.hpp:48
osg::ref_ptr< osg::Node > createMainNode()
Definition: Vizkit3DPlugin.hpp:487
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
virtual QString getRubyMethod()=0
VizPluginAdapter()
Definition: Vizkit3DPlugin.hpp:482
virtual void update(QVariant &, bool)=0
Definition: Vizkit3DPlugin.hpp:477
std::vector< VizPluginRubyAdapterBase * > adapterList
Definition: Vizkit3DPlugin.hpp:88
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
Definition: Vizkit3DPlugin.hpp:303
Definition: AxesNode.cpp:12
virtual void updateDataIntern(const T &data)=0
QStringList * getListOfAvailableAdapter()
Definition: Vizkit3DPlugin.hpp:64
void setMainNode(osg::Node *node)
Definition: Vizkit3DPlugin.hpp:498
osg::ref_ptr< osg::Group > groupNode
Definition: Vizkit3DPlugin.hpp:504
Vizkit3DPlugin(QObject *parent=NULL)
Definition: Vizkit3DPlugin.hpp:348
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