From 90a10736925dd33852bb4f2091be5210ed7c0902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Thu, 24 Feb 2011 13:39:26 +0000 Subject: [PATCH] BaseInterface documentation page finished git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@10995 383ad7c9-94d9-4d36-a494-682f7c89f535 --- BasePlugin/BaseInterface.hh | 67 ++++++++++++++---- .../pics/updateObject.jpg | Bin 24756 -> 59505 bytes common/UpdateType.cc | 1 - common/UpdateType.hh | 31 ++++++-- 4 files changed, 81 insertions(+), 18 deletions(-) diff --git a/BasePlugin/BaseInterface.hh b/BasePlugin/BaseInterface.hh index 8027fecb..c2670e5e 100644 --- a/BasePlugin/BaseInterface.hh +++ b/BasePlugin/BaseInterface.hh @@ -47,6 +47,7 @@ #include #include + /** \file BaseInterface.hh * * OpenFlippers main plugin Interface \ref baseInterfacePage. @@ -113,12 +114,13 @@ class BaseInterface { * * Emit this Signal, if you updated any part of an object.\n * If you changed the element itself (geometry, topology,..) you also have to emit this signal.\n - * Dont emit this Signal in BaseInterface::slotObjectUpdated() as this causes an endless Loop!! + * 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! * - * The parameter has to be the id of the object or -1 if refering to all or deleted objects. + * @param _ objectId Id of the object or -1 if refering to all or deleted objects. */ - virtual void updatedObject(int ) {}; + virtual void updatedObject(int _objectId) {}; /** \brief An object has been changed or added by this plugin * @@ -126,11 +128,12 @@ class BaseInterface { * If you changed the element itself (geometry, topology,..) you also have to emit this signal.\n * Dont 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! * * @param _identifier id of the object or -1 if refering to all or deleted objects. * @param _type the type states which part of the object (topology, selection, ..) has to be updated */ - virtual void updatedObject(int /*_identifier*/, const UpdateType /*_type*/) {}; + virtual void updatedObject(int _identifier, const UpdateType _type) {}; /** \brief A scenegraph node has been shown or hidden * @@ -139,7 +142,7 @@ class BaseInterface { * an optimal view. Use the id of the object the node is attached to or -1 if it is not connected to an object. * */ - virtual void nodeVisibilityChanged( int /*_identifier*/ ) {}; + virtual void nodeVisibilityChanged( int _identifier ) {}; private slots: @@ -153,7 +156,7 @@ class BaseInterface { * You dont need to call updateView as the core triggers a redraw itself. * @param _identifier Identifier of the updated/new object or -1 if one is deleted. */ - virtual void slotObjectUpdated( int /*_identifier*/ ) {}; + virtual void slotObjectUpdated( int _identifier ) {}; /** \brief An object has been updated by another plugin * @@ -166,7 +169,7 @@ class BaseInterface { * @param _identifier Identifier of the updated/new object or -1 if one is deleted. * @param _type the type states which part of the object (topology, selection, ..) had been updated */ - virtual void slotObjectUpdated( int /*_identifier*/, const UpdateType /*_type*/ ) {}; + virtual void slotObjectUpdated( int _identifier, const UpdateType _type ) {}; /** \brief Called if the whole scene is cleared * @@ -183,7 +186,7 @@ class BaseInterface { * Addisionally you get the id of the object that has been changed or -1 if all objects * have been modified. */ - virtual void slotObjectSelectionChanged( int /*_identifier*/ ) {}; + virtual void slotObjectSelectionChanged( int _identifier ) {}; /** \brief An object has been shown or hidden * @@ -192,7 +195,7 @@ class BaseInterface { * If multiple or all objects have changed, the id will be -1. * */ - virtual void slotVisibilityChanged( int /*_identifier*/ ) {}; + virtual void slotVisibilityChanged( int _identifier ) {}; /** \brief Object properties have been changed * @@ -201,7 +204,7 @@ class BaseInterface { * If multiple or all objects have changed, the id will be -1. * */ - virtual void slotObjectPropertiesChanged( int /*_identifier*/ ) {}; + virtual void slotObjectPropertiesChanged( int _identifier ) {}; /** \brief View has changed * @@ -252,8 +255,8 @@ class BaseInterface { * @param _parameters list of parameters * @param _descriptions list of descriptions for the parameters (_descriptions[i] corresponds to _parameters[i]) */ - virtual void setSlotDescription(QString /*_slotName*/, QString /*_slotDescription*/, - QStringList /*_parameters*/, QStringList /*_descriptions*/) {}; + virtual void setSlotDescription(QString _slotName , QString _slotDescription, + QStringList _parameters , QStringList _descriptions) {}; /** @} */ @@ -310,20 +313,58 @@ this change. This functionality is provided by the signals and slots for \ref Ba \image html updateObject.jpg If you change data you have to emit one of BaseInterface::updatedObject(int) or BaseInterface::updatedObject(int,const UpdateType). +\n BaseInterface::updatedObject(int) forces an update of the whole object while BaseInterface::updatedObject(int,const UpdateType) can be restricted to a part of the object ( Geometry,Selection, ... ; see UpdateType ) and is therefore faster and should be preferred. -Both signals get the id of the object that has been updated. + +Both signals get the id of the object that has been updated or -1 if all should be updated( you should not use -1 if you know what object changed!). If the signal is emitted, the core calls BaseInterface::slotObjectUpdated( int , const UpdateType ) of every plugin. You can implement this slot if you need to react on object changes. +After all plugins have been informed, the scene will be redrawn. + +For more details about the UpdateType read the documentation about UpdateType and \ref DefaultUpdateTypes "predefined update types". +A description for adding custom update types at runtime is available \ref UpdateTypeFunctions "here". + +It is also possible to insert custom nodes into the scenegraph. If you changed these nodes, you also have to inform the core. +This is achieved by the BaseInterface::nodeVisibilityChanged() function. As nodes they are usually attached to objects in the scene, +you should pass the id of the object to the function or -1 if its a global node (which should not be used!). + +If the complete scene gets cleared, the slot BaseInterface::slotAllCleared() will be executed after all objects have been removed from the scene. + +There are three additional slots that are called by the core, if the object selection(source/target BaseInterface::slotObjectSelectionChanged() ), +the object visibility(Show/Hide BaseInterface::slotVisibilityChanged()) or other properties changed (e.g. name BaseInterface::slotObjectPropertiesChanged() ) + Remarks:
  • If the object id passed to the functions is -1 all objects should be treated as updated.
  • Never emit the signal BaseInterface::updatedObject() inside the updated object slots as this causes endless loops!
