#include <SUIT_ViewWindow.h>
#include <AIS_InteractiveObject.hxx>
+#include <Geom_Curve.hxx>
+#include <V3d_View.hxx>
+#include <gp_Pnt.hxx>
+
class OCCViewer_Viewer;
class QAction;
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,
};
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 );
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<int>& thePoints );
- void setSelectedPonts( const int theSectionId, const QList<int>& thePoints = QList<int>() );
+ 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<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;
int mySection;
int myPointNum;
bool myDragStarted;
- QList<int> myDragPoints;
QPoint myDragStartPosition;
+ int myDragInteractionStyle;
+ SectionToPointList myDragPoints;
+ bool myDragged;
QByteArray myGuiState;
};