Developer Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BaseInterface Class Referenceabstract

Interface class from which all plugins have to be created. More...

#include <OpenFlipper/BasePlugin/BaseInterface.hh>

Inheritance diagram for BaseInterface:
BackupPlugin BSplineCurveSelectionPlugin BSplineSurfaceSelectionPlugin ColorPlugin ComponentsPlugin DataControlPlugin DecimaterPlugin DepthPeeling DepthPeelingPlugin DeserializeScreenshotMetadataPlugin FileBundlePlugin FileBVHPlugin FileHeightFieldPNGPlugin FileLightPlugin FileOBJPlugin FileOFFPlugin FileOMPlugin FileOpenVolumeMeshPlugin FilePlaPlugin FilePLYPlugin FilePolyLinePlugin FilePTSPlugin FileScriptPlugin FileSKLPlugin FileSPHPlugin FileSTLPlugin FileViewPlugin FileVTKPlugin GaussCurvaturePlugin HoleFillerPlugin InfoMeshObjectPlugin InfoSkeletonObjectPlugin InfoVolumeMeshObjectPlugin INIPlugin IsotropicRemesherPlugin LaplaceLengthPlugin MaterialPicker MeanCurvaturePlugin MemInfoPlugin MeshComparePlugin MeshObjectSelectionPlugin MeshRepairPlugin MouseAndKeyPlugin MovePlugin NormalRenderer ObjectSelectionPlugin PluginAlignMeshes PolyLinePlugin PolyLineSelectionPlugin PostProcessorAnaglyphPlugin PostProcessorDepthImagePlugin PostProcessorGrayscalePlugin PostProcessorPhilipsStereoPlugin PostProcessorSobelPlugin PrimitivesGeneratorPlugin PrintPlugin PropertyVisPlugin RemesherPlugin Renderer Renderer RenderPickingPlugin RulerPlugin ScriptingPlugin SelectionBasePlugin SimplePlugin SkeletalAnimationPlugin SkeletonEditingPlugin SlicePlugin SmootherPlugin SmootherPlugin SmootherPlugin SplatCloudObjectSelectionPlugin SplatCloudRenderingControlPlugin SSAOPlugin SubdividerPlugin TestPlugin TextureControlPlugin ToonRenderer TopologyPlugin TypeBSplineCurvePlugin TypeBSplineSurfacePlugin TypeCameraPlugin TypeCoordsysPlugin TypeHexahedralMeshPlugin TypeLightPlugin TypePlanePlugin TypePolyhedralMeshPlugin TypePolyLinePlugin TypePolyMeshPlugin TypeQtWidgetPlugin TypeSkeletonPlugin TypeSpherePlugin TypeSplatCloudPlugin TypeTriangleMeshPlugin ViewControlPlugin VolumeMeshSelectionPlugin VsiPlugin

Public Slots

virtual void exit ()
 

Public Member Functions

virtual void noguiSupported ()
 
virtual ~BaseInterface ()
 Destructor.
 

Initialization

virtual void initializePlugin ()
 Initialize Plugin. More...
 
virtual void pluginsInitialized ()
 Initialize Plugin step 2. More...
 

Object/View updates

virtual void slotObjectUpdated (int _identifier)
 An object has been updated by another plugin. More...
 
virtual void slotObjectUpdated (int _identifier, const UpdateType &_type)
 An object has been updated by another plugin. More...
 
virtual void slotAllCleared ()
 Called if the whole scene is cleared. More...
 
virtual void slotObjectSelectionChanged (int _identifier)
 The active object has changed. More...
 
virtual void slotVisibilityChanged (int _identifier)
 An object has been shown or hidden. More...
 
virtual void slotObjectPropertiesChanged (int _identifier)
 Object properties have been changed. More...
 
virtual void slotViewChanged ()
 View has changed. More...
 
virtual void slotSceneDrawn ()
 triggered after a scene has been drawn More...
 
virtual void slotDrawModeChanged (int _viewerId)
 A viewer changed its draw mode. More...
 
virtual void updateView ()
 Update current view in Main Application. More...
 
virtual void blockScenegraphUpdates (bool _block)
 Tell the core to prevent scenegraph updates. More...
 
virtual void updatedObject (int _objectId)
 An object has been changed or added by this plugin. More...
 
virtual void updatedObject (int _identifier, const UpdateType &_type)
 An object has been changed or added by this plugin. More...
 
