#include "CurveCreator_TableView.h"
#include "CurveCreator_UtilsICurve.hxx"
+#include <gp_Pnt.hxx>
+
#include <QTableWidget>
#include <QTableWidgetItem>
myCurve = theCurve;
}
-void CurveCreator_TableView::addLocalPointToTable( const double theX, const double theY )
+void CurveCreator_TableView::addLocalPointToTable(
+ const CurveCreator_ICurve::SectionToPoint& theSToPoint )
{
- CurveCreator_ICurve::SectionToPointList aPoints;
- CurveCreator_UtilsICurve::findSectionsToPoints( myCurve, theX, theY, aPoints );
-
- CurveCreator_ICurve::SectionToPointList aSkipList;
- // table could not contain two equal value rows
int aRowId = rowCount();
- double aCurrentX, aCurrentY;
- int aSectionId, aPointId;
- CurveCreator_ICurve::SectionToPoint aPoint;
- for ( int i = 0; i < aRowId; i++ ) {
- aCurrentX = item( i, 2 )->data( Qt::UserRole ).toDouble();
- aCurrentY = item( i, 3 )->data( Qt::UserRole ).toDouble();
- if ( fabs( aCurrentX - theX ) < LOCAL_SELECTION_TOLERANCE &&
- fabs( aCurrentY - theY ) < LOCAL_SELECTION_TOLERANCE ) {
- aPoint = std::make_pair<int, int>( getSectionId( i ), getPointId( i ) );
- if ( !CurveCreator_UtilsICurve::contains( aSkipList, aPoint ) )
- aSkipList.push_back( aPoint );
- }
- }
- if ( aSkipList.size() == aPoints.size() )
+ int anISection = theSToPoint.first;
+ int anIPoint = theSToPoint.second;
+ bool isFoundPoint = false;
+ for ( int i = 0; i < aRowId && !isFoundPoint; i++ )
+ isFoundPoint = getSectionId( i ) == anISection &&
+ getPointId( i ) == anIPoint;
+ if ( isFoundPoint )
return;
+ setRowCount( aRowId+1 );
+
QTableWidgetItem* anItem;
- CurveCreator_ICurve::SectionToPointList::const_iterator anIt = aPoints.begin(),
- aLast = aPoints.end();
- for ( ; anIt != aLast; anIt++ ) {
- aPoint = *anIt;
- if ( CurveCreator_UtilsICurve::contains( aSkipList, aPoint ) )
- continue;
-
- setRowCount( aRowId+1 );
- aSectionId = aPoint.first;
- aPointId = aPoint.second;
-
- anItem = new QTableWidgetItem( myCurve->getSectionName( aSectionId ).c_str() );
- anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
- anItem->setData( Qt::UserRole, aSectionId );
- setItem( aRowId, 0, anItem );
-
- anItem = new QTableWidgetItem( QString::number( aPointId + 1 ) );
- anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
- anItem->setData( Qt::UserRole, aPointId );
- setItem( aRowId, 1, anItem );
-
- anItem = new QTableWidgetItem( QString::number( theX, 'f', 2 ) );
- anItem->setData( Qt::UserRole, theX );
- setItem( aRowId, 2, anItem );
-
- anItem = new QTableWidgetItem( QString::number( theY, 'f', 2 ) );
- anItem->setData( Qt::UserRole, theY );
- setItem( aRowId, 3, anItem );
- }
+ anItem = new QTableWidgetItem( myCurve->getSectionName( anISection ).c_str() );
+ anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
+ anItem->setData( Qt::UserRole, anISection );
+ setItem( aRowId, 0, anItem );
+
+ anItem = new QTableWidgetItem( QString::number( anIPoint + 1 ) );
+ anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
+ anItem->setData( Qt::UserRole, anIPoint );
+ setItem( aRowId, 1, anItem );
+
+ gp_Pnt aPoint;
+ CurveCreator_UtilsICurve::getPoint( myCurve, anISection, anIPoint, aPoint );
+
+ anItem = new QTableWidgetItem( QString::number( aPoint.X(), 'f', 2 ) );
+ anItem->setData( Qt::UserRole, aPoint.X() );
+ setItem( aRowId, 2, anItem );
+
+ anItem = new QTableWidgetItem( QString::number( aPoint.Y(), 'f', 2 ) );
+ anItem->setData( Qt::UserRole, aPoint.Y() );
+ setItem( aRowId, 3, anItem );
}
int CurveCreator_TableView::getSectionId( const int theRowId ) const