X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_CustomPrs.h;h=aafb37887e14d43379d6551750136d2a0e4c824b;hb=04dcca50b319e65e5141be7f6c329a2e1cf94718;hp=6d23847da06499aba618bd1afad6c66e11d87b61;hpb=f5ddae43cdb88e20e6fe3e0efc7f1751a39f216c;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_CustomPrs.h b/src/PartSet/PartSet_CustomPrs.h index 6d23847da..aafb37887 100755 --- a/src/PartSet/PartSet_CustomPrs.h +++ b/src/PartSet/PartSet_CustomPrs.h @@ -8,6 +8,7 @@ #define PartSet_CustomPrs_H #include "PartSet.h" + #include "PartSet_OperationPrs.h" #include @@ -18,32 +19,69 @@ #include #include -#include -#include - class ModuleBase_IWorkshop; +class XGUI_Workshop; /** -* Interface of a class which can provide specific customization of -* object presentation + * This is the module custom presentation, which manage an AIS presentation, that can be filled + * by a feature and visualized in the viewer additionally to usual workshop objects. */ -class PartSet_CustomPrs : public GeomAPI_ICustomPrs +class PartSet_CustomPrs { public: PARTSET_EXPORT PartSet_CustomPrs(ModuleBase_IWorkshop* theWorkshop); PARTSET_EXPORT virtual ~PartSet_CustomPrs() {}; - /// Set the feature is customized - /// \param theObject a feature object - void setCustomized(const FeaturePtr& theObject); + /// Returns true if the presentation is active + bool isActive(); + + /// Initializes the operation presentation by the parameter object and display the presentation + /// \param theObject an operation feature source to fill the presentation + /// \param theUpdateViewer the parameter whether the viewer should be update immediatelly + /// \returns true if the presentation is displayed + bool activate(const FeaturePtr& theObject, const bool theUpdateViewer); + + /// Initializes the operation presentation by empty object and erase the presentation + /// \param theUpdateViewer the parameter whether the viewer should be update immediatelly + /// \returns true if the presentation has been displayed and now it is erased + bool deactivate(const bool theUpdateViewer); + + /// If the presentation is active[displayed], the shapes of the presentation is recomputed + /// and the presentation is redisplayed. + /// \param theUpdateViewer the parameter whether the viewer should be update immediatelly + /// \returns true if the presentation is redisplayed + bool redisplay(const ObjectPtr& theObject, const bool theUpdateViewer); + + /// Nullify the operation presentation. For example, it can be useful when the viewer/context + /// is closed. If this is not performed and the presentation is assigned in another context, + /// it caused erroneus case because the presentation has linkage to the previous context. + void clearPrs(); + +private: + /// Creates the AIS operation presentation + void initPrs(); + + /// Returns the AIS presentation + Handle(PartSet_OperationPrs) getPresentation(); + + //! Returns workshop + XGUI_Workshop* workshop() const; + + /// Displays the internal presentation in the viewer of workshop + /// \param theUpdateViewer the parameter whether the viewer should be update immediatelly + void displayPresentation(const bool theUpdateViewer); + + /// Erases the internal presentation from the viewer of workshop + /// \param theUpdateViewer the parameter whether the viewer should be update immediatelly + void erasePresentation(const bool theUpdateViewer); + + /// Sets color, point size and width of the presentation + /// \param theUpdateViewer the parameter whether the viewer should be update immediatelly + void customizePresentation(const bool theUpdateViewer); - /// Modifies the given presentation in the custom way. - virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs, - std::shared_ptr theCustomPrs); private: ModuleBase_IWorkshop* myWorkshop; /// current workshop - Handle(PartSet_OperationPrs) myOperationPrs; /// AIS presentation for the feature of operation - //QMap > myCustomized; /// objects, which are customized + AISObjectPtr myOperationPrs; /// the AIS presentation, which is displayed/erased in the viewer }; #endif