]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Bug #205: Undo On Profile.
authormzn <mzn@opencascade.com>
Wed, 11 Dec 2013 07:58:54 +0000 (07:58 +0000)
committermzn <mzn@opencascade.com>
Wed, 11 Dec 2013 07:58:54 +0000 (07:58 +0000)
src/HYDROCurveCreator/CurveCreator_Profile.cxx
src/HYDROCurveCreator/CurveCreator_Profile.hxx

index c857fd207a3e279a77f08de5fbea74f686c97c1e..69e60486ed65e3cc66c7913f42db6a1be7b12c3c 100644 (file)
@@ -249,4 +249,32 @@ void CurveCreator_Profile::convert( const CurveCreator::PosPointsList& thePoints
 bool CurveCreator_Profile::canPointsBeSorted()
 {
   return true;
+}
+
+/**
+ *  Add one point to the specified section starting from the given theIPnt index
+ *  (or at the end of points if \a theIPnt is -1).
+ */
+bool CurveCreator_Profile::addPoints( const CurveCreator::Coordinates& theCoords,
+                                      const int theISection,
+                                      const int theIPnt )
+{
+  int anIPnt = theIPnt;
+
+  if ( anIPnt == - 1 && theCoords.size() > 1 ) {
+    CurveCreator::Coordinates aCoords;
+    for ( int i = 0, aNb = getNbPoints( theISection ); i < aNb; i++ ) {
+      aCoords = getPoint( theISection, i );
+      if ( aCoords.size() < 2 ) {
+        continue;
+      }
+
+      if ( theCoords[0] < aCoords[0] ) {
+        anIPnt = i;
+        break;
+      }
+    }
+  }
+  
+  return CurveCreator_Curve::addPoints( theCoords, theISection, anIPnt );
 }
\ No newline at end of file
index d544c87c304541f3f30a786550ee64b2455725bc..67461a42f78bb9c6bde32b24ee53797c027d1c8a 100644 (file)
@@ -110,6 +110,15 @@ public:
   //! For internal use only! Undo/Redo are not used here.
   virtual bool setPointInternal( const CurveCreator::SectionsMap &theSectionsMap );
 
+  /**
+   *  Add one point to the specified section starting from the given theIPnt index.
+   *  Contrary to CurveCreator_Curve::addPoints(...) if \a theIPnt is -1 the right index
+   *  will be calculated automatically in accordance with X coordinate value of the point.
+   */
+  virtual bool addPoints( const CurveCreator::Coordinates &theCoords,
+                          const int theISection,
+                          const int theIPnt = -1 );
+
   /**
    * Indicates whether the points can be sorted.
    */