Salome HOME
Using stl container instead of Qt.
[modules/hydro.git] / src / HYDROCurveCreator / CurveCreator_Widget.h
index f17cf3d17f567238a4f2f6fd6798965141e3740e..03cfd0948a1ff4c188eab8a1b95b5a038ce82d3e 100644 (file)
@@ -102,7 +102,7 @@ protected slots:
   void     onMouseRelease( SUIT_ViewWindow*, QMouseEvent* theEvent );
   void     onMouseMove( SUIT_ViewWindow*, QMouseEvent* theEvent );
 
-  void     onLocalPointChanged( int theRow, int theColumn );
+  void     onCellChanged( int theRow, int theColumn );
 
 protected:
   enum ActionId{ UNDO_ID, 
@@ -130,6 +130,9 @@ protected:
     DetectionMode
   };
 
+  typedef std::pair< int, int > SectionToPoint;
+  typedef std::deque< SectionToPoint > SectionToPointList;
+
 private:
   QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage,
                          const QString& theToolTip, const QKeySequence& theShortcut );
@@ -149,24 +152,34 @@ private:
 
   void setDragStarted( const bool theState, const QPoint& thePoint = QPoint() );
 
-  void getSelectedPonts( const int theSectionId, QList<int>& thePoints );
-  void setSelectedPonts( const int theSectionId, const QList<int>& thePoints = QList<int>() );
+  void getSelectedPonts( SectionToPointList& thePoints );
+  void setSelectedPonts( const SectionToPointList& = SectionToPointList() );
 
-  void startCurveModification( QList<int>& thePoints, const bool theFillPoints = true );
-  void finishCurveModification( const QList<int>& thePoints );
+  void startCurveModification( SectionToPointList& thePoints,
+                               const bool theFillPoints = true );
+  void finishCurveModification( const SectionToPointList& thePoints = SectionToPointList() );
 
   // curve algorithm
   int  findLocalPointIndex( int theSectionId, float theX, float theY );
-  void findSections( int thePointId, QList<int>& theSections );
+  void findSectionsToPoints( const double theX, const double theY,
+                             SectionToPointList& thePoints );
+  void convert( const SectionToPointList& thePoints,
+                QMap<int, QList<int> >& theConvPoints );
 
   // OCC algorithm
   bool pointOnObject( Handle(AIS_InteractiveObject) theObject,
                       const int theX, const int theY,
-                      gp_Pnt& thePoint, int& thePoint1, int& thePoint2 );
+                      gp_Pnt& thePoint, gp_Pnt& thePoint1, gp_Pnt& thePoint2 );
   bool hasProjectPointOnCurve( const int theX, const int theY,
                                const Handle(Geom_Curve)& theCurve,
                                Standard_Real& theParameter );
 
+  // local point view table methods
+  int getSectionId( const int theRowId ) const;
+  int getPointId( const int theRowId ) const;
+
+  bool contains( const SectionToPointList& theList, const SectionToPoint& theValue ) const;
+
 private:
   QMap<ActionId, QAction*>    myActionMap;
   CurveCreator_ICurve*         myCurve;
@@ -179,7 +192,7 @@ private:
   bool                        myDragStarted;
   QPoint                      myDragStartPosition;
   int                         myDragInteractionStyle;
-  QList<int>                  myDragPoints;
+  SectionToPointList          myDragPoints;
   bool                        myDragged;
   QByteArray                  myGuiState;
 };