virtual void nodeVisibilityChanged (int _identifier)
 A scenegraph node has been shown or hidden. More...
 

Plugin identification

virtual void setSlotDescription (QString _slotName, QString _slotDescription, QStringList _parameters, QStringList _descriptions)
 Set a description for a public slot. More...
 
virtual QString name ()=0
 Return a name for the plugin. More...
 
virtual QString description ()=0
 Return a description of what the plugin is doing. More...
 
virtual QString version ()
 Return a version string for your plugin. More...
 

Renderer control

virtual void setRenderer (unsigned int _viewer, QString _rendererName)
 Set a renderer for the given viewer. More...
 
virtual void getCurrentRenderer (unsigned int _viewer, QString &_rendererName)
 Get the current renderer for the given viewer. More...
 

Detailed Description

Interface class from which all plugins have to be created.

You have to implement at least name and description for your plugin. All other functions and signals are optional. If you want to implement or use them just add them to your plugin header. A detailed description of this interface can be found in the Base Interface .

See Plugin Programming for a tutorial on plugin programming.

Also see Dataflow diagrams for a detailed overview of OpenFlipper's data flow and interface function calls.

Definition at line 76 of file BaseInterface.hh.

Member Function Documentation

virtual void BaseInterface::blockScenegraphUpdates ( bool  _block)
inlinevirtual

Tell the core to prevent scenegraph updates.

Emit this Signal if you want to skip scenegraph updates. E.g. if you add a large number of objects or modify them it's much more efficient to block scenegraph updates until you finished and then do only one update run.

The function itself is counting the number of blocks internally to allow multiple plugins for concurrent blocks. The function is queued to ensure that it is processed in line with load save operations.

Definition at line 134 of file BaseInterface.hh.

virtual QString BaseInterface::description ( )
pure virtual

Return a description of what the plugin is doing.

This function has to return a basic description of the plugin

Implemented in PolyLinePlugin, MeshObjectSelectionPlugin, MovePlugin, FileVTKPlugin, DecimaterPlugin, SkeletonEditingPlugin, TextureControlPlugin, SplatCloudObjectSelectionPlugin, VolumeMeshSelectionPlugin, BackupPlugin, SkeletalAnimationPlugin, PropertyVisPlugin, SubdividerPlugin, BSplineCurveSelectionPlugin, BSplineSurfaceSelectionPlugin, ObjectSelectionPlugin, TypeLightPlugin, FileOBJPlugin, PolyLineSelectionPlugin, DataControlPlugin, ViewControlPlugin, InfoMeshObjectPlugin, TypeSplatCloudPlugin, IsotropicRemesherPlugin, ComponentsPlugin, SmootherPlugin, InfoSkeletonObjectPlugin, RemesherPlugin, TypeBSplineCurvePlugin, FilePTSPlugin, TypeBSplineSurfacePlugin, HoleFillerPlugin, FileBundlePlugin, TypePolyhedralMeshPlugin, FileOFFPlugin, TypeHexahedralMeshPlugin, SplatCloudRenderingControlPlugin, DeserializeScreenshotMetadataPlugin, FileOpenVolumeMeshPlugin, ColorPlugin, TopologyPlugin, MeshRepairPlugin, FilePLYPlugin, FileOMPlugin, ScriptingPlugin, FileSTLPlugin, MeshComparePlugin, SelectionBasePlugin, TypeSkeletonPlugin, InfoVolumeMeshObjectPlugin, VsiPlugin, PrimitivesGeneratorPlugin, FileBVHPlugin, MeanCurvaturePlugin, FilePolyLinePlugin, RulerPlugin, TypeCameraPlugin, SmootherPlugin, MaterialPicker, FileSKLPlugin, FileSPHPlugin, FilePlaPlugin, FileLightPlugin, FileViewPlugin, TypePolyMeshPlugin, TypeQtWidgetPlugin, TypeTriangleMeshPlugin, FileHeightFieldPNGPlugin, FileScriptPlugin, TypePlanePlugin, TypeSpherePlugin, GaussCurvaturePlugin, SlicePlugin, TypeCoordsysPlugin, Renderer, TypePolyLinePlugin, INIPlugin, LaplaceLengthPlugin, DepthPeelingPlugin, Renderer, SSAOPlugin, PrintPlugin, MemInfoPlugin, TestPlugin, DepthPeeling, PostProcessorAnaglyphPlugin, PostProcessorGrayscalePlugin, PostProcessorPhilipsStereoPlugin, PostProcessorSobelPlugin, ToonRenderer, PostProcessorDepthImagePlugin, NormalRenderer, RenderPickingPlugin, PluginAlignMeshes, MouseAndKeyPlugin, SmootherPlugin, and SimplePlugin.

