X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Shape.cxx;h=f7132b32b5f0092ce14c41e1340d477b9b95c76e;hb=ea24c0c5ef94a08fff17e9d2cde931250bc0677e;hp=b837ec301447436f8472d89a0b2d9ab2ddf5f42e;hpb=fdd7dcde36312e41d8ffb63ec58a77567e8592ef;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Shape.cxx b/src/HYDROGUI/HYDROGUI_Shape.cxx index b837ec30..f7132b32 100644 --- a/src/HYDROGUI/HYDROGUI_Shape.cxx +++ b/src/HYDROGUI/HYDROGUI_Shape.cxx @@ -18,6 +18,8 @@ #include #include +#include + #include #include #include @@ -29,7 +31,6 @@ #include #include #include -#include #include #include @@ -222,8 +223,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) ) ) @@ -444,7 +445,7 @@ QColor HYDROGUI_Shape::getFillingColor() const void HYDROGUI_Shape::setBorderColor( const QColor& theColor, const bool theToDisplay, const bool theIsUpdateViewer ) -{ +{ myBorderColor = theColor; updateShape( theToDisplay, theIsUpdateViewer ); } @@ -476,15 +477,26 @@ void HYDROGUI_Shape::setZLayer( const int theZLayer ) Handle_AIS_InteractiveObject HYDROGUI_Shape::createShape() const { - if( myTopoShape.IsNull() ) + if( myTopoShape.IsNull() ) { return Handle_AIS_InteractiveObject(); - else - if ( myObject->IsKind( STANDARD_TYPE(HYDROData_PolylineXY) ) || - myObject->IsKind( STANDARD_TYPE(HYDROData_Polyline3D)) || - myObject->IsKind( STANDARD_TYPE(HYDROData_Profile) )) - return new HYDROGUI_Polyline(myTopoShape); - else - return new AIS_Shape( myTopoShape ); + } + + TopAbs_ShapeEnum aShapeType = myTopoShape.ShapeType(); + 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()