+\section Scene Update Notifications + +OpenFlipper manages the scene updates in its core. If objects get updated the scene will be automatically redrawn. Nevertheless, +you can force an update of the scene by emitting the signal BaseInterface::updateView(). + +If the view (viewer pos /viewing direction) has been changed, the slot BaseInterface::slotViewChanged() will be called. Be carefull, not to +change the view in this function or you get an endless loop! + +\section Management Functions +There are some basic functions for managing plugins. The BaseInterface::description() function can be used +to provide a description for the plugin wich will be printed along with the plugin name. The BaseInterface::name() +function has to return the name of the plugin. This name will also be used inside the scripting system. +Additionally it is possible to provide a plugin version number with BaseInterface::version(). + +OpenFlippers scripting system can use all public slots defined in your plugin. If it should also provide a +small text description for your functions, you could set them with BaseInterface::setSlotDescription(). Even if +you do not implement scripting functions in your plugin, the core will then be able to provide this information +to the user. +Along with the scripting, OpenFlipper provides a batch mode, running without any user interface. If your plugin +will work without an user interface (e.g. only scripting functions), you can define a slot BaseInterface::noguiSupported(). +This empty slot is used to tell the core, that the plugin can work in batch mode. Otherwise it will not be loaded +when running a batch file. */ diff --git a/Documentation/DeveloperHelpSources/pics/updateObject.jpg b/Documentation/DeveloperHelpSources/pics/updateObject.jpg index cf2ce9cb298ba2d9e0b1c90bd5145cb3169ae270..f4424bd53dabeb1b2a03e1bcd2e503b63977cf3d 100644 GIT binary patch literal 59505 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 H7vujQ;^Xl_ diff --git a/common/UpdateType.cc b/common/UpdateType.cc index 1e3e3e44..1b71abc9 100644 --- a/common/UpdateType.cc +++ b/common/UpdateType.cc @@ -103,7 +103,6 @@ bool UpdateType::contains( const UpdateType& _type ) const { // Catch the specialization of updates if ( _type == UPDATE_SELECTION ) { -// if ( type_ == UPDATE_SELECTION_VERTICES.type_ || type_ == UPDATE_SELECTION_EDGES.type_ || type_ == UPDATE_SELECTION_FACES.type_ ) if ( type_ == UPDATE_SELECTION_VERTICES.type_ || type_ == UPDATE_SELECTION_EDGES.type_ || type_ == UPDATE_SELECTION_HALFEDGES.type_ || type_ == UPDATE_SELECTION_FACES.type_ || type_ == UPDATE_SELECTION_KNOTS.type_ ) return true; } diff --git a/common/UpdateType.hh b/common/UpdateType.hh index a61dda74..7fbf1836 100644 --- a/common/UpdateType.hh +++ b/common/UpdateType.hh @@ -49,7 +49,16 @@ typedef std::bitset<64> UpdateTypeSet; -// TYPE +/** \brief Update type class + * + * + * This class is used to specify the scope of updates. There are update types for + * selection,geometry,topology,colors,... specified here: \ref DefaultUpdateTypes + * + * You can also find functions to add custom update types at runtime at + * \ref UpdateTypeFunctions + * + */ class DLLEXPORT UpdateType { public: UpdateType(const UpdateType& _type); @@ -74,6 +83,12 @@ class DLLEXPORT UpdateType { UpdateTypeSet type_; }; +/** \defgroup DefaultUpdateTypes Default update types + * The following update types are predefined for the general use cases + * @{ + * + */ + /// Identifier for all updates const UpdateType UPDATE_ALL( UpdateTypeSet(1) ); @@ -81,8 +96,6 @@ const UpdateType UPDATE_ALL( UpdateTypeSet(1) ); const UpdateType UPDATE_VISIBILITY( UpdateTypeSet(1) << 1 ); -/// The following update types are predefined for the general use cases - /** \brief Geometry updated * * Updated Geometry ( This update type has to be used if you only modify vertex positions of @@ -119,7 +132,7 @@ const UpdateType UPDATE_SELECTION_VERTICES( UpdateTypeSet(1) << 5 ); const UpdateType UPDATE_SELECTION_EDGES( UpdateTypeSet(1) << 6 ); -/** \brief Edge selection has changed +/** \brief Halfedge selection has changed * * This is a more fine grained selection update. UPDATE_SELECTION will also match this update type. */ @@ -146,10 +159,19 @@ const UpdateType UPDATE_COLOR( UpdateTypeSet(1) << 10 ); /// marks the last used ID const UpdateType UPDATE_UNUSED ( UpdateTypeSet(1) << 11 ); +/**@}*/ + //===================================================================================== // FUNCTIONS //===================================================================================== + +/** \defgroup UpdateTypeFunctions Runtime Update Types + * Use these functions to add custom update types at runtime. + * @{ + * + */ + /** Adds a datatype and returns the id for the new type * * @param _name Internal name for the new DataType @@ -178,5 +200,6 @@ QString updateTypeName(UpdateType _id); DLLEXPORT uint updateTypeCount(); +/**@}*/ #endif // UPDATETYPE_HH -- GitLab