Salome HOME
Task "Make the size of the selection area even bigger, especially for points"
[modules/shaper.git] / src / ConstructionPlugin / ConstructionPlugin_Point.h
index 2b71b50fea6e88763edfaf2d7325341d12e2ee30..d1f15287f64d62d6e50bc67a555eac16a8e23ee9 100644 (file)
@@ -1,34 +1,52 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 // File:        ConstructionPlugin_Point.h
 // Created:     3 Apr 2014
 // Author:      Mikhail PONIKAROV
 
-#ifndef ConstructionPlugin_Point_HeaderFile
-#define ConstructionPlugin_Point_HeaderFile
+#ifndef ConstructionPlugin_Point_H_
+#define ConstructionPlugin_Point_H_
 
 #include "ConstructionPlugin.h"
 #include <ModelAPI_Feature.h>
-
-/// 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:
+ public:
   /// Returns the kind of a feature
-  CONSTRUCTIONPLUGIN_EXPORT virtual const std::string& getKind() 
-  {static std::string MY_KIND = "Point"; return MY_KIND;}
+  CONSTRUCTIONPLUGIN_EXPORT virtual const std::string& getKind();
+
+  /// Point kind
+  inline static const std::string& ID()
+  {
+    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() 
-  {static std::string MY_GROUP = "Construction"; return MY_GROUP;}
+  /// 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 const std::string POINT_ATTR_Z("z");
+    return POINT_ATTR_Z;
+  }
 
   /// Creates a new part document if needed
   CONSTRUCTIONPLUGIN_EXPORT virtual void execute();
@@ -36,8 +54,15 @@ public:
   /// 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