]> SALOME platform Git repositories - modules/hydro.git/blob - src/HYDROData/HYDROData_Zone.cxx
Salome HOME
Useless code removed.
[modules/hydro.git] / src / HYDROData / HYDROData_Zone.cxx
1
2 #include "HYDROData_Zone.h"
3
4 #include "HYDROData_ArtificialObject.h"
5 #include "HYDROData_IAltitudeObject.h"
6 #include "HYDROData_Document.h"
7 #include "HYDROData_NaturalObject.h"
8
9 #include <TNaming_Builder.hxx>
10 #include <TNaming_NamedShape.hxx>
11
12 #include <TopoDS_Shape.hxx>
13
14 #include <QStringList>
15
16 #include <TDataStd_Integer.hxx>
17
18 IMPLEMENT_STANDARD_HANDLE(HYDROData_Zone, HYDROData_Entity)
19 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Zone, HYDROData_Entity)
20
21
22 HYDROData_Zone::HYDROData_Zone()
23 : HYDROData_Entity()
24 {
25 }
26
27 HYDROData_Zone::~HYDROData_Zone()
28 {
29 }
30
31 bool HYDROData_Zone::CanBeUpdated() const
32 {
33   return false;
34 }
35
36 bool HYDROData_Zone::CanRemove()
37 {
38   return false;
39 }
40
41 HYDROData_SequenceOfObjects HYDROData_Zone::GetAllReferenceObjects() const
42 {
43   HYDROData_SequenceOfObjects aResSeq = HYDROData_Entity::GetAllReferenceObjects();
44
45   HYDROData_SequenceOfObjects aSeqOfGeomObjects = GetGeometryObjects();
46   aResSeq.Append( aSeqOfGeomObjects );
47
48   return aResSeq;
49 }
50
51 void HYDROData_Zone::SetShape( const TopoDS_Shape& theShape )
52 {
53   TNaming_Builder aBuilder( myLab.FindChild( DataTag_Shape ) );
54   aBuilder.Generated( theShape );
55 }
56
57 TopoDS_Shape HYDROData_Zone::GetShape() const
58 {
59   TDF_Label aLabel = myLab.FindChild( DataTag_Shape, false );
60   if ( !aLabel.IsNull() )
61   {
62     Handle(TNaming_NamedShape) aNamedShape;
63     if( aLabel.FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) )
64       return aNamedShape->Get();
65   }
66
67   return TopoDS_Shape();
68 }
69
70 bool HYDROData_Zone::IsMergingNeed() const
71 {
72   Handle(HYDROData_IAltitudeObject) aRefAltitude;
73
74   HYDROData_SequenceOfObjects aGeomObjects = GetGeometryObjects();
75   HYDROData_SequenceOfObjects::Iterator aGeomObjsIter( aGeomObjects );
76   for ( ; aGeomObjsIter.More(); aGeomObjsIter.Next() )
77   {
78     Handle(HYDROData_Object) aRefGeomObj =
79       Handle(HYDROData_Object)::DownCast( aGeomObjsIter.Value() );
80     if ( aRefGeomObj.IsNull() )
81       continue;
82
83     Handle(HYDROData_IAltitudeObject) anObjAltitude = aRefGeomObj->GetAltitudeObject();
84     if ( anObjAltitude.IsNull() )
85       continue;
86
87     if ( aRefAltitude.IsNull() )
88     {
89       aRefAltitude = anObjAltitude;
90       continue;
91     }
92
93     if ( !IsEqual( aRefAltitude, anObjAltitude ) )
94       return true;
95   }
96
97   return false;
98 }
99
100 void HYDROData_Zone::SetMergeType( const MergeAltitudesType& theType )
101 {
102   Handle(TDataStd_Integer) anInt;
103   if ( myLab.FindChild( DataTag_MergeType ).FindAttribute( TDataStd_Integer::GetID(), anInt ) )
104   {
105     anInt->Set( (int)theType );
106   }
107   else
108   {
109     anInt = TDataStd_Integer::Set( myLab.FindChild( DataTag_MergeType ), (int)theType );
110   }
111 }
112
113 HYDROData_Zone::MergeAltitudesType HYDROData_Zone::GetMergeType() const
114 {
115   MergeAltitudesType aMergeType = Merge_UNKNOWN;
116   
117   TDF_Label aLabel = myLab.FindChild( DataTag_MergeType, false );
118   if ( !aLabel.IsNull() )
119   {
120     Handle(TDataStd_Integer) anInt;
121     if ( aLabel.FindAttribute( TDataStd_Integer::GetID(), anInt ) )
122       aMergeType = (MergeAltitudesType)anInt->Get();
123   }
124
125   return aMergeType;
126 }
127
128 void HYDROData_Zone::SetMergeAltitude( const Handle(HYDROData_IAltitudeObject)& theAltitude )
129 {
130   SetReferenceObject( theAltitude, DataTag_MergeAltitude );
131 }
132
133 Handle(HYDROData_IAltitudeObject) HYDROData_Zone::GetMergeAltitude() const
134 {
135   return Handle(HYDROData_IAltitudeObject)::DownCast( 
136            GetReferenceObject( DataTag_MergeAltitude ) );
137 }
138
139 void HYDROData_Zone::RemoveMergeAltitude()
140 {
141   ClearReferenceObjects( DataTag_MergeAltitude );
142 }
143
144 bool HYDROData_Zone::AddGeometryObject( const Handle(HYDROData_Object)& theObject )
145 {
146   if ( theObject.IsNull() )
147     return false;
148   
149   if ( !theObject->IsKind( STANDARD_TYPE(HYDROData_ArtificialObject) ) &&
150        !theObject->IsKind( STANDARD_TYPE(HYDROData_NaturalObject) ) )
151     return false; // Wrong type of object
152
153   if ( HasReference( theObject, DataTag_GeometryObject ) )
154     return false; // Object is already in reference list
155
156   AddReferenceObject( theObject, DataTag_GeometryObject );
157
158   return true;
159 }
160
161 HYDROData_SequenceOfObjects HYDROData_Zone::GetGeometryObjects() const
162 {
163   return GetReferenceObjects( DataTag_GeometryObject );
164 }
165
166 void HYDROData_Zone::RemoveGeometryObjects()
167 {
168   ClearReferenceObjects( DataTag_GeometryObject );
169 }
170
171
172