virtual void BaseInterface::exit ( )
inlinevirtualslot

This function is called when the application exits or when your plugin is about to be unloaded. Here you can clean up your plugin, delete local variables...

Reimplemented in ComponentsPlugin.

Definition at line 338 of file BaseInterface.hh.

virtual void BaseInterface::getCurrentRenderer ( unsigned int  _viewer,
QString &  _rendererName 
)
inlinevirtual

Get the current renderer for the given viewer.

Parameters
_viewerId of the viewer to set the renderer for
_rendererNameName of the renderer that is currently active

Definition at line 329 of file BaseInterface.hh.

virtual void BaseInterface::initializePlugin ( )
inlineprivatevirtualslot

Initialize Plugin.

This slot is called if the plugin is loaded and has to be initialized. All initialization stuff in this slot has to stay inside the plugin, no external signals are allowed here (and will be ignored). Don't create any objects via PluginFunctions here. Use the pluginsInitialized() slot for external initialization. After execution of this slot your plugin should be fully functional. Only gui elements may be uninitialized and should be created in pluginsInitialized().

Reimplemented in FileVTKPlugin, FileOBJPlugin, HoleFillerPlugin, FileOFFPlugin, FilePLYPlugin, FilePolyLinePlugin, FileSTLPlugin, FileOMPlugin, FileBVHPlugin, FileSKLPlugin, FileSPHPlugin, FilePlaPlugin, FileLightPlugin, FileViewPlugin, and FileHeightFieldPNGPlugin.

Definition at line 94 of file BaseInterface.hh.

virtual QString BaseInterface::name ( )
pure virtual

Return a name for the plugin.

This Function has to return the name of the plugin.

Implemented in PolyLinePlugin, MovePlugin, FileVTKPlugin, DecimaterPlugin, SkeletonEditingPlugin, TextureControlPlugin, SplatCloudObjectSelectionPlugin, BackupPlugin, SkeletalAnimationPlugin, VolumeMeshSelectionPlugin, PropertyVisPlugin, SubdividerPlugin, TypeLightPlugin, FileOBJPlugin, BSplineCurveSelectionPlugin, BSplineSurfaceSelectionPlugin, ObjectSelectionPlugin, PolyLineSelectionPlugin, DataControlPlugin, ViewControlPlugin, TypeSplatCloudPlugin, InfoMeshObjectPlugin, IsotropicRemesherPlugin, ComponentsPlugin, SmootherPlugin, RemesherPlugin, InfoSkeletonObjectPlugin, TypeBSplineCurvePlugin, FilePTSPlugin, TypeBSplineSurfacePlugin, HoleFillerPlugin, FileBundlePlugin, FileOFFPlugin, SplatCloudRenderingControlPlugin, TypePolyhedralMeshPlugin, ColorPlugin, TopologyPlugin, TypeHexahedralMeshPlugin, FilePLYPlugin, DeserializeScreenshotMetadataPlugin, FileOpenVolumeMeshPlugin, MeshRepairPlugin, FileOMPlugin, ScriptingPlugin, FileSTLPlugin, MeshComparePlugin, SelectionBasePlugin, TypeSkeletonPlugin, PrimitivesGeneratorPlugin, FileBVHPlugin, InfoVolumeMeshObjectPlugin, MeanCurvaturePlugin, VsiPlugin, FilePolyLinePlugin, RulerPlugin, TypeCameraPlugin, SmootherPlugin, MaterialPicker, FileSKLPlugin, FileSPHPlugin, FilePlaPlugin, FileLightPlugin, FileViewPlugin, TypePolyMeshPlugin, TypeQtWidgetPlugin, TypeTriangleMeshPlugin, FileHeightFieldPNGPlugin, FileScriptPlugin, TypePlanePlugin, TypeSpherePlugin, GaussCurvaturePlugin, SlicePlugin, TypeCoordsysPlugin, Renderer, TypePolyLinePlugin, LaplaceLengthPlugin, DepthPeelingPlugin, Renderer, SSAOPlugin, PrintPlugin, MemInfoPlugin, TestPlugin, DepthPeeling, PostProcessorAnaglyphPlugin, PostProcessorGrayscalePlugin, PostProcessorPhilipsStereoPlugin, PostProcessorSobelPlugin, ToonRenderer, PostProcessorDepthImagePlugin, NormalRenderer, RenderPickingPlugin, PluginAlignMeshes, MouseAndKeyPlugin, SmootherPlugin, and SimplePlugin.

