Salome HOME
Merge branch 'BR_LAND_COVER_MAP' of ssh://git.salome-platform.org/modules/hydro into...
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Shape.cxx
index 6f1f62f9afdace888abe0ae2fb50eacb365b0042..d8f5ab5e9ce089a34c16e5326eca033aea92374f 100644 (file)
@@ -18,6 +18,8 @@
 
 #include <HYDROGUI_Shape.h>
 #include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Polyline.h>
+
 #include <HYDROData_Channel.h>
 #include <HYDROData_Document.h>
 #include <HYDROData_DummyObject3D.h>
@@ -29,7 +31,7 @@
 #include <HYDROData_ShapesGroup.h>
 #include <HYDROData_Stream.h>
 #include <HYDROData_Zone.h>
-#include <HYDROGUI_Polyline.h>
+#include <HYDROData_LandCover.h>
 
 #include <AIS_Shape.hxx>
 #include <BRep_Builder.hxx>
@@ -222,8 +224,8 @@ void HYDROGUI_Shape::update( bool isUpdateViewer,
       }
       else
       {
-               // Set the filling color for zone
-               setFillingColor( aZone->GetColor(HYDROData_ImmersibleZone::DefaultFillingColor()) );
+                   // Set the filling color for zone
+        setFillingColor( aZone->GetColor( Qt::darkBlue ) );
       }
     }
     else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Profile) ) )
@@ -481,12 +483,21 @@ Handle_AIS_InteractiveObject HYDROGUI_Shape::createShape() const
   }
 
   TopAbs_ShapeEnum aShapeType = myTopoShape.ShapeType();
-  if ( aShapeType==TopAbs_EDGE || aShapeType==TopAbs_WIRE ) {
+  bool IsWireEdgeCompound = aShapeType==TopAbs_COMPOUND;
+  if (IsWireEdgeCompound) {
+    TopoDS_Iterator itr(myTopoShape);
+    while (itr.More() && IsWireEdgeCompound) {
+      if (itr.Value().ShapeType() != TopAbs_WIRE && itr.Value().ShapeType() != TopAbs_EDGE)
+        IsWireEdgeCompound = false;
+      itr.Next();
+    }
+  }
+
+  if ( aShapeType==TopAbs_EDGE || aShapeType==TopAbs_WIRE || IsWireEdgeCompound) {
     return new HYDROGUI_Polyline( myTopoShape );
   } else {
     return new AIS_Shape( myTopoShape );
   }
-  }
 }
 
 void HYDROGUI_Shape::buildShape()