- /** Update the object presentable properties such as color, lines width and other
- * If the object is result with the color attribute value set, it is used,
- * otherwise the customize is applyed to the object's feature if it is a custom prs
- * \param theObject an object instance
- * \param theUpdateViewer the parameter whether the viewer should be update immediatelly
- * \returns true if the object is modified
- */
- virtual bool customizeObject(ObjectPtr theObject, const bool theUpdateViewer);
+ /// Return true if the custom presentation is activated
+ /// \param theFlag a flag of level of customization, which means that only part of sub-elements
+ /// \return boolean value
+ virtual bool isCustomPrsActivated(const ModuleBase_CustomizeFlag& theFlag) const;
+
+ /// Activate custom presentation for the object
+ /// \param theFeature a feature instance
+ /// \param theFlag a flag of level of customization, which means that only part of sub-elements
+ /// \param theUpdateViewer the parameter whether the viewer should be update immediately
+ virtual void activateCustomPrs(const FeaturePtr& theFeature,
+ const ModuleBase_CustomizeFlag& theFlag,
+ const bool theUpdateViewer);
+
+ /// Deactivate custom presentation for the object
+ /// \param theFlag a flag of level of customization, which means that only part of sub-elements
+ /// \param theUpdateViewer the parameter whether the viewer should be update immediately
+ virtual void deactivateCustomPrs(const ModuleBase_CustomizeFlag& theFlag,
+ const bool theUpdateViewer);
+
+ /// Modifies the given presentation in the custom way.
+ //virtual bool customisePresentation(std::shared_ptr<ModelAPI_Result> theResult,
+ // AISObjectPtr thePrs,
+ // std::shared_ptr<GeomAPI_ICustomPrs> theCustomPrs);
+
+ ///// Modifies the given presentation in the custom way after usual customize is performed.
+ //virtual bool afterCustomisePresentation(std::shared_ptr<ModelAPI_Result> theResult,
+ // AISObjectPtr thePrs,
+ // GeomCustomPrsPtr theCustomPrs);
+
+ /// Update the object presentable properties such as color, lines width and other
+ /// If the object is result with the color attribute value set, it is used,
+ /// otherwise the customize is applyed to the object's feature if it is a custom prs
+ /// \param theObject an object instance
+ /// \param theFlag a flag of level of customization, which means that only part of sub-elements
+ /// should be updated(e.g. only highlighted elements)
+ /// \param theUpdateViewer the parameter whether the viewer should be update immediatelly
+ /// \returns true if the object is modified
+ virtual bool customizeFeature(ObjectPtr theObject, const ModuleBase_CustomizeFlag& theFlag,
+ const bool theUpdateViewer);
+
+ /// Disable displaying of custom mode
+ /// \param theMode a mode to disable
+ virtual void disableCustomMode(ModuleBase_CustomizeFlag theMode);
+
+ /// Enables disabled custom mode
+ virtual void enableCustomModes();