virtual void BaseInterface::nodeVisibilityChanged ( int  _identifier)
inlinevirtual

A scenegraph node has been shown or hidden.

Emit this Signal, if you changed the visibility of a scenegraph node directly (not via object->show/hide). This is required to reset the near and far plane for the viewers to provide an optimal view. Use the id of the object the node is attached to or -1 if it is not connected to an object.

Definition at line 170 of file BaseInterface.hh.

virtual void BaseInterface::noguiSupported ( )
inlinevirtual

Using this function you can inform the core that your plugin can run without creating a widget. If your plugin does not implement this function, it will not be loaded in scripting mode without gui. You don't have to do anything in this function.

Reimplemented in RemesherPlugin, IsotropicRemesherPlugin, FileVTKPlugin, FileOBJPlugin, FileOFFPlugin, FilePLYPlugin, FilePolyLinePlugin, FileSTLPlugin, FileOMPlugin, FileBVHPlugin, FileSKLPlugin, FileSPHPlugin, FilePlaPlugin, FileLightPlugin, FileViewPlugin, and FileHeightFieldPNGPlugin.

Definition at line 344 of file BaseInterface.hh.

virtual void BaseInterface::pluginsInitialized ( )
inlineprivatevirtual

Initialize Plugin step 2.

This slot is called if all plugins are loaded and the core is ready. Afterwards you can already send signals to other plugins and the core (e.g. adding global textures).

Note
Do not create objects via addEmpty or load objects in this slot, as the rendering system is not ready yet.

Reimplemented in TypeLightPlugin, ComponentsPlugin, HoleFillerPlugin, and TypeCameraPlugin.

Definition at line 102 of file BaseInterface.hh.

virtual void BaseInterface::setRenderer ( unsigned int  _viewer,
QString  _rendererName 
)
inlinevirtualsignal

Set a renderer for the given viewer.

Parameters
_viewerId of the viewer to set the renderer for
_rendererNameName of the renderer to be used

Definition at line 322 of file BaseInterface.hh.

virtual void BaseInterface::setSlotDescription ( QString  _slotName,
QString  _slotDescription,
QStringList  _parameters,
QStringList  _descriptions 
)
inlinevirtualsignal

Set a description for a public slot.

public slots of each plugin are automatically available for scripting.
Use this Signal to add a description for your slot so that everyone knows what it is used for.

Parameters
_slotNamethe name of the slot
_slotDescriptiona description for the slot
_parameterslist of parameters
_descriptionslist of descriptions for the parameters (_descriptions[i] corresponds to _parameters[i])

Definition at line 306 of file BaseInterface.hh.

virtual void BaseInterface::slotAllCleared ( )
inlineprivatevirtual

Called if the whole scene is cleared.

This slot is called if the main application cleared the whole scene. No objects will remain in memory and all destructors of the objects are called before this signal is emitted.

Reimplemented in TypeLightPlugin.

Definition at line 209 of file BaseInterface.hh.

virtual void BaseInterface::slotDrawModeChanged ( int  _viewerId)
inlineprivatevirtual

A viewer changed its draw mode.

Parameters
_viewerIdId of the viewer that changed its draw mode

Definition at line 263 of file BaseInterface.hh.

virtual void BaseInterface::slotObjectPropertiesChanged ( int  _identifier)
inlineprivatevirtual

Object properties have been changed.

This slot is called if the object properties (e.g. name ) have changed The id of the object is given as a parameter. If multiple or all objects have changed, the id will be -1.

Definition at line 236 of file BaseInterface.hh.

virtual void BaseInterface::slotObjectSelectionChanged ( int  _identifier)
inlineprivatevirtual

The active object has changed.

This slot is called by the main application if the current selection of an object has changed.
This means that the selection of source / target objects has changed. Additionally you get the id of the object that has been changed or -1 if all objects have been modified.

Definition at line 218 of file BaseInterface.hh.

virtual void BaseInterface::slotObjectUpdated ( int  _identifier)
inlineprivatevirtualslot

An object has been updated by another plugin.

