#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::setLocalPointsToTable(
+ const CurveCreator_ICurve::SectionToPointList& thePoints )
{
- 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() )
- return;
+ setRowCount( thePoints.size() );
- QTableWidgetItem* anItem;
- CurveCreator_ICurve::SectionToPointList::const_iterator anIt = aPoints.begin(),
- aLast = aPoints.end();
+ int aRowId = 0;
+ CurveCreator_ICurve::SectionToPointList::const_iterator anIt = thePoints.begin(),
+ aLast = thePoints.end();
for ( ; anIt != aLast; anIt++ ) {
- aPoint = *anIt;
- if ( CurveCreator_UtilsICurve::contains( aSkipList, aPoint ) )
- continue;
+ CurveCreator_ICurve::SectionToPoint aSPoint = *anIt;
+ int anISection = aSPoint.first;
+ int anIPoint = aSPoint.second;
- setRowCount( aRowId+1 );
- aSectionId = aPoint.first;
- aPointId = aPoint.second;
-
- anItem = new QTableWidgetItem( myCurve->getSectionName( aSectionId ).c_str() );
+ QTableWidgetItem* anItem;
+ anItem = new QTableWidgetItem( myCurve->getSectionName( anISection ).c_str() );
anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
- anItem->setData( Qt::UserRole, aSectionId );
+ anItem->setData( Qt::UserRole, anISection );
setItem( aRowId, 0, anItem );
- anItem = new QTableWidgetItem( QString::number( aPointId + 1 ) );
+ anItem = new QTableWidgetItem( QString::number( anIPoint + 1 ) );
anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled );
- anItem->setData( Qt::UserRole, aPointId );
+ anItem->setData( Qt::UserRole, anIPoint );
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 );
+
+ gp_Pnt aPoint;
+ CurveCreator_UtilsICurve::getPoint( myCurve, anISection, anIPoint, aPoint );
+
+ anItem = item( aRowId, 2 );
+ if ( !anItem ) {
+ anItem = new QTableWidgetItem();
+ setItem( aRowId, 2, anItem );
+ }
+ anItem->setData( Qt::UserRole, aPoint.X() );
+ anItem->setData( Qt::DisplayRole, QString::number( aPoint.X(), 'f', 2 ) );
+
+ anItem = item( aRowId, 3 );
+ if ( !anItem ) {
+ anItem = new QTableWidgetItem();
+ setItem( aRowId, 3, anItem );
+ }
+ anItem->setData( Qt::UserRole, aPoint.Y() );
+ anItem->setData( Qt::DisplayRole, QString::number( aPoint.Y(), 'f', 2 ) );
+
+ aRowId++;
}
}