X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Object.cxx;h=e8477db6e038bdba58fe79b27ce1f76fb496d972;hb=34310fe4f26db0f23c2edfef1678e5b02f578204;hp=1be3985a854702b26b2b9339a9e2dead81fe6972;hpb=5bdd5a07050d0879edb5efdc7e009850a46c64f8;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Object.cxx b/src/HYDROData/HYDROData_Object.cxx index 1be3985a..e8477db6 100644 --- a/src/HYDROData/HYDROData_Object.cxx +++ b/src/HYDROData/HYDROData_Object.cxx @@ -1,252 +1,139 @@ #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) +IMPLEMENT_STANDARD_HANDLE(HYDROData_Object,HYDROData_Entity) +IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Object,HYDROData_Entity) -// 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 +HYDROData_Object::HYDROData_Object() +: HYDROData_Entity() { - 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) +HYDROData_Object::~HYDROData_Object() { - TDataStd_Name::Set(myLab, TCollection_ExtendedString(theName.toLatin1().constData())); } -QStringList HYDROData_Object::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const +HYDROData_SequenceOfObjects HYDROData_Object::GetAllReferenceObjects() const { - QStringList anEmptyList; - return anEmptyList; -} + HYDROData_SequenceOfObjects aResSeq = HYDROData_Entity::GetAllReferenceObjects(); -void HYDROData_Object::Update( const bool theIsForce ) -{ -} + Handle(HYDROData_Bathymetry) aRefBathymetry = GetBathymetry(); + if ( !aRefBathymetry.IsNull() ) + aResSeq.Append( aRefBathymetry ); -QVariant HYDROData_Object::GetDataVariant() -{ - return QVariant(); + return aResSeq; } -bool HYDROData_Object::IsRemoved() const +void HYDROData_Object::SetTopShape( const TopoDS_Shape& theShape ) { - return !myLab.HasAttribute(); + TNaming_Builder aBuilder( myLab.FindChild( DataTag_TopShape ) ); + aBuilder.Generated( theShape ); } -void HYDROData_Object::Remove() +void HYDROData_Object::SetShape3D( const TopoDS_Shape& theShape ) { - return myLab.ForgetAllAttributes(Standard_True); + TNaming_Builder aBuilder( myLab.FindChild( DataTag_Shape3D ) ); + aBuilder.Generated( theShape ); } -HYDROData_Object::HYDROData_Object() +void HYDROData_Object::Update() { + removeTopShape(); + removeShape3D(); + SetToUpdate( false ); } -HYDROData_Object::~HYDROData_Object() +void HYDROData_Object::SetBathymetry( const Handle(HYDROData_Bathymetry)& theBathymetry ) { + SetReferenceObject( theBathymetry, DataTag_Bathymetry ); } -void HYDROData_Object::CopyTo(Handle_HYDROData_Object theDestination) const +Handle(HYDROData_Bathymetry) HYDROData_Object::GetBathymetry() const { - TDF_CopyLabel aCopy(myLab, theDestination->Label()); - aCopy.Perform(); + return Handle(HYDROData_Bathymetry)::DownCast( + GetReferenceObject( DataTag_Bathymetry ) ); } -void HYDROData_Object::SetLabel(TDF_Label theLabel) +void HYDROData_Object::RemoveBathymetry() { - myLab = theLabel; + ClearReferenceObjects( DataTag_Bathymetry ); } -void HYDROData_Object::SaveByteArray(const int theTag, - const char* theData, const int theLen) +TopoDS_Shape HYDROData_Object::getTopShape() const { - 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]); + TDF_Label aLabel = myLab.FindChild( DataTag_TopShape, false ); + if ( !aLabel.IsNull() ) + { + Handle(TNaming_NamedShape) aNamedShape; + if( aLabel.FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) ) + return aNamedShape->Get(); } -} - -const char* HYDROData_Object::ByteArray(const int theTag, int& theLen) const -{ - 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; -} -int HYDROData_Object::NbReferenceObjects( const int theTag ) const -{ - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, false ); - return aRefs.IsNull() ? 0 : aRefs->Extent(); + return TopoDS_Shape(); } -void HYDROData_Object::AddReferenceObject( const Handle_HYDROData_Object& theObj, - const int theTag ) +void HYDROData_Object::removeTopShape() { - if ( theObj.IsNull() ) - return; - - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, true ); - aRefs->Append( theObj->Label() ); + TDF_Label aLabel = myLab.FindChild( DataTag_TopShape, false ); + if ( !aLabel.IsNull() ) + aLabel.ForgetAllAttributes(); } -void HYDROData_Object::SetReferenceObject( const Handle_HYDROData_Object& theObj, - const int theTag, - const int theIndex ) +TopoDS_Shape HYDROData_Object::getShape3D() const { - if ( theObj.IsNull() ) - return; - - Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, true ); - - if ( theIndex >= aRefs->Extent() ) - { - aRefs->Append( theObj->Label() ); - } - else if ( theIndex < 0 ) + TDF_Label aLabel = myLab.FindChild( DataTag_Shape3D, false ); + if ( !aLabel.IsNull() ) { - aRefs->Prepend( theObj->Label() ); + Handle(TNaming_NamedShape) aNamedShape; + if( aLabel.FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) ) + return aNamedShape->Get(); } - 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() ); - } + return TopoDS_Shape(); } -Handle(HYDROData_Object) HYDROData_Object::GetReferenceObject( const int theTag, - const int theIndex ) const +void HYDROData_Object::removeShape3D() { - 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; + TDF_Label aLabel = myLab.FindChild( DataTag_Shape3D, false ); + if ( !aLabel.IsNull() ) + aLabel.ForgetAllAttributes(); } -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; - } - - Handle(HYDROData_Object) aRemovedObj = GetReferenceObject( theTag, theIndex ); - if ( aRemovedObj.IsNull() ) - return; - - aRefs->Remove( aRemovedObj->Label() ); + 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 GetColor( DefaultBorderColor(), DataTag_BorderColor ); +} - return aRefs; +QColor HYDROData_Object::DefaultFillingColor() +{ + return QColor( Qt::yellow ); } + +QColor HYDROData_Object::DefaultBorderColor() +{ + return QColor( Qt::transparent ); +} \ No newline at end of file