X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Shape.cxx;h=4d015a5c52035044665c62b4f321b1088ce480fe;hb=eeffb740f746146cb11bb55d6cb00146ac0832e9;hp=b837ec301447436f8472d89a0b2d9ab2ddf5f42e;hpb=ed7a9d24abef6457c7eb94db703c57b0406df3d6;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Shape.cxx b/src/HYDROGUI/HYDROGUI_Shape.cxx index b837ec30..4d015a5c 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,7 @@ #include #include #include -#include +#include #include #include @@ -298,6 +300,22 @@ void HYDROGUI_Shape::update( bool isUpdateViewer, setShape( aCompound, false, false ); } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_LandCover) ) ) + { + Handle(HYDROData_LandCover) aLandCoverObj = + Handle(HYDROData_LandCover)::DownCast( myObject ); + + TopoDS_Shape aLandCoverShape = aLandCoverObj->GetShape(); + if ( !aLandCoverShape.IsNull() ) { + setShape( aLandCoverShape, false, false ); + } + + QColor aFillingColor = aLandCoverObj->GetFillingColor(); + QColor aBorderColor = aLandCoverObj->GetBorderColor(); + + setFillingColor( aFillingColor, false, false ); + setBorderColor( aBorderColor, false, false ); + } } if ( myShape.IsNull() || !isVisible() ) @@ -444,7 +462,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 +494,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()