X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_BSplineOperation.cxx;h=5b0d4b70b6ae3e10e1ef06fae62c251485c2b4e2;hb=c0d628b2e1f42a693a91c1054f42dcfd36a054e5;hp=f07d10174fdd6cb4edefefea321feafcf1ad6492;hpb=2cf9e838e652ae811d9b3931914771ad1836c6b8;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_BSplineOperation.cxx b/src/HYDROData/HYDROData_BSplineOperation.cxx index f07d1017..5b0d4b70 100644 --- a/src/HYDROData/HYDROData_BSplineOperation.cxx +++ b/src/HYDROData/HYDROData_BSplineOperation.cxx @@ -17,16 +17,14 @@ // #include - -#include - -#include #include #include - +#include +#include #include +#include -HYDROData_BSplineOperation::HYDROData_BSplineOperation( +Handle(Geom_BSplineCurve) HYDROData_BSplineOperation::ComputeCurve( const NCollection_Sequence& thePoints, const bool theIsClosed, const double theTolerance ) @@ -56,18 +54,20 @@ HYDROData_BSplineOperation::HYDROData_BSplineOperation( } // compute BSpline - GeomAPI_Interpolate aGBC( aHCurvePoints, theIsClosed, gp::Resolution() ); - aGBC.Perform(); - if ( aGBC.IsDone() ) - myCurve = aGBC.Curve(); + Handle(Geom_BSplineCurve) aBSpline; + if( CurveCreator_Utils::constructBSpline( aHCurvePoints, theIsClosed, aBSpline ) ) + return aBSpline; + else + return Handle(Geom_BSplineCurve)(); } -void HYDROData_BSplineOperation::ComputePath( QPainterPath& thePath ) const +void HYDROData_BSplineOperation::ComputePath( const Handle(Geom_BSplineCurve)& theCurve, + QPainterPath& thePath ) { - if ( myCurve.IsNull() ) // returns an empty Path if original curve is invalid + if ( theCurve.IsNull() ) // returns an empty Path if original curve is invalid return; - GeomConvert_BSplineCurveToBezierCurve aConverter(myCurve); + GeomConvert_BSplineCurveToBezierCurve aConverter(theCurve); int a, aNumArcs = aConverter.NbArcs(); for(a = 1; a <= aNumArcs; a++) {