X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Object.cxx;h=2ee9bd7ec4788fab611f7367eaebf3bf9173df72;hb=f108c7fd8c3b2dbb8c263b14456a31f8dd1d0921;hp=1be3985a854702b26b2b9339a9e2dead81fe6972;hpb=5bdd5a07050d0879edb5efdc7e009850a46c64f8;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Object.cxx b/src/HYDROData/HYDROData_Object.cxx index 1be3985a..2ee9bd7e 100644 --- a/src/HYDROData/HYDROData_Object.cxx +++ b/src/HYDROData/HYDROData_Object.cxx @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -145,7 +146,10 @@ void HYDROData_Object::SetReferenceObject( const Handle_HYDROData_Object& theObj const int theIndex ) { if ( theObj.IsNull() ) + { + RemoveReferenceObject( theTag, theIndex ); return; + } Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, true ); @@ -171,6 +175,18 @@ void HYDROData_Object::SetReferenceObject( const Handle_HYDROData_Object& theObj } } +void HYDROData_Object::SetReferenceObjects( const HYDROData_SequenceOfObjects& theObjects, + const int theTag ) +{ + ClearReferenceObjects( theTag ); + if ( theObjects.IsEmpty() ) + return; + + HYDROData_SequenceOfObjects::Iterator anIter( theObjects ); + for ( ; anIter.More(); anIter.Next() ) + AddReferenceObject( anIter.Value(), theTag ); +} + Handle(HYDROData_Object) HYDROData_Object::GetReferenceObject( const int theTag, const int theIndex ) const { @@ -226,11 +242,15 @@ void HYDROData_Object::RemoveReferenceObject( const int theTag, return; } - Handle(HYDROData_Object) aRemovedObj = GetReferenceObject( theTag, theIndex ); - if ( aRemovedObj.IsNull() ) + int anIndex = 0; + TDF_ListIteratorOfLabelList anIter( aRefs->List() ); + for ( ; anIndex != theIndex && anIter.More(); anIter.Next(), ++anIndex ); + + if ( anIndex != theIndex ) return; - aRefs->Remove( aRemovedObj->Label() ); + const TDF_Label& aRefLabel = anIter.Value(); + aRefs->Remove( aRefLabel ); } void HYDROData_Object::ClearReferenceObjects( const int theTag ) @@ -250,3 +270,77 @@ Handle(TDataStd_ReferenceList) HYDROData_Object::getReferenceList( const int the return aRefs; } + +void HYDROData_Object::SetColor( const QColor& theColor, + const int theTag ) +{ + TDF_Label aLabel = theTag == 0 ? myLab : myLab.FindChild( theTag ); + + Handle(TDataStd_IntegerArray) aColorArray; + if ( !aLabel.FindAttribute( TDataStd_IntegerArray::GetID(), aColorArray ) ) + aColorArray = TDataStd_IntegerArray::Set( aLabel, 1, 4 ); + + aColorArray->SetValue( 1, theColor.red() ); + aColorArray->SetValue( 2, theColor.green() ); + aColorArray->SetValue( 3, theColor.blue() ); + aColorArray->SetValue( 4, theColor.alpha() ); +} + +QColor HYDROData_Object::GetColor( const QColor& theDefColor, + const int theTag ) const +{ + QColor aResColor = theDefColor; + + TDF_Label aLabel = theTag == 0 ? myLab : myLab.FindChild( theTag ); + + Handle(TDataStd_IntegerArray) aColorArray; + if ( aLabel.FindAttribute( TDataStd_IntegerArray::GetID(), aColorArray ) ) + { + aResColor.setRed( aColorArray->Value( 1 ) ); + aResColor.setGreen( aColorArray->Value( 2 ) ); + aResColor.setBlue( aColorArray->Value( 3 ) ); + aResColor.setAlpha( aColorArray->Value( 4 ) ); + } + + return aResColor; +} + +void HYDROData_Object::setPythonReferenceObject( MapOfTreatedObjects& theTreatedObjects, + QStringList& theScript, + const Handle(HYDROData_Object)& theRefObject, + const QString& theMethod ) const +{ + if ( theRefObject.IsNull() ) + return; + + QString aRefObjName = theRefObject->GetName(); + if ( aRefObjName.isEmpty() ) + return; + + bool anIsToSetObject = true; + + // The definition of reference polyline must be dumped before this + if ( !theTreatedObjects.contains( aRefObjName ) ) + { + // Write definition of reference polyline + QStringList aRefObjDump = theRefObject->DumpToPython( theTreatedObjects ); + if ( ( anIsToSetObject = !aRefObjDump.isEmpty() ) ) + { + QStringList aTmpList = theScript; + theScript = aRefObjDump; + + theScript << QString( "" ); + theScript << aTmpList; + + theTreatedObjects.insert( aRefObjName, theRefObject ); + } + } + + if ( anIsToSetObject ) + { + theScript << QString( "%1.%2( %3 );" ) + .arg( GetName() ).arg( theMethod ).arg( aRefObjName ); + } +} + +