X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Object.cxx;h=4bc6d2354210af352f73574a91b167bf5a593699;hb=deed826b2d6c39ba2ed410108cdf54d64cded321;hp=9a971a75a61172f187e110cf429866fbcc6a8e1c;hpb=bd1a4992da8d54929ec556df6db4e7e0ebbfbbd7;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Object.cxx b/src/HYDROData/HYDROData_Object.cxx index 9a971a75..4bc6d235 100644 --- a/src/HYDROData/HYDROData_Object.cxx +++ b/src/HYDROData/HYDROData_Object.cxx @@ -1,74 +1,20 @@ #include "HYDROData_Object.h" -#include "HYDROData_Iterator.h" +#include "HYDROData_Bathymetry.h" -#include -#include -#include -#include -#include -#include -#include +#include +#include -#include -#include +#include #include -#include -#include -#include -IMPLEMENT_STANDARD_HANDLE(HYDROData_Object,MMgt_TShared) -IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Object,MMgt_TShared) - -// is equal function for unique object mapping -bool IsEqual(const Handle_HYDROData_Object& theObj1, const Handle_HYDROData_Object& theObj2) -{ - return (theObj1->ID() == theObj2->ID()); -} - -QString HYDROData_Object::GetName() const -{ - Handle(TDataStd_Name) aName; - if (myLab.FindAttribute(TDataStd_Name::GetID(), aName)) { - TCollection_AsciiString aStr(aName->Get()); - return QString(aStr.ToCString()); - } - return QString(); -} - -void HYDROData_Object::SetName(const QString& theName) -{ - TDataStd_Name::Set(myLab, TCollection_ExtendedString(theName.toLatin1().constData())); -} - -QStringList HYDROData_Object::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const -{ - QStringList anEmptyList; - return anEmptyList; -} - -void HYDROData_Object::Update( const bool theIsForce ) -{ -} - -QVariant HYDROData_Object::GetDataVariant() -{ - return QVariant(); -} - -bool HYDROData_Object::IsRemoved() const -{ - return !myLab.HasAttribute(); -} - -void HYDROData_Object::Remove() -{ - return myLab.ForgetAllAttributes(Standard_True); -} +IMPLEMENT_STANDARD_HANDLE(HYDROData_Object,HYDROData_Entity) +IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Object,HYDROData_Entity) HYDROData_Object::HYDROData_Object() +: HYDROData_Entity() { } @@ -76,231 +22,76 @@ HYDROData_Object::~HYDROData_Object() { } -void HYDROData_Object::CopyTo(Handle_HYDROData_Object theDestination) const -{ - TDF_CopyLabel aCopy(myLab, theDestination->Label()); - aCopy.Perform(); -} - -void HYDROData_Object::SetLabel(TDF_Label theLabel) -{ - myLab = theLabel; -} - -void HYDROData_Object::SaveByteArray(const int theTag, - const char* theData, const int theLen) +void HYDROData_Object::SetTopShape( const TopoDS_Shape& theShape ) { - TDF_Label aLab = theTag == 0 ? myLab : myLab.FindChild(theTag); - // array is empty, remove the attribute - if (theLen <= 0) { - aLab.ForgetAttribute(TDataStd_ByteArray::GetID()); - return; - } - // store data of image in byte array - Handle(TDataStd_ByteArray) aData; - if (!aLab.FindAttribute(TDataStd_ByteArray::GetID(), aData)) { - aData = TDataStd_ByteArray::Set(aLab, 1, theLen); - } - // copy bytes one by one - if (aData->Length() != theLen) { - Handle(TColStd_HArray1OfByte) aNewData = new TColStd_HArray1OfByte(1, theLen); - for(int a = 0; a < theLen; a++) - aNewData->SetValue(a + 1, theData[a]); - aData->ChangeArray(aNewData); - } else { - for(int a = 0; a < theLen; a++) - aData->SetValue(a + 1, theData[a]); - } + TNaming_Builder aBuilder( myLab.FindChild( DataTag_TopShape ) ); + aBuilder.Generated( theShape ); } -const char* HYDROData_Object::ByteArray(const int theTag, int& theLen) const +void HYDROData_Object::SetShape3D( const TopoDS_Shape& theShape ) { - TDF_Label aLab = theTag == 0 ? myLab : myLab.FindChild(theTag); - Handle(TDataStd_ByteArray) aData; - if (!aLab.FindAttribute(TDataStd_ByteArray::GetID(), aData)) - return NULL; // return empty image if there is no array - theLen = aData->Length(); - if (theLen) - return (const char*)(&(aData->InternalArray()->ChangeArray1().ChangeValue(1))); - return NULL; + TNaming_Builder aBuilder( myLab.FindChild( DataTag_Shape3D ) ); + aBuilder.Generated( theShape ); } -int HYDROData_Object::NbReferenceObjects( const int theTag ) const +void HYDROData_Object::SetBathymetry( const Handle(HYDROData_Bathymetry)& theBathymetry ) { - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, false ); - return aRefs.IsNull() ? 0 : aRefs->Extent(); + SetReferenceObject( theBathymetry, DataTag_Bathymetry ); } -void HYDROData_Object::AddReferenceObject( const Handle_HYDROData_Object& theObj, - const int theTag ) +Handle(HYDROData_Bathymetry) HYDROData_Object::GetBathymetry() const { - if ( theObj.IsNull() ) - return; - - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, true ); - aRefs->Append( theObj->Label() ); + return Handle(HYDROData_Bathymetry)::DownCast( + GetReferenceObject( DataTag_Bathymetry ) ); } -void HYDROData_Object::SetReferenceObject( const Handle_HYDROData_Object& theObj, - const int theTag, - const int theIndex ) +void HYDROData_Object::RemoveBathymetry() { - if ( theObj.IsNull() ) - { - RemoveReferenceObject( theTag, theIndex ); - return; - } - - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, true ); - - if ( theIndex >= aRefs->Extent() ) - { - aRefs->Append( theObj->Label() ); - } - else if ( theIndex < 0 ) - { - aRefs->Prepend( theObj->Label() ); - } - else - { - RemoveReferenceObject( theTag, theIndex ); - - Handle(HYDROData_Object) aBeforeObj = GetReferenceObject( theTag, theIndex ); - - aRefs = getReferenceList( theTag, true ); // because reference list can be removed - if ( !aBeforeObj.IsNull() ) - aRefs->InsertBefore( theObj->Label(), aBeforeObj->Label() ); - else - aRefs->Append( theObj->Label() ); - } + ClearReferenceObjects( DataTag_Bathymetry ); } -void HYDROData_Object::SetReferenceObjects( const HYDROData_SequenceOfObjects& theObjects, - const int theTag ) +TopoDS_Shape HYDROData_Object::getTopShape() const { - ClearReferenceObjects( theTag ); - if ( theObjects.IsEmpty() ) - return; - - HYDROData_SequenceOfObjects::Iterator anIter( theObjects ); - for ( ; anIter.More(); anIter.Next() ) - AddReferenceObject( anIter.Value(), theTag ); + Handle(TNaming_NamedShape) aNamedShape; + if( myLab.FindChild( DataTag_TopShape ).FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) ) + return aNamedShape->Get(); + return TopoDS_Shape(); } -Handle(HYDROData_Object) HYDROData_Object::GetReferenceObject( const int theTag, - const int theIndex ) const +TopoDS_Shape HYDROData_Object::getShape3D() const { - Handle(HYDROData_Object) aRes; - - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, false ); - if ( aRefs.IsNull() || theIndex < 0 || theIndex >= aRefs->Extent() ) - return aRes; - - TDF_ListIteratorOfLabelList anIter( aRefs->List() ); - for ( int anIndex = 0; anIndex != theIndex && anIter.More(); anIter.Next(), ++anIndex ); - - const TDF_Label& aRefLabel = anIter.Value(); - aRes = HYDROData_Iterator::Object( aRefLabel ); - - return aRes; + Handle(TNaming_NamedShape) aNamedShape; + if( myLab.FindChild( DataTag_Shape3D ).FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) ) + return aNamedShape->Get(); + return TopoDS_Shape(); } -HYDROData_SequenceOfObjects HYDROData_Object::GetReferenceObjects( const int theTag ) const +void HYDROData_Object::SetFillingColor( const QColor& theColor ) { - HYDROData_SequenceOfObjects aRes; - - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, false ); - if ( aRefs.IsNull() ) - return aRes; - - TDF_ListIteratorOfLabelList anIter( aRefs->List() ); - for ( ; anIter.More(); anIter.Next() ) - { - const TDF_Label& aRefLabel = anIter.Value(); - - Handle(HYDROData_Object) aRefObject = HYDROData_Iterator::Object( aRefLabel ); - if ( aRefObject.IsNull() ) - continue; - - aRes.Append( aRefObject ); - } - - return aRes; + return SetColor( theColor, DataTag_FillingColor ); } -void HYDROData_Object::RemoveReferenceObject( const int theTag, - const int theIndex ) +QColor HYDROData_Object::GetFillingColor() const { - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, false ); - if ( aRefs.IsNull() ) - return; - - if ( aRefs->Extent() == 1 && theIndex == 0 ) - { - // remove all if only one - ClearReferenceObjects( theTag ); - return; - } - - int anIndex = 0; - TDF_ListIteratorOfLabelList anIter( aRefs->List() ); - for ( ; anIndex != theIndex && anIter.More(); anIter.Next(), ++anIndex ); - - if ( anIndex != theIndex ) - return; - - const TDF_Label& aRefLabel = anIter.Value(); - aRefs->Remove( aRefLabel ); + return GetColor( DefaultFillingColor(), DataTag_FillingColor ); } -void HYDROData_Object::ClearReferenceObjects( const int theTag ) +void HYDROData_Object::SetBorderColor( const QColor& theColor ) { - TDF_Label aSetLabel = theTag == 0 ? myLab : myLab.FindChild( theTag ); - aSetLabel.ForgetAttribute( TDataStd_ReferenceList::GetID() ); + return SetColor( theColor, DataTag_BorderColor ); } -Handle(TDataStd_ReferenceList) HYDROData_Object::getReferenceList( const int theTag, - const bool theIsCreate ) const +QColor HYDROData_Object::GetBorderColor() const { - TDF_Label aLabel = theTag == 0 ? myLab : myLab.FindChild( theTag ); - - Handle(TDataStd_ReferenceList) aRefs; - if ( !aLabel.FindAttribute( TDataStd_ReferenceList::GetID(), aRefs ) && theIsCreate ) - aRefs = TDataStd_ReferenceList::Set( aLabel ); - - return aRefs; + return GetColor( DefaultBorderColor(), DataTag_BorderColor ); } -void HYDROData_Object::SetColor( const QColor& theColor, - const int theTag ) +QColor HYDROData_Object::DefaultFillingColor() { - 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() ); + return QColor( Qt::yellow ); } -QColor HYDROData_Object::GetColor( const QColor& theDefColor, - const int theTag ) const +QColor HYDROData_Object::DefaultBorderColor() { - 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; + return QColor( Qt::transparent ); } \ No newline at end of file