X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Bathymetry.cxx;h=95c0affdc188d0ca97b917e6d41ead08819fb8fd;hb=deed826b2d6c39ba2ed410108cdf54d64cded321;hp=29ec179c98d3bd39f68ad33b8506f889d816631e;hpb=84f8b4a57d3cdad820bc1333a5066699cd1c8ae3;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Bathymetry.cxx b/src/HYDROData/HYDROData_Bathymetry.cxx index 29ec179c..95c0affd 100644 --- a/src/HYDROData/HYDROData_Bathymetry.cxx +++ b/src/HYDROData/HYDROData_Bathymetry.cxx @@ -15,15 +15,14 @@ #include #include -#define INVALID_ALTITUDE_VALUE -9999.0 #define PYTHON_BATHYMETRY_ID "KIND_BATHYMETRY" -IMPLEMENT_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_Entity) -IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Bathymetry, HYDROData_Entity) +IMPLEMENT_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject) +IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Bathymetry, HYDROData_IAltitudeObject) HYDROData_Bathymetry::HYDROData_Bathymetry() -: HYDROData_Entity() +: HYDROData_IAltitudeObject() { } @@ -35,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; @@ -61,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(); @@ -97,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; @@ -174,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() ) @@ -194,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(); @@ -285,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 ] );