X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_IPolyline.cxx;h=687318cc064b4d81262b0323f33b98339e7c65e6;hb=9951c43b35cc7088888afb135b0cdfcfd8d840c6;hp=20fe2099ea3e0d96f04f8cf927a3ac8707ecde4b;hpb=deed826b2d6c39ba2ed410108cdf54d64cded321;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_IPolyline.cxx b/src/HYDROData/HYDROData_IPolyline.cxx index 20fe2099..687318cc 100755 --- a/src/HYDROData/HYDROData_IPolyline.cxx +++ b/src/HYDROData/HYDROData_IPolyline.cxx @@ -3,8 +3,16 @@ #include +#include +#include +#include #include +#include + +#include +#include + IMPLEMENT_STANDARD_HANDLE(HYDROData_IPolyline, HYDROData_Entity) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_IPolyline, HYDROData_Entity) @@ -22,6 +30,61 @@ int HYDROData_IPolyline::NbPoints( const int theSectionIndex ) const return GetPoints( theSectionIndex ).Length(); } +TopoDS_Shape HYDROData_IPolyline::getPolylineShape() const +{ + TDF_Label aShapeLabel = myLab.FindChild( DataTag_PolylineShape, false ); + if ( !aShapeLabel.IsNull() ) + { + Handle(TNaming_NamedShape) aNamedShape; + if ( aShapeLabel.FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) ) + return aNamedShape->Get(); + } + return TopoDS_Shape(); +} + +void HYDROData_IPolyline::setPolylineShape( const TopoDS_Shape& theShape ) +{ + TNaming_Builder aBuilder( myLab.FindChild( DataTag_PolylineShape ) ); + aBuilder.Generated( theShape ); +} + +void HYDROData_IPolyline::removePolylineShape() +{ + TDF_Label aShapeLabel = myLab.FindChild( DataTag_PolylineShape, false ); + if ( !aShapeLabel.IsNull() ) + aShapeLabel.ForgetAllAttributes(); +} + +void HYDROData_IPolyline::getSectionsLists( Handle(TDataStd_ExtStringList)& theNamesList, + Handle(TDataStd_IntegerList)& theTypesList, + Handle(TDataStd_BooleanList)& theClosuresList, + const bool theIsCreate ) const +{ + theNamesList.Nullify(); + theTypesList.Nullify(); + theClosuresList.Nullify(); + + TDF_Label aSectLabel = myLab.FindChild( DataTag_Sections, theIsCreate ); + if ( aSectLabel.IsNull() ) + return; + + if ( !aSectLabel.FindAttribute( TDataStd_ExtStringList::GetID(), theNamesList ) && theIsCreate ) + theNamesList = TDataStd_ExtStringList::Set( aSectLabel ); + + if ( !aSectLabel.FindAttribute( TDataStd_IntegerList::GetID(), theTypesList ) && theIsCreate ) + theTypesList = TDataStd_IntegerList::Set( aSectLabel ); + + if ( !aSectLabel.FindAttribute( TDataStd_BooleanList::GetID(), theClosuresList ) && theIsCreate ) + theClosuresList = TDataStd_BooleanList::Set( aSectLabel ); +} + +void HYDROData_IPolyline::removeSectionsLists() +{ + TDF_Label aSectsLabel = myLab.FindChild( DataTag_Sections, false ); + if ( !aSectsLabel.IsNull() ) + aSectsLabel.ForgetAllAttributes(); +} + void HYDROData_IPolyline::getPointsLists( const int theSectionIndex, Handle(TDataStd_RealList)& theListX, Handle(TDataStd_RealList)& theListY, @@ -59,7 +122,14 @@ void HYDROData_IPolyline::removePointsLists( const int theSectionIndex ) const if ( aLabel.IsNull() ) return; - TDF_Label aSectLabel = aLabel.FindChild( theSectionIndex, false ); - if ( !aSectLabel.IsNull() ) - aSectLabel.ForgetAllAttributes(); + if ( theSectionIndex < 0 ) + { + aLabel.ForgetAllAttributes(); + } + else + { + TDF_Label aSectLabel = aLabel.FindChild( theSectionIndex, false ); + if ( !aSectLabel.IsNull() ) + aSectLabel.ForgetAllAttributes(); + } }