X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Shape.cxx;h=f7132b32b5f0092ce14c41e1340d477b9b95c76e;hb=ea24c0c5ef94a08fff17e9d2cde931250bc0677e;hp=b973cefd80d9a8f9d7f5d262653f75ff9810f3a0;hpb=f664563df96e1f99e099bc90a1088533e6a018b0;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Shape.cxx b/src/HYDROGUI/HYDROGUI_Shape.cxx index b973cefd..f7132b32 100644 --- a/src/HYDROGUI/HYDROGUI_Shape.cxx +++ b/src/HYDROGUI/HYDROGUI_Shape.cxx @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,75 +16,331 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "HYDROGUI_Shape.h" - -#include - -#include -#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include #include - -#include - #include -#include - -#include -#include - -#include - -#include -#include #include +#include +#include +#include +#include +#include -#include - -HYDROGUI_Shape::HYDROGUI_Shape( const Handle(AIS_InteractiveContext)& theContext ) +HYDROGUI_Shape::HYDROGUI_Shape( const Handle(AIS_InteractiveContext)& theContext, + const Handle(HYDROData_Entity)& theObject, + const int theZLayer ) : myContext( theContext ), + myObject( theObject ), + myZLayer( theZLayer ), myIsHighlight( false ), - myFillingColor( Qt::green ), + myFillingColor( Qt::transparent ), myBorderColor( Qt::black ), - myHighlightColor( Qt::white ) + myHighlightColor( Qt::white ), + myIsToUpdate( false ), + myIsVisible( true ), + myDisplayMode( AIS_Shaded ) { } HYDROGUI_Shape::~HYDROGUI_Shape() { - erase(); + erase( false ); if ( !myShape.IsNull() ) myShape.Nullify(); } +Handle(AIS_InteractiveContext) HYDROGUI_Shape::getContext() const +{ + return myContext; +} + +Handle(HYDROData_Entity) HYDROGUI_Shape::getObject() const +{ + return myObject; +} + +TopoDS_Shape HYDROGUI_Shape::getTopoShape() const +{ + return myTopoShape; +} + +bool HYDROGUI_Shape::getIsToUpdate() const +{ + return myIsToUpdate; +} + +void HYDROGUI_Shape::setIsToUpdate( bool theState ) +{ + myIsToUpdate = theState; +} + +bool HYDROGUI_Shape::isVisible() const +{ + return myIsVisible; +} + +Handle(AIS_InteractiveObject) HYDROGUI_Shape::getAISObject() const +{ + return myShape; +} + void HYDROGUI_Shape::display( const bool theIsUpdateViewer ) { - if ( !myContext || myShape.IsNull() ) + if ( myContext.IsNull() || myShape.IsNull() || !isVisible() ) return; - myContext->Display( myShape, theIsUpdateViewer ); + displayShape( theIsUpdateViewer ); } void HYDROGUI_Shape::erase( const bool theIsUpdateViewer ) { - if ( !myContext || myShape.IsNull() ) + if ( myContext.IsNull() || myShape.IsNull() ) return; myContext->Erase( myShape, theIsUpdateViewer ); } -void HYDROGUI_Shape::highlight( bool theIsHighlight ) +void HYDROGUI_Shape::update( bool isUpdateViewer, + bool isDeactivateSelection ) + +{ + setIsToUpdate( false ); + + if ( myContext.IsNull() ) + return; + + // Try to retrieve information from object + if ( !myObject.IsNull() ) + { + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myObject->Label() ); + + if ( myObject->IsKind( STANDARD_TYPE(HYDROData_ImmersibleZone) ) ) + { + Handle(HYDROData_ImmersibleZone) aZoneObj = + Handle(HYDROData_ImmersibleZone)::DownCast( myObject ); + + TopoDS_Shape aZoneShape = aZoneObj->GetTopShape(); + if ( !aZoneShape.IsNull() ) { + if ( aZoneShape.ShapeType() == TopAbs_FACE ) { + TopoDS_Face aZoneFace = TopoDS::Face( aZoneShape ); + setFace( aZoneFace, false, false, "" ); + } else { + myTopoShape = aZoneShape; + //TODO: myDisplayMode = myTextureFileName.isEmpty() ? AIS_Shaded : AIS_Shaded+2; + myDisplayMode = AIS_Shaded; + + buildShape(); + updateShape( false, false ); + } + } + + QColor aFillingColor = aZoneObj->GetFillingColor(); + QColor aBorderColor = aZoneObj->GetBorderColor(); + + setFillingColor( aFillingColor, false, false ); + setBorderColor( aBorderColor, false, false ); + } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_PolylineXY) ) ) + { + Handle(HYDROData_PolylineXY) aPolyline = + Handle(HYDROData_PolylineXY)::DownCast( myObject ); + + TopoDS_Shape aPolylineShape = aPolyline->GetShape(); + + if ( !aPolylineShape.IsNull() ) { + if ( aPolylineShape.ShapeType() == TopAbs_WIRE ) { + TopoDS_Wire aPolylineWire = TopoDS::Wire( aPolylineShape ); + setWire( aPolylineWire, false, false ); + } else { + myTopoShape = aPolylineShape; + // Set shading mode to avoid that hilight presentation is equal to "normal" object presentation. + // Note that hilight presentation is always to be on top ( i.e. in the top Z layer ). + myDisplayMode = AIS_Shaded; + + buildShape(); + updateShape( false, false ); + } + } + + QColor aWireColor = aPolyline->GetWireColor(); + setBorderColor( aWireColor, false, false ); + } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Polyline3D) ) ) + { + Handle(HYDROData_Polyline3D) aPolyline = + Handle(HYDROData_Polyline3D)::DownCast( myObject ); + + TopoDS_Shape aPolylineShape = aPolyline->GetShape3D(); + + if ( !aPolylineShape.IsNull() ) { + if ( aPolylineShape.ShapeType() == TopAbs_WIRE ) { + TopoDS_Wire aPolylineWire = TopoDS::Wire( aPolylineShape ); + setWire( aPolylineWire, false, false ); + } else { + myTopoShape = aPolylineShape; + // Set shading mode to avoid that hilight presentation is equal to "normal" object presentation. + // Note that hilight presentation is always to be on top ( i.e. in the top Z layer ). + myDisplayMode = AIS_Shaded; + + buildShape(); + updateShape( false, false ); + } + } + + QColor aWireColor = aPolyline->GetBorderColor(); + setBorderColor( aWireColor, false, false ); + } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Zone) ) ) + { + Handle(HYDROData_Zone) aZone = + Handle(HYDROData_Zone)::DownCast( myObject ); + + TopoDS_Face aZoneFace = TopoDS::Face( aZone->GetShape() ); + + setFace( aZoneFace, false, false, "" ); + if (aZone->IsMergingNeed() && aZone->GetMergeType() == HYDROData_Zone::Merge_UNKNOWN ) + { + // Red color for a zone with bathymetry conflict + setFillingColor( Qt::red ); + } + else + { + // Set the filling color for zone + setFillingColor( aZone->GetColor( Qt::darkBlue ) ); + } + } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Profile) ) ) + { + Handle(HYDROData_Profile) aProfile = + Handle(HYDROData_Profile)::DownCast( myObject ); + + TopoDS_Wire aProfileWire; + + if ( aProfile->IsValid() ) { + TopoDS_Shape aProfileShape = aProfile->GetShape3D(); + + if ( !aProfileShape.IsNull() && + aProfileShape.ShapeType() == TopAbs_WIRE ) { + aProfileWire = TopoDS::Wire( aProfileShape ); + } + } + + setWire( aProfileWire, false, false ); + + QColor aWireColor = aProfile->GetBorderColor(); + setBorderColor( aWireColor, false, false ); + } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Stream) ) || + myObject->IsKind( STANDARD_TYPE(HYDROData_Channel) ) || + myObject->IsKind( STANDARD_TYPE(HYDROData_Obstacle) ) ) + { + Handle(HYDROData_Object) aGeomObject = + Handle(HYDROData_Object)::DownCast( myObject ); + + TopoDS_Shape anObjShape = aGeomObject->GetTopShape(); + + setShape( anObjShape, false, false ); + + QColor aFillingColor = aGeomObject->GetFillingColor(); + QColor aBorderColor = aGeomObject->GetBorderColor(); + + setFillingColor( aFillingColor, false, false ); + setBorderColor( aBorderColor, false, false ); + } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_DummyObject3D) ) ) + { + Handle(HYDROData_DummyObject3D) anObject3D = + Handle(HYDROData_DummyObject3D)::DownCast( myObject ); + TopoDS_Shape aShape3D = anObject3D->GetShape(); + + setShape( aShape3D, false, false ); + + QColor aFillingColor = anObject3D->GetFillingColor(); + QColor aBorderColor = anObject3D->GetBorderColor(); + + setFillingColor( aFillingColor, false, false ); + setBorderColor( aBorderColor, false, false ); + } + else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_ShapesGroup) ) ) + { + Handle(HYDROData_ShapesGroup) aShapesGroup = + Handle(HYDROData_ShapesGroup)::DownCast( myObject ); + + TopTools_SequenceOfShape aShapes; + aShapesGroup->GetShapes( aShapes ); + + TopoDS_Compound aCompound; + BRep_Builder aCompoundBuilder; + aCompoundBuilder.MakeCompound( aCompound ); + + for ( int i = 1, n = aShapes.Length(); i <= n; ++i ) + { + const TopoDS_Shape& aShape = aShapes.Value( i ); + aCompoundBuilder.Add( aCompound, aShape ); + } + + setShape( aCompound, false, false ); + } + } + + if ( myShape.IsNull() || !isVisible() ) + return; + + displayShape( isUpdateViewer ); + + if (isDeactivateSelection) + myContext->Deactivate(myShape); +} + +void HYDROGUI_Shape::setVisible( const bool theState, + const bool theIsUpdateViewer ) +{ + myIsVisible = theState; + + if ( myShape.IsNull() ) + return; + + if ( ( myIsVisible && myContext->IsDisplayed( myShape ) ) || + ( !myIsVisible && !myContext->IsDisplayed( myShape ) ) ) + return; + + if ( myIsVisible ) { + displayShape( theIsUpdateViewer ); + } + else + myContext->Erase( myShape, theIsUpdateViewer ); +} + +void HYDROGUI_Shape::highlight( bool theIsHighlight, bool isUpdateViewer ) { if ( myIsHighlight == theIsHighlight ) return; myIsHighlight = theIsHighlight; - if ( !myContext || myShape.IsNull() ) + if ( myContext.IsNull() || myShape.IsNull() ) return; colorShapeBorder( getActiveColor() ); - myContext->Display( myShape ); + displayShape( isUpdateViewer ); } bool HYDROGUI_Shape::isHighlighted() const @@ -97,30 +349,92 @@ bool HYDROGUI_Shape::isHighlighted() const } void HYDROGUI_Shape::setWire( const TopoDS_Wire& theWire, - const bool theToDisplay ) + const bool theToDisplay, + const bool theIsUpdateViewer ) +{ + myTopoShape = theWire; + // To avoid that hilight presentation is equal to "normal" object presentation. + // Note that hilight presentation is always to be on top ( i.e. in the top Z layer ). + myDisplayMode = AIS_Shaded; + + buildShape(); + updateShape( theToDisplay, theIsUpdateViewer ); +} + +void HYDROGUI_Shape::setFaces( const TopoDS_Compound& theWires, + const bool theToDisplay, + const bool theIsUpdateViewer ) +{ + TopExp_Explorer anExp( theWires, TopAbs_WIRE ); + TopoDS_Compound aCompound; + BRep_Builder aBuilder; + aBuilder.MakeCompound( aCompound ); + + for ( ; anExp.More(); anExp.Next() ) { + TopoDS_Wire aWire = TopoDS::Wire( anExp.Current() ); + if ( aWire.IsNull() ) { + continue; + } + + BRepBuilderAPI_MakeFace aMakeFace( aWire, Standard_True ); + aMakeFace.Build(); + if( aMakeFace.IsDone() ) { + aBuilder.Add( aCompound, aMakeFace.Face() ); + } + } + + myTopoShape = aCompound; + myDisplayMode = AIS_Shaded; + + buildShape(); + updateShape( theToDisplay, theIsUpdateViewer ); +} + +void HYDROGUI_Shape::setFace( const TopoDS_Wire& theWire, + const bool theToDisplay, + const bool theIsUpdateViewer, + const QString& theTextureFileName ) { BRepBuilderAPI_MakeFace aFaceBuilder( theWire, Standard_True ); aFaceBuilder.Build(); if( aFaceBuilder.IsDone() ) { TopoDS_Face aFace = aFaceBuilder.Face(); - setFace( aFace, theToDisplay ); + setFace( aFace, theToDisplay, theIsUpdateViewer, theTextureFileName ); } } void HYDROGUI_Shape::setFace( const TopoDS_Face& theFace, - const bool theToDisplay ) + const bool theToDisplay, + const bool theIsUpdateViewer, + const QString& theTextureFileName ) +{ + myTopoShape = theFace; + myDisplayMode = theTextureFileName.isEmpty() ? AIS_Shaded : AIS_Shaded+2; + //Note: AIS_Shaded+2 is the same as AIS_ExactHLR + //TODO: it would be more suitable to use TexturedShape mode from GEOM_AISShape + + buildShape(); + updateShape( theToDisplay, theIsUpdateViewer ); +} + +void HYDROGUI_Shape::setShape( const TopoDS_Shape& theShape, + const bool theToDisplay, + const bool theIsUpdateViewer ) { - myFace = theFace; + myTopoShape = theShape; + myDisplayMode = AIS_Shaded; + buildShape(); - updateShape( theToDisplay ); + updateShape( theToDisplay, theIsUpdateViewer ); } void HYDROGUI_Shape::setFillingColor( const QColor& theColor, - const bool theToDisplay ) + const bool theToDisplay, + const bool theIsUpdateViewer ) { myFillingColor = theColor; - updateShape( theToDisplay ); + updateShape( theToDisplay, theIsUpdateViewer ); } QColor HYDROGUI_Shape::getFillingColor() const @@ -129,10 +443,11 @@ QColor HYDROGUI_Shape::getFillingColor() const } void HYDROGUI_Shape::setBorderColor( const QColor& theColor, - const bool theToDisplay ) -{ + const bool theToDisplay, + const bool theIsUpdateViewer ) +{ myBorderColor = theColor; - updateShape( theToDisplay ); + updateShape( theToDisplay, theIsUpdateViewer ); } QColor HYDROGUI_Shape::getBorderColor() const @@ -150,73 +465,143 @@ QColor HYDROGUI_Shape::getHighlightColor() const return myHighlightColor; } +void HYDROGUI_Shape::setZLayer( const int theZLayer ) +{ + if ( myZLayer == theZLayer ) + return; + + myZLayer = theZLayer; + if ( !myShape.IsNull() && isVisible() && !myContext.IsNull() && myZLayer >= 0 ) + myContext->SetZLayer( myShape, myZLayer ); +} + +Handle_AIS_InteractiveObject HYDROGUI_Shape::createShape() const +{ + if( myTopoShape.IsNull() ) { + return Handle_AIS_InteractiveObject(); + } + + 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() { // Erase previously created shape erase(); - if( myFace.IsNull() ) + myShape = createShape(); + if( myShape.IsNull() ) return; - myShape = new AIS_Shape( myFace ); + Handle_AIS_Shape anAISShape = Handle_AIS_Shape::DownCast( myShape ); + if( !anAISShape.IsNull() ) + anAISShape ->SetHLRAngleAndDeviation( 0.001 ); + + if ( !myObject.IsNull() ) + myShape->SetOwner( myObject ); myShape->SetTransparency( 0 ); - myShape->SetDisplayMode( AIS_Shaded ); + myShape->SetDisplayMode( (AIS_DisplayMode)myDisplayMode ); - // Init default params for shape - const Handle(AIS_Drawer)& anAttributes = myShape->Attributes(); + // Init default params for shape + const Handle(Prs3d_Drawer)& anAttributes = myShape->Attributes(); if ( !anAttributes.IsNull() ) { Handle(Prs3d_IsoAspect) anIsoAspect = anAttributes->UIsoAspect(); - if ( !anIsoAspect.IsNull() ) + if ( !anIsoAspect.IsNull() ) { anIsoAspect->SetNumber( 0 ); - + anAttributes->SetUIsoAspect( anIsoAspect ); + } + anIsoAspect = anAttributes->VIsoAspect(); - if ( !anIsoAspect.IsNull() ) + if ( !anIsoAspect.IsNull() ) { anIsoAspect->SetNumber( 0 ); + anAttributes->SetVIsoAspect( anIsoAspect ); + } - Handle(Prs3d_ShadingAspect) aShadingAspect = anAttributes->ShadingAspect(); - if ( !aShadingAspect.IsNull() ) + if ( myDisplayMode == AIS_Shaded ) { - Graphic3d_MaterialAspect aMatAspect; - aMatAspect.SetAmbient( 1 ); - aMatAspect.SetDiffuse( 0 ); - - aShadingAspect->Aspect()->SetFrontMaterial( aMatAspect ); - aShadingAspect->Aspect()->SetBackMaterial( aMatAspect ); + Handle(Prs3d_ShadingAspect) aShadingAspect = anAttributes->ShadingAspect(); + if ( !aShadingAspect.IsNull() ) + { + Graphic3d_MaterialAspect aMatAspect( Graphic3d_NOM_PLASTIC ); + //aMatAspect.SetAmbient( 1 ); + //aMatAspect.SetDiffuse( 0 ); + + aShadingAspect->Aspect()->SetFrontMaterial( aMatAspect ); + aShadingAspect->Aspect()->SetBackMaterial( aMatAspect ); + } + } + else if ( myDisplayMode == AIS_WireFrame ) + { + anAttributes->SetWireDraw( true ); } } } -void HYDROGUI_Shape::updateShape( const bool theIsForce ) +void HYDROGUI_Shape::updateShape( const bool theToDisplay, + const bool theIsUpdateViewer ) { if ( myShape.IsNull() ) return; - const Handle(AIS_Drawer)& anAttributes = myShape->Attributes(); + const Handle(Prs3d_Drawer)& anAttributes = myShape->Attributes(); if ( !anAttributes.IsNull() ) { - // Coloring face filling - Handle(Prs3d_ShadingAspect) aShadingAspect = anAttributes->ShadingAspect(); - if ( !aShadingAspect.IsNull() ) + if ( myDisplayMode == AIS_Shaded ) + { + // Coloring face filling + Handle(Prs3d_ShadingAspect) aShadingAspect = anAttributes->ShadingAspect(); + if ( !aShadingAspect.IsNull() ) + { + Quantity_Color aFillingColor( getQuantityColorVal( myFillingColor.red() ), + getQuantityColorVal( myFillingColor.green() ), + getQuantityColorVal( myFillingColor.blue() ), + Quantity_TOC_RGB ); + + aShadingAspect->SetColor( aFillingColor ); + aShadingAspect->SetTransparency( 1 - getQuantityColorVal( myFillingColor.alpha() ) ); + } + } + else if ( myDisplayMode == AIS_WireFrame ) { - Quantity_Color aFillingColor( getQuantityColorVal( myFillingColor.red() ), - getQuantityColorVal( myFillingColor.green() ), - getQuantityColorVal( myFillingColor.blue() ), - Quantity_TOC_RGB ); - - aShadingAspect->SetColor( aFillingColor ); - aShadingAspect->SetTransparency( 1 - getQuantityColorVal( myFillingColor.alpha() ) ); } // Coloring borders colorShapeBorder( getActiveColor() ); } - if ( !theIsForce || !myContext ) + if ( !theToDisplay || !isVisible() || myContext.IsNull() ) return; - myContext->Display( myShape, theIsForce ); + displayShape( theIsUpdateViewer ); +} + +void HYDROGUI_Shape::displayShape( const bool theIsUpdateViewer ) +{ + myContext->Display( myShape, Standard_False ); + + if ( myZLayer >= 0 ) + myContext->SetZLayer( myShape, myZLayer ); + + if ( theIsUpdateViewer ) { + myContext->UpdateCurrentViewer(); + } } QColor HYDROGUI_Shape::getActiveColor() const @@ -234,29 +619,53 @@ void HYDROGUI_Shape::colorShapeBorder( const QColor& theColor ) if ( myShape.IsNull() ) return; - const Handle(AIS_Drawer)& anAttributes = myShape->Attributes(); + const Handle(Prs3d_Drawer)& anAttributes = myShape->Attributes(); if ( anAttributes.IsNull() ) return; - if ( theColor.alpha() == 0 ) - { - anAttributes->SetFaceBoundaryDraw( false ); - } - else + Quantity_Color aBorderColor( getQuantityColorVal( theColor.red() ), + getQuantityColorVal( theColor.green() ), + getQuantityColorVal( theColor.blue() ), + Quantity_TOC_RGB ); + + if( !myTopoShape.IsNull() ) { - Quantity_Color aBorderColor( getQuantityColorVal( theColor.red() ), - getQuantityColorVal( theColor.green() ), - getQuantityColorVal( theColor.blue() ), - Quantity_TOC_RGB ); - - anAttributes->SetFaceBoundaryDraw( true ); - - Handle(Prs3d_LineAspect) aBoundaryAspect = anAttributes->FaceBoundaryAspect(); - if ( !aBoundaryAspect.IsNull() ) + if ( myTopoShape.ShapeType() == TopAbs_WIRE ) // Note that we display polylines in shaded mode { - aBoundaryAspect->SetColor( aBorderColor ); + myShape->SetColor( aBorderColor ); + } + else if ( myDisplayMode == AIS_Shaded ) + { + if ( theColor.alpha() == 0 ) + { + anAttributes->SetFaceBoundaryDraw( false ); + } + else + { + anAttributes->SetFaceBoundaryDraw( true ); + + Handle(Prs3d_LineAspect) aBoundaryAspect = anAttributes->FaceBoundaryAspect(); + if ( !aBoundaryAspect.IsNull() ) + { + aBoundaryAspect->SetColor( aBorderColor ); + anAttributes->SetFaceBoundaryAspect( aBoundaryAspect ); + } + Handle(Prs3d_LineAspect) aWireAspect = anAttributes->WireAspect(); + if ( !aWireAspect.IsNull() ) + { + aWireAspect->SetColor( aBorderColor ); + anAttributes->SetWireAspect( aWireAspect ); + } + } + } + else if ( myDisplayMode == AIS_WireFrame ) + { + myShape->SetColor( aBorderColor ); } } } - +void HYDROGUI_Shape::setDisplayMode( int theDisplayMode ) +{ + myDisplayMode = theDisplayMode; +}