X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Profile.cxx;h=bcfc8fb0f816e884bc5ab8e63daa6fd24a4b7228;hb=09d10e66ba0fac5353c8d1f138055fc6fe86fb65;hp=28cccbe9418ad7daa39ef004b29a149ae7a10a29;hpb=59cb079ea66fc8a85a75a24e4f7674b3fc099a17;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Profile.cxx b/src/HYDROCurveCreator/CurveCreator_Profile.cxx index 28cccbe9..bcfc8fb0 100644 --- a/src/HYDROCurveCreator/CurveCreator_Profile.cxx +++ b/src/HYDROCurveCreator/CurveCreator_Profile.cxx @@ -71,19 +71,19 @@ bool CurveCreator_Profile::clearInternal() myDisplayer->eraseAll( true ); // Delete all allocated data. - mySections[ 0 ]->myPoints.clear(); + CurveCreator_Section* aSection = getSection( 0 ); + if ( aSection ) + aSection->myPoints.clear(); return true; } -bool CurveCreator_Profile::joinInternal( const int theISectionTo, - const int theISectionFrom ) +bool CurveCreator_Profile::joinInternal( const std::list& theSections ) { return false; } -bool CurveCreator_Profile::join( const int theISectionTo, - const int theISectionFrom ) +bool CurveCreator_Profile::join( const std::list& theSections ) { return false; } @@ -133,23 +133,11 @@ bool CurveCreator_Profile::setClosed( const int theISection, return false; } -bool CurveCreator_Profile::setSectionTypeInternal( const int theISection, - const CurveCreator::SectionType theType ) -{ - return CurveCreator_Curve::setSectionTypeInternal( theISection, theType ); -} - -bool CurveCreator_Profile::setSectionType( const int theISection, - const CurveCreator::SectionType theType ) -{ - return CurveCreator_Curve::setSectionType( theISection, theType ); -} - bool CurveCreator_Profile::addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap ) { bool res = false; - CurveCreator_Section* aSection = mySections.at( 0 ); + CurveCreator_Section* aSection = getSection( 0 ); if( !aSection ) return res; @@ -179,7 +167,7 @@ bool CurveCreator_Profile::addPointsInternal( const CurveCreator::SectionsMap &t if ( !aSection->myPoints.empty() ) aC = *(aSection->myPoints.end() - 2); - if ( aSection->myPoints.empty() || aCoordU > aC ) + if ( aSection->myPoints.empty() || aCoordU >= aC ) { aSection->myPoints.push_back( aCoordU ); aSection->myPoints.push_back( aCoordZ ); @@ -223,7 +211,7 @@ bool CurveCreator_Profile::setPointInternal( const CurveCreator::SectionsMap &th } int anISection = 0; - CurveCreator_Section* aSection = mySections.at( anISection ); + CurveCreator_Section* aSection = getSection( anISection ); if( !aSection ) return aRes; @@ -261,4 +249,32 @@ void CurveCreator_Profile::convert( const CurveCreator::PosPointsList& thePoints bool CurveCreator_Profile::canPointsBeSorted() { return true; +} + +/** + * Add one point to the specified section starting from the given theIPnt index + * (or at the end of points if \a theIPnt is -1). + */ +bool CurveCreator_Profile::addPoints( const CurveCreator::Coordinates& theCoords, + const int theISection, + const int theIPnt ) +{ + int anIPnt = theIPnt; + + if ( anIPnt == - 1 && theCoords.size() > 1 ) { + CurveCreator::Coordinates aCoords; + for ( int i = 0, aNb = getNbPoints( theISection ); i < aNb; i++ ) { + aCoords = getPoint( theISection, i ); + if ( aCoords.size() < 2 ) { + continue; + } + + if ( theCoords[0] < aCoords[0] ) { + anIPnt = i; + break; + } + } + } + + return CurveCreator_Curve::addPoints( theCoords, theISection, anIPnt ); } \ No newline at end of file