Salome HOME
Add tools
[modules/shaper.git] / src / GeomAlgoAPI / GeomAlgoAPI_MakeShape.h
index 38519b03fa3c9e553100c1ff74e3f1838ec4012a..b4e46e54a15d7e1c1fbc3263086ebcfcff148625 100644 (file)
 class GeomAlgoAPI_MakeShape : public GeomAPI_Interface
 {
 public:
-  /// Constructor
-  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape();
+  /// Algo type enum
+  enum AlgoType {
+    MakeShape,
+    MakePipe,
+    BOPAlgoBuilder
+  };
+
+public:
   /// Constructor by the already stored builder in the interface
-  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(void* theBuilder);
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(void* theBuilder, const AlgoType theAlgoType = MakeShape);
+
+  /// Constructor by the builder and wire. Used for pipe builder.
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(void* theBuilder,
+                                           const std::shared_ptr<GeomAPI_Shape> theWire,
+                                           const std::shared_ptr<GeomAPI_Shape> theBaseShape);
 
   /// Returns a shape built by the shape construction algorithm
-  GEOMALGOAPI_EXPORT const std::shared_ptr<GeomAPI_Shape>  shape() const;
+  GEOMALGOAPI_EXPORT virtual const std::shared_ptr<GeomAPI_Shape> shape() const;
 
   /// Returns the list of shapes generated from the shape \a theShape
   GEOMALGOAPI_EXPORT virtual void generated(
@@ -35,12 +46,17 @@ public:
   GEOMALGOAPI_EXPORT virtual void modified(
     const std::shared_ptr<GeomAPI_Shape> theShape, ListOfShape& theHistory);
 
-  /// Returns whether the shape is an edge
+  /// Returns whether the shape is deleted
   GEOMALGOAPI_EXPORT virtual bool isDeleted(const std::shared_ptr<GeomAPI_Shape> theShape);
 
-  protected:
-  /// The resulting shape
-       std::shared_ptr<GeomAPI_Shape> myShape;
+protected:
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape(){};
+
+protected:
+  GeomAlgoAPI_MakeShape::AlgoType myAlgoType; ///< Type of make shape algo.
+  std::shared_ptr<GeomAPI_Shape> myShape; ///< Resulting shape.
+  std::shared_ptr<GeomAPI_Shape> myWire; ///< Wire for pipe algo.
+  std::shared_ptr<GeomAPI_Shape> myBaseShape; ///< Base shape of algo.
 };
 
 typedef std::list<std::shared_ptr<GeomAlgoAPI_MakeShape> > ListOfMakeShape;