From 5a7f3687b5f4342d1cdce198de0e01e6558d1db4 Mon Sep 17 00:00:00 2001 From: asl Date: Wed, 7 Sep 2016 11:59:11 +0300 Subject: [PATCH] container for altitude points is replaced to vector --- src/HYDROData/HYDROData_Bathymetry.cxx | 161 +++++++++--------- src/HYDROData/HYDROData_Bathymetry.h | 11 +- src/HYDROData/HYDROData_DTM.h | 3 +- src/HYDROData/HYDROData_Document.cxx | 5 + src/HYDROData/HYDROData_Document.h | 1 + src/HYDROData/HYDROData_ShapeFile.cxx | 6 +- src/HYDROData/HYDROData_SinusX.cxx | 18 +- src/HYDROGUI/HYDROGUI_ShapeBathymetry.cxx | 6 +- src/HYDROGUI/HYDROGUI_VTKPrsBathymetry.cxx | 8 +- src/HYDRO_tests/test_HYDROData_Bathymetry.cxx | 6 +- 10 files changed, 128 insertions(+), 97 deletions(-) diff --git a/src/HYDROData/HYDROData_Bathymetry.cxx b/src/HYDROData/HYDROData_Bathymetry.cxx index 22b00788..19a11e70 100644 --- a/src/HYDROData/HYDROData_Bathymetry.cxx +++ b/src/HYDROData/HYDROData_Bathymetry.cxx @@ -56,6 +56,8 @@ #define _DEVDEBUG_ #include "HYDRO_trace.hxx" +const int BLOCK_SIZE = 1000; + IMPLEMENT_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Bathymetry, HYDROData_IAltitudeObject) @@ -97,25 +99,25 @@ QStringList HYDROData_Bathymetry::DumpToPython( const QString& thePyScriptPath, return aResList; } -void HYDROData_Bathymetry::SetAltitudePoints( const AltitudePoints& thePoints ) +void HYDROData_Bathymetry::SetAltitudePoints( const HYDROData_Bathymetry::AltitudePoints& thePoints ) { RemoveAltitudePoints(); - if ( thePoints.IsEmpty() ) + if ( thePoints.empty() ) return; // Save coordinates Handle(TDataStd_RealArray) aCoordsArray = - TDataStd_RealArray::Set( myLab.FindChild( DataTag_AltitudePoints ), 0, thePoints.Length() * 3 - 1 ); + TDataStd_RealArray::Set( myLab.FindChild( DataTag_AltitudePoints ), 0, thePoints.size() * 3 - 1 ); - AltitudePoints::Iterator anIter( thePoints ); - for ( int i = 0 ; anIter.More(); ++i, anIter.Next() ) + HYDROData_Bathymetry::AltitudePoints::const_iterator anIter = thePoints.begin(), aLast = thePoints.end(); + for ( int i = 0 ; anIter!=aLast; ++i, ++anIter ) { - const AltitudePoint& aPoint = anIter.Value(); + const HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter; - aCoordsArray->SetValue( i * 3, aPoint.X() ); - aCoordsArray->SetValue( i * 3 + 1, aPoint.Y() ); - aCoordsArray->SetValue( i * 3 + 2, aPoint.Z() ); + aCoordsArray->SetValue( i * 3, aPoint.X ); + aCoordsArray->SetValue( i * 3 + 1, aPoint.Y ); + aCoordsArray->SetValue( i * 3 + 2, aPoint.Z ); } Changed( Geom_Z ); @@ -123,7 +125,7 @@ void HYDROData_Bathymetry::SetAltitudePoints( const AltitudePoints& thePoints ) HYDROData_Bathymetry::AltitudePoints HYDROData_Bathymetry::GetAltitudePoints(bool IsConvertToGlobal) const { - AltitudePoints aPoints; + HYDROData_Bathymetry::AltitudePoints aPoints; TDF_Label aLabel = myLab.FindChild( DataTag_AltitudePoints, false ); if ( aLabel.IsNull() ) @@ -134,19 +136,21 @@ HYDROData_Bathymetry::AltitudePoints HYDROData_Bathymetry::GetAltitudePoints(boo return aPoints; Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( myLab ); + int q = ( aCoordsArray->Upper() - aCoordsArray->Lower() + 1 ) / 3; + aPoints.reserve( q ); for ( int i = aCoordsArray->Lower(), n = aCoordsArray->Upper(); i <= n; ) { if ( i + 3 > n + 1 ) break; - AltitudePoint aPoint; - aPoint.SetX( aCoordsArray->Value( i++ ) ); - aPoint.SetY( aCoordsArray->Value( i++ ) ); - aPoint.SetZ( aCoordsArray->Value( i++ ) ); + HYDROData_Bathymetry::AltitudePoint aPoint; + aPoint.X = aCoordsArray->Value( i++ ); + aPoint.Y = aCoordsArray->Value( i++ ); + aPoint.Z = aCoordsArray->Value( i++ ); if( IsConvertToGlobal ) - aDoc->Transform( aPoint, false ); - aPoints.Append( aPoint ); + aDoc->Transform( aPoint.X, aPoint.Y, aPoint.Z, false ); + aPoints.push_back( aPoint ); } return aPoints; @@ -256,57 +260,57 @@ void HYDROData_Bathymetry::RemoveAltitudePoints() } } -void interpolateAltitudeForPoints( const gp_XY& thePoint, +void interpolateAltitudeForPoints( const gp_XY& thePoint, const HYDROData_Bathymetry::AltitudePoint& theFirstPoint, const HYDROData_Bathymetry::AltitudePoint& theSecPoint, HYDROData_Bathymetry::AltitudePoint& theResPoint, - const bool& theIsVertical ) + const bool& theIsVertical ) { double aCoordX = thePoint.X(); double aCoordY = thePoint.Y(); if ( theIsVertical ) { - aCoordX = theFirstPoint.X(); + aCoordX = theFirstPoint.X; - if ( !ValuesEquals( theFirstPoint.X(), theSecPoint.X() ) ) + if ( !ValuesEquals( theFirstPoint.X, theSecPoint.X ) ) { // Recalculate X coordinate by equation of line from two points - aCoordX = ( ( ( thePoint.Y() - theFirstPoint.Y() ) * ( theSecPoint.X() - theFirstPoint.X() ) ) / - ( theSecPoint.Y() - theFirstPoint.Y() ) ) + theFirstPoint.X(); + aCoordX = ( ( ( thePoint.Y() - theFirstPoint.Y ) * ( theSecPoint.X - theFirstPoint.X ) ) / + ( theSecPoint.Y - theFirstPoint.Y ) ) + theFirstPoint.X; } } else { - aCoordY = theFirstPoint.Y(); + aCoordY = theFirstPoint.Y; - if ( !ValuesEquals( theFirstPoint.Y(), theSecPoint.Y() ) ) + if ( !ValuesEquals( theFirstPoint.Y, theSecPoint.Y ) ) { // Recalculate y by equation of line from two points - aCoordY = ( ( ( thePoint.X() - theFirstPoint.X() ) * ( theSecPoint.Y() - theFirstPoint.Y() ) ) / - ( theSecPoint.X() - theFirstPoint.X() ) ) + theFirstPoint.Y(); + aCoordY = ( ( ( thePoint.X() - theFirstPoint.X ) * ( theSecPoint.Y - theFirstPoint.Y ) ) / + ( theSecPoint.X - theFirstPoint.X ) ) + theFirstPoint.Y; } } - theResPoint.SetX( aCoordX ); - theResPoint.SetY( aCoordY ); + theResPoint.X = aCoordX; + theResPoint.Y = aCoordY; // Calculate coefficient for interpolation - double aLength = Sqrt( Pow( theSecPoint.Y() - theFirstPoint.Y(), 2 ) + - Pow( theSecPoint.X() - theFirstPoint.X(), 2 ) ); + double aLength = Sqrt( Pow( theSecPoint.Y - theFirstPoint.Y, 2 ) + + Pow( theSecPoint.X - theFirstPoint.X, 2 ) ); double aInterCoeff = 0; if ( aLength != 0 ) - aInterCoeff = ( theSecPoint.Z() - theFirstPoint.Z() ) / aLength; + aInterCoeff = ( theSecPoint.Z - theFirstPoint.Z ) / aLength; - double aNewLength = Sqrt( Pow( theResPoint.Y() - theFirstPoint.Y(), 2 ) + - Pow( theResPoint.X() - theFirstPoint.X(), 2 ) ); + double aNewLength = Sqrt( Pow( theResPoint.Y - theFirstPoint.Y, 2 ) + + Pow( theResPoint.X - theFirstPoint.X, 2 ) ); // Calculate interpolated value - double aResVal = theFirstPoint.Z() + aInterCoeff * aNewLength; + double aResVal = theFirstPoint.Z + aInterCoeff * aNewLength; - theResPoint.SetZ( aResVal ); + theResPoint.Z = aResVal; } #ifndef LIGHT_MODE bool interpolZtriangle(const gp_XY& point, vtkPolyData* delaunay2D, vtkIdList* triangle, double& z) @@ -462,15 +466,15 @@ void HYDROData_Bathymetry::SetAltitudesInverted( const bool theIsInverted, return; // Update altitude points - AltitudePoints anAltitudePoints = GetAltitudePoints(); - if ( anAltitudePoints.IsEmpty() ) + HYDROData_Bathymetry::AltitudePoints anAltitudePoints = GetAltitudePoints(); + if ( anAltitudePoints.empty() ) return; - AltitudePoints::Iterator anIter( anAltitudePoints ); - for ( ; anIter.More(); anIter.Next() ) + HYDROData_Bathymetry::AltitudePoints::iterator anIter = anAltitudePoints.begin(), aLast = anAltitudePoints.end(); + for ( ; anIter!=aLast; ++anIter ) { - AltitudePoint& aPoint = anIter.ChangeValue(); - aPoint.SetZ( aPoint.Z() * -1 ); + HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter; + aPoint.Z *= -1; } SetAltitudePoints( anAltitudePoints ); @@ -502,7 +506,7 @@ bool HYDROData_Bathymetry::ImportFromFile( const TCollection_AsciiString& theFil QString aFileSuf = QFileInfo( aFile ).suffix().toLower(); - AltitudePoints aPoints; + HYDROData_Bathymetry::AltitudePoints aPoints; // Try to import the file if ( aFileSuf == "xyz" ) @@ -516,11 +520,11 @@ bool HYDROData_Bathymetry::ImportFromFile( const TCollection_AsciiString& theFil // Convert from global to local CS Handle_HYDROData_Document aDoc = HYDROData_Document::Document( myLab ); - AltitudePoints::Iterator anIter( aPoints ); - for ( ; anIter.More(); anIter.Next() ) + HYDROData_Bathymetry::AltitudePoints::iterator anIter = aPoints.begin(), aLast = aPoints.end(); + for ( ; anIter!=aLast; ++anIter ) { - AltitudePoint& aPoint = anIter.ChangeValue(); - aDoc->Transform( aPoint, true ); + HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter; + aDoc->Transform( aPoint.X, aPoint.Y, aPoint.Z, true ); } if ( aRes ) @@ -530,11 +534,11 @@ bool HYDROData_Bathymetry::ImportFromFile( const TCollection_AsciiString& theFil SetAltitudePoints( aPoints ); } - return aRes && !aPoints.IsEmpty(); + return aRes && !aPoints.empty(); } bool HYDROData_Bathymetry::importFromXYZFile( QFile& theFile, - AltitudePoints& thePoints ) const + HYDROData_Bathymetry::AltitudePoints& thePoints ) const { if ( !theFile.isOpen() ) return false; @@ -560,7 +564,7 @@ bool HYDROData_Bathymetry::importFromXYZFile( QFile& theFile, if ( aValues.length() < 3 ) return false; - AltitudePoint aPoint; + HYDROData_Bathymetry::AltitudePoint aPoint; QString anX = aValues.value( 0 ); QString anY = aValues.value( 1 ); @@ -568,23 +572,26 @@ bool HYDROData_Bathymetry::importFromXYZFile( QFile& theFile, bool isXOk = false, isYOk = false, isZOk = false; - aPoint.SetX( anX.toDouble( &isXOk ) ); - aPoint.SetY( anY.toDouble( &isYOk ) ); - aPoint.SetZ( aZ.toDouble( &isZOk ) ); + aPoint.X = anX.toDouble( &isXOk ); + aPoint.Y = anY.toDouble( &isYOk ); + aPoint.Z = aZ.toDouble( &isZOk ); if ( !isXOk || !isYOk || !isZOk ) return false; - if ( HYDROData_Tool::IsNan( aPoint.X() ) || HYDROData_Tool::IsInf( aPoint.X() ) || - HYDROData_Tool::IsNan( aPoint.Y() ) || HYDROData_Tool::IsInf( aPoint.Y() ) || - HYDROData_Tool::IsNan( aPoint.Z() ) || HYDROData_Tool::IsInf( aPoint.Z() ) ) + if ( HYDROData_Tool::IsNan( aPoint.X ) || HYDROData_Tool::IsInf( aPoint.X ) || + HYDROData_Tool::IsNan( aPoint.Y ) || HYDROData_Tool::IsInf( aPoint.Y ) || + HYDROData_Tool::IsNan( aPoint.Z ) || HYDROData_Tool::IsInf( aPoint.Z ) ) return false; // Invert the z value if requested if ( anIsAltitudesInverted ) - aPoint.SetZ( -aPoint.Z() ); + aPoint.Z = -aPoint.Z; + + if( thePoints.size()>=thePoints.capacity() ) + thePoints.reserve( thePoints.size()+BLOCK_SIZE ); - thePoints.Append( aPoint ); + thePoints.push_back( aPoint ); } #ifdef _TIMER @@ -597,7 +604,7 @@ bool HYDROData_Bathymetry::importFromXYZFile( QFile& theFile, } bool HYDROData_Bathymetry::importFromASCFile( QFile& theFile, - AltitudePoints& thePoints ) const + HYDROData_Bathymetry::AltitudePoints& thePoints ) const { if ( !theFile.isOpen() ) return false; @@ -668,23 +675,23 @@ bool HYDROData_Bathymetry::importFromASCFile( QFile& theFile, { if (aStrList[j].toDouble() != aNoDataValue) { - AltitudePoint aPoint; - aPoint.SetX(anXllCorner + aCellSize*(j + 0.5)); - aPoint.SetY(anYllCorner + aCellSize*(aNRows - i + 0.5)); - aPoint.SetZ(aStrList[j].toDouble()); + HYDROData_Bathymetry::AltitudePoint aPoint; + aPoint.X = anXllCorner + aCellSize*(j + 0.5); + aPoint.Y = anYllCorner + aCellSize*(aNRows - i + 0.5); + aPoint.Z = aStrList[j].toDouble(); if ( anIsAltitudesInverted ) - aPoint.SetZ( -aPoint.Z() ); + aPoint.Z = -aPoint.Z; - thePoints.Append(aPoint); + if( thePoints.size()>=thePoints.capacity() ) + thePoints.reserve( thePoints.size()+BLOCK_SIZE ); + thePoints.push_back(aPoint); } } i++; - } return true; - } @@ -704,14 +711,14 @@ Handle_HYDROData_PolylineXY HYDROData_Bathymetry::CreateBoundaryPolyline() const double Xmin = 0.0, Xmax = 0.0, Ymin = 0.0, Ymax = 0.0; bool isFirst = true; - AltitudePoints aPoints = GetAltitudePoints(); + HYDROData_Bathymetry::AltitudePoints aPoints = GetAltitudePoints(); - AltitudePoints::Iterator anIter( aPoints ); - for ( ; anIter.More(); anIter.Next() ) + HYDROData_Bathymetry::AltitudePoints::const_iterator anIter = aPoints.begin(), aLast = aPoints.end(); + for ( ; anIter!=aLast; ++anIter ) { - const AltitudePoint& aPoint = anIter.Value(); + const HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter; - double x = aPoint.X(), y = aPoint.Y(); + double x = aPoint.X, y = aPoint.Y; if( isFirst || xXmax ) @@ -739,12 +746,14 @@ Handle_HYDROData_PolylineXY HYDROData_Bathymetry::CreateBoundaryPolyline() const void HYDROData_Bathymetry::UpdateLocalCS( double theDx, double theDy ) { gp_XYZ aDelta( theDx, theDy, 0 ); - AltitudePoints aPoints = GetAltitudePoints(); - AltitudePoints::Iterator anIter( aPoints ); - for ( int i = 0 ; anIter.More(); ++i, anIter.Next() ) + HYDROData_Bathymetry::AltitudePoints aPoints = GetAltitudePoints(); + HYDROData_Bathymetry::AltitudePoints::iterator anIter = aPoints.begin(), aLast = aPoints.end(); + for ( int i = 0; anIter!=aLast; ++i, ++anIter ) { - AltitudePoint& aPoint = anIter.ChangeValue(); - aPoint += aDelta; + HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter; + aPoint.X += aDelta.X(); + aPoint.Y += aDelta.Y(); + aPoint.Z += aDelta.Z(); } SetAltitudePoints( aPoints ); } diff --git a/src/HYDROData/HYDROData_Bathymetry.h b/src/HYDROData/HYDROData_Bathymetry.h index 1cffaaf2..79d5581d 100644 --- a/src/HYDROData/HYDROData_Bathymetry.h +++ b/src/HYDROData/HYDROData_Bathymetry.h @@ -20,6 +20,7 @@ #define HYDROData_Bathymetry_HeaderFile #include "HYDROData_IAltitudeObject.h" +#include class QFile; class gp_XYZ; @@ -40,9 +41,13 @@ DEFINE_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject) class HYDROData_Bathymetry : public HYDROData_IAltitudeObject { public: - - typedef gp_XYZ AltitudePoint; - typedef NCollection_Sequence AltitudePoints; + struct AltitudePoint + { + double X; + double Y; + double Z; + }; + typedef std::vector AltitudePoints; protected: diff --git a/src/HYDROData/HYDROData_DTM.h b/src/HYDROData/HYDROData_DTM.h index 49303b2a..2194c861 100644 --- a/src/HYDROData/HYDROData_DTM.h +++ b/src/HYDROData/HYDROData_DTM.h @@ -85,7 +85,8 @@ protected: CurveUZ& theWidthCurve, double theTolerance = 1E-6 ); - static void CurveTo3d( const CurveUZ& theMidCurve, const CurveUZ& theWidthCurve, AltitudePoints& thePoints ); + static void CurveTo3d( const CurveUZ& theMidCurve, const CurveUZ& theWidthCurve, + AltitudePoints& thePoints ); static void Interpolate( const CurveUZ& theCurveA, const CurveUZ& theCurveB, int theNbSteps, std::vector& theInterpolation, diff --git a/src/HYDROData/HYDROData_Document.cxx b/src/HYDROData/HYDROData_Document.cxx index fd129087..3f3942a6 100644 --- a/src/HYDROData/HYDROData_Document.cxx +++ b/src/HYDROData/HYDROData_Document.cxx @@ -831,6 +831,11 @@ void HYDROData_Document::Transform( gp_XYZ& thePnt, bool IsToLocalCS ) const thePnt = gp_XYZ( X, Y, Z ); } +void HYDROData_Document::Transform( double& X, double& Y, double& Z, bool IsToLocalCS ) const +{ + Transform( X, Y, IsToLocalCS ); +} + void HYDROData_Document::Transform( gp_XY& thePnt, bool IsToLocalCS ) const { double X = thePnt.X(); diff --git a/src/HYDROData/HYDROData_Document.h b/src/HYDROData/HYDROData_Document.h index e3c7b1c8..6e164226 100644 --- a/src/HYDROData/HYDROData_Document.h +++ b/src/HYDROData/HYDROData_Document.h @@ -159,6 +159,7 @@ public: HYDRODATA_EXPORT void Transform( gp_Pnt& thePnt, bool IsToLocalCS ) const; HYDRODATA_EXPORT void Transform( gp_XYZ& thePnt, bool IsToLocalCS ) const; HYDRODATA_EXPORT void Transform( gp_XY& thePnt, bool IsToLocalCS ) const; + HYDRODATA_EXPORT void Transform( double& X, double& Y, double& Z, bool IsToLocalCS ) const; public: diff --git a/src/HYDROData/HYDROData_ShapeFile.cxx b/src/HYDROData/HYDROData_ShapeFile.cxx index 21076836..a66bc81b 100644 --- a/src/HYDROData/HYDROData_ShapeFile.cxx +++ b/src/HYDROData/HYDROData_ShapeFile.cxx @@ -657,7 +657,11 @@ void HYDROData_ShapeFile::ReadSHPPoly3D(Handle(HYDROData_Document) theDocument, HYDROData_PolylineXY::Point aSectPoint = gp_XY(anObj->padfX[k], anObj->padfY[k]); theDocument->Transform(aSectPoint, true); aPolylineXY->AddPoint( i, aSectPoint ); - aAPoints.Append(gp_XYZ (aSectPoint.X(), aSectPoint.Y(), anObj->padfZ[k])); + HYDROData_Bathymetry::AltitudePoint p; + p.X = aSectPoint.X(); + p.Y = aSectPoint.Y(); + p.Z = anObj->padfZ[k]; + aAPoints.push_back(p); } } diff --git a/src/HYDROData/HYDROData_SinusX.cxx b/src/HYDROData/HYDROData_SinusX.cxx index 4b9dc6f4..9fcbef11 100644 --- a/src/HYDROData/HYDROData_SinusX.cxx +++ b/src/HYDROData/HYDROData_SinusX.cxx @@ -123,11 +123,17 @@ void HYDROData_SinusX::SXToHydro(Handle(HYDROData_Document) theDocument, NCollec { Handle(HYDROData_Bathymetry) aBath = Handle(HYDROData_Bathymetry)::DownCast( theDocument->CreateObject( KIND_BATHYMETRY ) ); HYDROData_Bathymetry::AltitudePoints aAPoints; - for (size_t j = 0; j < myCurveBlocks[i].myXYZPoints.size(); j++) + size_t n = myCurveBlocks[i].myXYZPoints.size(); + aAPoints.reserve( n ); + for (size_t j = 0; j < n; j++) { gp_XYZ aLocalPoint = gp_XYZ (myCurveBlocks[i].myXYZPoints[j]); theDocument->Transform(aLocalPoint, true); - aAPoints.Append(aLocalPoint); + HYDROData_Bathymetry::AltitudePoint p; + p.X = aLocalPoint.X(); + p.Y = aLocalPoint.Y(); + p.Z = aLocalPoint.Z(); + aAPoints.push_back(p); } aBath->SetAltitudePoints(aAPoints); @@ -366,10 +372,10 @@ void HYDROData_SinusX::HydroToSX(QFile& theFile, const NCollection_SequenceGetName() << "\n"; aTextStream << "CP 0 0\n"; aTextStream << "CP 0\n"; - for (int j = anXYZPoints.Lower(); j <= anXYZPoints.Upper(); j++) - aTextStream << " " << QString::number(anXYZPoints(j).X(), 'f', 3) - << " " << QString::number(anXYZPoints(j).Y(), 'f', 3) - << " " << QString::number(anXYZPoints(j).Z(), 'f', 3) << "\n"; + for (size_t j = 0, m = anXYZPoints.size(); j < m; j++) + aTextStream << " " << QString::number(anXYZPoints[j].X, 'f', 3) + << " " << QString::number(anXYZPoints[j].Y, 'f', 3) + << " " << QString::number(anXYZPoints[j].Z, 'f', 3) << "\n"; } else if (anEnt->IsKind( STANDARD_TYPE(HYDROData_PolylineXY) )) { diff --git a/src/HYDROGUI/HYDROGUI_ShapeBathymetry.cxx b/src/HYDROGUI/HYDROGUI_ShapeBathymetry.cxx index fd8158e5..9835e1aa 100644 --- a/src/HYDROGUI/HYDROGUI_ShapeBathymetry.cxx +++ b/src/HYDROGUI/HYDROGUI_ShapeBathymetry.cxx @@ -68,14 +68,14 @@ Handle_AIS_InteractiveObject HYDROGUI_ShapeBathymetry::createShape() const aPntCloud->Attributes()->SetPointAspect (new Prs3d_PointAspect (Aspect_TOM_POINT, Quantity_NOC_WHITE, 2.0)); const HYDROData_Bathymetry::AltitudePoints& aBathPoints = aBath->GetAltitudePoints(); - int aLower = aBathPoints.Lower(); - int anUpper = aBathPoints.Upper(); + int aLower = 0; + int anUpper = (int)aBathPoints.size()-1; HYDROGUI_ShapeBathymetry* aThat = const_cast( this ); aThat->myCoords = new TColgp_HArray1OfPnt( aLower, anUpper ); aThat->myColors = new Quantity_HArray1OfColor( aLower, anUpper ); for( int i=aLower; i<=anUpper; i++ ) - aThat->myCoords->SetValue( i, aBathPoints.Value( i ) ); + aThat->myCoords->SetValue( i, gp_Pnt( aBathPoints[i].X, aBathPoints[i].Y, aBathPoints[i].Z ) ); return aPntCloud; } diff --git a/src/HYDROGUI/HYDROGUI_VTKPrsBathymetry.cxx b/src/HYDROGUI/HYDROGUI_VTKPrsBathymetry.cxx index 8b6103c5..08f6ef08 100644 --- a/src/HYDROGUI/HYDROGUI_VTKPrsBathymetry.cxx +++ b/src/HYDROGUI/HYDROGUI_VTKPrsBathymetry.cxx @@ -71,7 +71,7 @@ void HYDROGUI_VTKPrsBathymetry::compute() if ( !aBathymetry.IsNull() ) { HYDROData_Bathymetry::AltitudePoints anAltPoints = aBathymetry->GetAltitudePoints(); - int aNbPoints = anAltPoints.Length(); + int aNbPoints = anAltPoints.size(); HYDROData_Bathymetry::AltitudePoint anAltPnt; vtkPoints* aPoints = vtkPoints::New(); @@ -89,13 +89,13 @@ void HYDROGUI_VTKPrsBathymetry::compute() int anInvalidZ = InvalidZValue(); for (int i = 1; i <= aNbPoints; i++ ) { - anAltPnt = anAltPoints.Value( i ); - aZ = anAltPnt.Z(); + anAltPnt = anAltPoints[i]; + aZ = anAltPnt.Z; if ( ValuesLessEquals( aZ, anInvalidZ ) ) { aZ = Z_MAX; // If Z value is invalid then use Z_MAX } - aPoints->InsertPoint( i - 1, anAltPnt.X(), anAltPnt.Y(), aZ ); + aPoints->InsertPoint( i - 1, anAltPnt.X, anAltPnt.Y, aZ ); aVertex->GetPointIds()->SetId( 0, i - 1 ); aVertexGrid->InsertNextCell( aVertex->GetCellType(), aVertex->GetPointIds()); aZValues->InsertNextValue( aZ ); diff --git a/src/HYDRO_tests/test_HYDROData_Bathymetry.cxx b/src/HYDRO_tests/test_HYDROData_Bathymetry.cxx index 4a25258f..27ab51a4 100644 --- a/src/HYDRO_tests/test_HYDROData_Bathymetry.cxx +++ b/src/HYDRO_tests/test_HYDROData_Bathymetry.cxx @@ -128,7 +128,7 @@ void test_HYDROData_Bathymetry::testFileImport() CPPUNIT_ASSERT( aBathymetry->ImportFromFile( aFileName.toStdString().c_str() ) ); HYDROData_Bathymetry::AltitudePoints anAltitudePoints = aBathymetry->GetAltitudePoints(); - CPPUNIT_ASSERT_EQUAL( 2300, anAltitudePoints.Length() ); + CPPUNIT_ASSERT_EQUAL( 2300, (int)anAltitudePoints.size() ); gp_XY aTestPoint( 1, 1 ); double anAltitude = aBathymetry->GetAltitudeForPoint( aTestPoint, 1 ); @@ -174,7 +174,7 @@ void test_HYDROData_Bathymetry::testCopy() CPPUNIT_ASSERT( aBathymetry1->ImportFromFile( aFileName.toStdString().c_str() ) ); HYDROData_Bathymetry::AltitudePoints anAltitudePoints = aBathymetry1->GetAltitudePoints(); - CPPUNIT_ASSERT_EQUAL( 2300, anAltitudePoints.Length() ); + CPPUNIT_ASSERT_EQUAL( 2300, (int)anAltitudePoints.size() ); } Handle(HYDROData_Bathymetry) aBathymetry2 = @@ -185,7 +185,7 @@ void test_HYDROData_Bathymetry::testCopy() if ( anIsFileCreated ) { HYDROData_Bathymetry::AltitudePoints anAltitudePoints = aBathymetry2->GetAltitudePoints(); - CPPUNIT_ASSERT_EQUAL( 2300, anAltitudePoints.Length() ); + CPPUNIT_ASSERT_EQUAL( 2300, (int)anAltitudePoints.size() ); } aDoc->Close(); -- 2.39.2