Salome HOME
Bug #183: regression: polyline - unnecessary table in Additition mode.
[modules/hydro.git] / src / HYDROCurveCreator / CurveCreator_ICurve.hxx
index fd5e63d5b5e5518d999bc69487208ce82ebbba55..40696e9bebe51e741207ff1852a71f72a42c7830 100644 (file)
@@ -26,8 +26,9 @@
 #include "CurveCreator_Macro.hxx"
 #include <deque>
 #include <vector>
+#include <string>
 
-#include <AIS_InteractiveObject.hxx>
+class Handle_AIS_InteractiveObject;
 
 namespace CurveCreator
 {
@@ -57,7 +58,10 @@ namespace CurveCreator
 class CURVECREATOR_EXPORT CurveCreator_ICurve
 {
 public:
-  typedef std::vector<Handle_AIS_InteractiveObject> ListAISObjects;
+  typedef std::pair<int,int> SectionToPoint;
+  typedef std::deque<SectionToPoint> SectionToPointList;
+
+  typedef std::deque< std::pair< SectionToPoint,std::deque< float > > > SectionToPointCoordsList;
 
 public:
   /***********************************************/
@@ -146,9 +150,14 @@ public:
   virtual bool setPoint( const int theISection,
                          const int theIPnt,
                          const std::deque<float>& theNewCoords ) = 0;
+  
+  //! Set coordinates of specified points from different sections
+  virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords) = 0;
 
   //! Remove point with given id
   virtual bool removePoint( const int theISection, const int theIPnt = -1 ) = 0;
+  //! Remove several points from different sections
+  virtual bool removeSeveralPoints( const SectionToPointList &theSectionToPntIDs) = 0;
 
   //! Get coordinates of specified point
   virtual std::deque<float> getPoint( const int theISection, 
@@ -169,7 +178,12 @@ public:
   /***********************************************/
   /***       Presentation methods              ***/
   /***********************************************/
-  virtual ListAISObjects constructWire() const = 0;
+
+  virtual Handle_AIS_InteractiveObject getAISObject( const bool theNeedToBuild = false ) const = 0;
+
+protected:
+  virtual void constructAISObject() = 0;
+
 };
 
 #endif