This slot is called by the main application if the number or status of existing objects changed or if an existing object has been changed. This could mean, that objects are added or deleted or that an existing object with the given id has been modified. If you store local information about one of these Objects, you should check if its still valid!
Don't emit BaseInterface::updatedObject(int) in this slot as this causes an endless Loop!! You don't need to call updateView as the core triggers a redraw itself.
This slot will be executed on the main thread.

Parameters
_identifierIdentifier of the updated/new object or -1 if one is deleted.

Definition at line 186 of file BaseInterface.hh.

virtual void BaseInterface::slotObjectUpdated ( int  _identifier,
const UpdateType _type 
)
inlineprivatevirtual

An object has been updated by another plugin.

This slot is called by the main application if the number or status of existing objects changed or if an existing object has been changed. This could mean, that objects are added or deleted or that an existing object with the given id has been modified. If you store local information about one of these Objects, you should check if its still valid!
Don't emit BaseInterface::updatedObject(int) in this slot as this causes an endless Loop!! You don't need to call updateView as the core triggers a redraw itself.
This slot will be executed on the main thread.

Parameters
_identifierIdentifier of the updated/new object or -1 if one is deleted.
_typethe type states which part of the object (topology, selection, ..) had been updated

Definition at line 201 of file BaseInterface.hh.

virtual void BaseInterface::slotSceneDrawn ( )
inlineprivatevirtual

triggered after a scene has been drawn

This slot will be triggered every time, the OpenGl draw of one frame is completed. Every time you emit an updateView, a scene redraw will be triggered (except, if the minimal time between two frames is not yet reached). After drawing the scene, the core will call this slot to inform the plugins, that a new view is visible.

You can use this slot, if you need to control special updates in your plugin, that react on the fps.

Definition at line 257 of file BaseInterface.hh.

virtual void BaseInterface::slotViewChanged ( )
inlineprivatevirtual

View has changed.

This slot is called when the view in one of the viewers changed ( Viewing direction/viewer position ) !! Be careful to not change the view in this slot !! !! This will of course lead to an endless loop !!

Definition at line 245 of file BaseInterface.hh.

virtual void BaseInterface::slotVisibilityChanged ( int  _identifier)
inlineprivatevirtual

An object has been shown or hidden.

This slot is called if an object is shown or hidden. The id of the object is given as a parameter. If multiple or all objects have changed, the id will be -1.

Definition at line 227 of file BaseInterface.hh.

virtual void BaseInterface::updatedObject ( int  _objectId)
inlinevirtual

An object has been changed or added by this plugin.

Emit this Signal, if you updated any part of an object.
If you changed the element itself (geometry, topology,..) you also have to emit this signal.
Don't emit this Signal in BaseInterface::slotObjectUpdated() as this causes an endless Loop!! Give the id of the new object as parameter or -1 if you updated all objects or deleted an object. For performance reasons try to always give the id and not -1!
This signal can be called from any thread.

Parameters
_objectIdId of the object or -1 if referring to all or deleted objects.

Definition at line 147 of file BaseInterface.hh.

virtual void BaseInterface::updatedObject ( int  _identifier,
const UpdateType _type 
)
inlinevirtual

An object has been changed or added by this plugin.

Emit this Signal, if you updated any part of an object.
If you changed the element itself (geometry, topology,..) you also have to emit this signal.
Don't emit this Signal in BaseInterface::slotObjectUpdated() as this causes an endless Loop!! Give the id of the new object as parameter or -1 if you updated all objects or deleted an object. For performance reasons try to always give the id and not -1!
This signal can be called from any thread.

Parameters
_identifierid of the object or -1 if referring to all or deleted objects.
_typethe type states which part of the object (topology, selection, ..) has to be updated

Definition at line 161 of file BaseInterface.hh.

virtual void BaseInterface::updateView ( )
inlinevirtualsignal

Update current view in Main Application.

Emit this Signal if the viewer widget in the main application should update the current view. If you do an updatedObject the core will trigger an update itself and you don't have to care about it.
This signal can be called from any thread.

Definition at line 123 of file BaseInterface.hh.

virtual QString BaseInterface::version ( )
inlinevirtualslot

Return a version string for your plugin.

This function will be used to determine the current version of your plugin. Should have the form x.x.x ( you do not need to give that many subversions )

Returns
The version string of the plugin

Reimplemented in INIPlugin.

Definition at line 292 of file BaseInterface.hh.


The documentation for this class was generated from the following file: