X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Bathymetry.cxx;h=95c0affdc188d0ca97b917e6d41ead08819fb8fd;hb=deed826b2d6c39ba2ed410108cdf54d64cded321;hp=43b2b1056a822638cd6af8667a51e792b8f80809;hpb=f529aeb00bbfafd835531128554a0006c60597c3;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Bathymetry.cxx b/src/HYDROData/HYDROData_Bathymetry.cxx index 43b2b105..95c0affd 100644 --- a/src/HYDROData/HYDROData_Bathymetry.cxx +++ b/src/HYDROData/HYDROData_Bathymetry.cxx @@ -15,14 +15,14 @@ #include #include -#define INVALID_ALTITUDE_VALUE -9999.0 #define PYTHON_BATHYMETRY_ID "KIND_BATHYMETRY" -IMPLEMENT_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_Object) -IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Bathymetry, HYDROData_Object) +IMPLEMENT_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject) +IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Bathymetry, HYDROData_IAltitudeObject) HYDROData_Bathymetry::HYDROData_Bathymetry() +: HYDROData_IAltitudeObject() { } @@ -34,7 +34,7 @@ QStringList HYDROData_Bathymetry::DumpToPython( MapOfTreatedObjects& theTreatedO { QStringList aResList; - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( this ); + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab ); if ( aDocument.IsNull() ) return aResList; @@ -60,11 +60,6 @@ QStringList HYDROData_Bathymetry::DumpToPython( MapOfTreatedObjects& theTreatedO return aResList; } -double HYDROData_Bathymetry::GetInvalidAltitude() -{ - return INVALID_ALTITUDE_VALUE; -} - void HYDROData_Bathymetry::SetAltitudePoints( const AltitudePoints& thePoints ) { RemoveAltitudePoints(); @@ -96,11 +91,9 @@ HYDROData_Bathymetry::AltitudePoints HYDROData_Bathymetry::GetAltitudePoints() c if ( !myLab.FindChild( DataTag_AltitudePoints ).FindAttribute( TDataStd_RealArray::GetID(), aCoordsArray ) ) return aPoints; - int aLowerIdx = aCoordsArray->Lower(); - int anUpperIdx = aCoordsArray->Upper(); for ( int i = aCoordsArray->Lower(), n = aCoordsArray->Upper(); i <= n; ) { - if ( i + 3 > n ) + if ( i + 3 > n + 1 ) break; AltitudePoint aPoint; @@ -173,15 +166,9 @@ void interpolateAltitudeForPoints( const gp_XY& th theResPoint.SetZ( aResVal ); } -double HYDROData_Bathymetry::GetAltitudeForPoint( const QPointF& thePoint ) const -{ - gp_XY aGpPoint( thePoint.x(), thePoint.y() ); - return GetAltitudeForPoint( aGpPoint ); -} - double HYDROData_Bathymetry::GetAltitudeForPoint( const gp_XY& thePoint ) const { - double aResAltitude = -9999.90; + double aResAltitude = GetInvalidAltitude(); AltitudePoints anAltitudePoints = GetAltitudePoints(); if ( anAltitudePoints.isEmpty() ) @@ -193,10 +180,10 @@ double HYDROData_Bathymetry::GetAltitudeForPoint( const gp_XY& thePoint ) const // [ 0 (top-left) ] [ 1 (top-right) ] // thePoint // [ 2 (bot-left) ] [ 3 (bot-right) ] - AltitudePoint aBounds[ 4 ] = { AltitudePoint( -DBL_MAX, -DBL_MAX, INVALID_ALTITUDE_VALUE ), - AltitudePoint( DBL_MAX, -DBL_MAX, INVALID_ALTITUDE_VALUE ), - AltitudePoint( -DBL_MAX, DBL_MAX, INVALID_ALTITUDE_VALUE ), - AltitudePoint( DBL_MAX, DBL_MAX, INVALID_ALTITUDE_VALUE ) }; + AltitudePoint aBounds[ 4 ] = { AltitudePoint( -DBL_MAX, -DBL_MAX, GetInvalidAltitude() ), + AltitudePoint( DBL_MAX, -DBL_MAX, GetInvalidAltitude() ), + AltitudePoint( -DBL_MAX, DBL_MAX, GetInvalidAltitude() ), + AltitudePoint( DBL_MAX, DBL_MAX, GetInvalidAltitude() ) }; AltitudePoints::const_iterator aListItBeg = anAltitudePoints.constBegin(); AltitudePoints::const_iterator aListItEnd = anAltitudePoints.constEnd(); @@ -284,7 +271,7 @@ double HYDROData_Bathymetry::GetAltitudeForPoint( const gp_XY& thePoint ) const // Check if requested point is inside of our bounding rectangle if ( !aBoundingRect.boundingRect().contains( thePoint.X(), thePoint.Y() ) ) - return INVALID_ALTITUDE_VALUE; + return aResAltitude; // Calculate result altitude for point AltitudePoint aFirstPoint( aBounds[ 0 ] ), aSecPoint( aBounds[ 1 ] );