X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Widget.h;h=03cfd0948a1ff4c188eab8a1b95b5a038ce82d3e;hb=1f844eb06506171b54541cc0caf1a0c237fe0dbf;hp=bbc58f69476e2420b5c202a6229ef57848b1ae59;hpb=7e825ec456c9331ef0df1cb59865cc55f0d8516a;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Widget.h b/src/HYDROCurveCreator/CurveCreator_Widget.h index bbc58f69..03cfd094 100644 --- a/src/HYDROCurveCreator/CurveCreator_Widget.h +++ b/src/HYDROCurveCreator/CurveCreator_Widget.h @@ -30,6 +30,10 @@ #include #include +#include +#include +#include + class OCCViewer_Viewer; class QAction; @@ -98,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, @@ -120,12 +124,15 @@ protected: }; enum ActionMode { + NoneMode, AdditionMode, ModificationMode, - DetectionMode, - NoneMode + 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 ); @@ -136,25 +143,42 @@ private: void removeSection(); void removePoint(); - bool insertPointToSelectedSegment( const int theXPosition, + void insertPointToSelectedSegment( const int theXPosition, const int theYPosition ); + void moveSelectedPoints( const int theXPosition, const int theYPosition ); void updateLocalPointView(); - void setLocalPointContext( const bool theOpen ); + void setLocalPointContext( const bool theOpen, const bool isUpdateTable = false ); void addLocalPointToTable( const double theX, const double theY ); void setDragStarted( const bool theState, const QPoint& thePoint = QPoint() ); - void getSelectedPonts( const int theSectionId, QList& thePoints ); - void setSelectedPonts( const int theSectionId, const QList& thePoints = QList() ); + void getSelectedPonts( SectionToPointList& thePoints ); + void setSelectedPonts( const SectionToPointList& = SectionToPointList() ); + 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 findSectionsToPoints( const double theX, const double theY, + SectionToPointList& thePoints ); + void convert( const SectionToPointList& thePoints, + QMap >& 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 myActionMap; @@ -166,8 +190,10 @@ private: int mySection; int myPointNum; bool myDragStarted; - QList myDragPoints; QPoint myDragStartPosition; + int myDragInteractionStyle; + SectionToPointList myDragPoints; + bool myDragged; QByteArray myGuiState; };