Salome HOME
Task "Make the size of the selection area even bigger, especially for points"
[modules/shaper.git] / src / ConstructionPlugin / ConstructionPlugin_Point.h
index 63a13422614b10b26b218487c5657141b14d41fd..d1f15287f64d62d6e50bc67a555eac16a8e23ee9 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 // File:        ConstructionPlugin_Point.h
 // Created:     3 Apr 2014
 // Author:      Mikhail PONIKAROV
@@ -7,36 +9,43 @@
 
 #include "ConstructionPlugin.h"
 #include <ModelAPI_Feature.h>
-
-/// Point kind
-const std::string CONSTRUCTION_POINT_KIND("Point");
-
-/// attribute name for X coordinate
-const std::string POINT_ATTR_X = "x";
-/// attribute name for Y coordinate
-const std::string POINT_ATTR_Y = "y";
-/// attribute name for Z coordinate
-const std::string POINT_ATTR_Z = "z";
+#include <ModelAPI_Result.h>
+#include <GeomAPI_ICustomPrs.h>
 
 /**\class ConstructionPlugin_Point
- * \ingroup DataModel
+ * \ingroup Plugins
  * \brief Feature for creation of the new part in PartSet.
  */
-class ConstructionPlugin_Point : public ModelAPI_Feature
+class ConstructionPlugin_Point : public ModelAPI_Feature, public GeomAPI_ICustomPrs
 {
  public:
   /// Returns the kind of a feature
-  CONSTRUCTIONPLUGIN_EXPORT virtual const std::string& getKind()
+  CONSTRUCTIONPLUGIN_EXPORT virtual const std::string& getKind();
+
+  /// Point kind
+  inline static const std::string& ID()
   {
-    static std::string MY_KIND = CONSTRUCTION_POINT_KIND;
-    return MY_KIND;
+    static const std::string CONSTRUCTION_POINT_KIND("Point");
+    return CONSTRUCTION_POINT_KIND;
   }
 
-  /// Returns to which group in the document must be added feature
-  CONSTRUCTIONPLUGIN_EXPORT virtual const std::string& getGroup()
+  /// attribute name for X coordinate
+  inline static const std::string& X()
+  {
+    static const std::string POINT_ATTR_X("x");
+    return POINT_ATTR_X;
+  }
+  /// attribute name for Y coordinate
+  inline static const std::string& Y()
+  {
+    static const std::string POINT_ATTR_Y("y");
+    return POINT_ATTR_Y;
+  }
+  /// attribute name for Z coordinate
+  inline static const std::string& Z()
   {
-    static std::string MY_GROUP = "Construction";
-    return MY_GROUP;
+    static const std::string POINT_ATTR_Z("z");
+    return POINT_ATTR_Z;
   }
 
   /// Creates a new part document if needed
@@ -45,8 +54,15 @@ class ConstructionPlugin_Point : public ModelAPI_Feature
   /// Request for initialization of data model of the feature: adding all attributes
   CONSTRUCTIONPLUGIN_EXPORT virtual void initAttributes();
 
+  /// Construction result is allways recomuted on the fly
+  CONSTRUCTIONPLUGIN_EXPORT virtual bool isPersistentResult() {return false;}
+
   /// Use plugin manager for features creation
   ConstructionPlugin_Point();
+
+  /// Customize presentation of the feature
+  virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs,
+                                     std::shared_ptr<GeomAPI_ICustomPrs> theDefaultPrs);
 };
 
 #endif