From 9c1e99248063fe530c60a15b68ef3a909f319f12 Mon Sep 17 00:00:00 2001 From: adv Date: Thu, 16 Jan 2014 11:44:21 +0000 Subject: [PATCH] Access methods for object groups added. --- src/HYDROData/HYDROData_Object.cxx | 32 +++++++++++++++++++++++ src/HYDROData/HYDROData_Object.h | 11 ++++++++ src/HYDROPy/HYDROData_Object.sip | 42 ++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) diff --git a/src/HYDROData/HYDROData_Object.cxx b/src/HYDROData/HYDROData_Object.cxx index 719c105b..e018ca24 100644 --- a/src/HYDROData/HYDROData_Object.cxx +++ b/src/HYDROData/HYDROData_Object.cxx @@ -132,6 +132,38 @@ HYDROData_SequenceOfObjects HYDROData_Object::GetGroups() const return GetReferenceObjects( DataTag_EdgesGroup ); } +Handle(HYDROData_ShapesGroup) HYDROData_Object::GetGroup( const int theGroupId ) const +{ + Handle(HYDROData_ShapesGroup) aResGroup; + + HYDROData_SequenceOfObjects aGroups = GetGroups(); + if ( theGroupId < 0 || theGroupId >= aGroups.Length() ) + return aResGroup; + + aResGroup = Handle(HYDROData_ShapesGroup)::DownCast( aGroups.Value( theGroupId + 1 ) ); + + return aResGroup; +} + +int HYDROData_Object::GetGroupId( const Handle(HYDROData_ShapesGroup)& theGroup ) const +{ + int aRes = -1; + + HYDROData_SequenceOfObjects aGroups = GetGroups(); + for ( int i = 1, n = aGroups.Length(); i <= n; ++i ) + { + Handle(HYDROData_ShapesGroup) aGroup = + Handle(HYDROData_ShapesGroup)::DownCast( aGroups.Value( i ) ); + if ( IsEqual( theGroup, aGroup ) ) + { + aRes = i - 1; + break; + } + } + + return aRes; +} + bool HYDROData_Object::SetAltitudeObject( const Handle(HYDROData_IAltitudeObject)& theAltitude ) { diff --git a/src/HYDROData/HYDROData_Object.h b/src/HYDROData/HYDROData_Object.h index 312368eb..d59e4708 100644 --- a/src/HYDROData/HYDROData_Object.h +++ b/src/HYDROData/HYDROData_Object.h @@ -88,11 +88,22 @@ public: */ HYDRODATA_EXPORT virtual Handle(HYDROData_DummyObject3D) GetObject3D() const; + /** * Returns sequence of object groups. */ HYDRODATA_EXPORT virtual HYDROData_SequenceOfObjects GetGroups() const; + /** + * Returns group data model object by it id. + */ + HYDRODATA_EXPORT virtual Handle(HYDROData_ShapesGroup) GetGroup( const int theGroupId ) const; + + /** + * Returns group id by data model object. + */ + HYDRODATA_EXPORT virtual int GetGroupId( const Handle(HYDROData_ShapesGroup)& theGroup ) const; + /** * Set reference altitude object for geometry object. diff --git a/src/HYDROPy/HYDROData_Object.sip b/src/HYDROPy/HYDROData_Object.sip index 39f89026..399ce5b6 100644 --- a/src/HYDROPy/HYDROData_Object.sip +++ b/src/HYDROPy/HYDROData_Object.sip @@ -138,6 +138,48 @@ public: */ virtual QColor GetBorderColor() const; + + /** + * Returns sequence of object groups. + */ + HYDROData_SequenceOfObjects GetGroups() const; + + /** + * Returns group data model object by it id. + */ + HYDROData_ShapesGroup GetGroup( const int theGroupId ) const [Handle_HYDROData_ShapesGroup ()]; + %MethodCode + + Handle(HYDROData_ShapesGroup) aRefGroup; + + Py_BEGIN_ALLOW_THREADS + aRefGroup = sipSelfWasArg ? sipCpp->HYDROData_Object::GetGroup( a0 ) : + sipCpp->GetGroup( a0 ); + Py_END_ALLOW_THREADS + + sipRes = (HYDROData_ShapesGroup*)createPointer( aRefGroup ); + + %End + + /** + * Returns group id by data model object. + */ + int GetGroupId( HYDROData_ShapesGroup theGroup ) const [int (const Handle_HYDROData_ShapesGroup&)]; + %MethodCode + + Handle(HYDROData_ShapesGroup) aRefGroup = + Handle(HYDROData_ShapesGroup)::DownCast( createHandle( a0 ) ); + if ( !aRefGroup.IsNull() ) + { + Py_BEGIN_ALLOW_THREADS + sipRes = sipSelfWasArg ? sipCpp->HYDROData_Object::GetGroupId( aRefGroup ) : + sipCpp->GetGroupId( aRefGroup ); + Py_END_ALLOW_THREADS + } + + %End + + protected: /** -- 2.39.2