- /** 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
- */
- virtual void customizeObject(ObjectPtr theObject);
+ /// 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 customizeObject(ObjectPtr theObject, const ModuleBase_CustomizeFlag& theFlag,
+ const bool theUpdateViewer);