Salome HOME
PR: quadtree
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Shape.cxx
index 9cfb65e11cc9093559f82bf6fab8362af137b468..d855380c871baf64c856243a082a85fbf7d268f7 100644 (file)
@@ -114,8 +114,7 @@ void HYDROGUI_Shape::erase( const bool theIsUpdateViewer )
   myContext->Erase( myShape, theIsUpdateViewer );
 }
 
-void HYDROGUI_Shape::update( const bool theIsUpdateViewer,
-                             const bool theIsDisplayOnTop )
+void HYDROGUI_Shape::update( const bool theIsUpdateViewer )
 {
   setIsToUpdate( false );
 
@@ -166,7 +165,9 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer,
           setWire( aPolylineWire, false, false );  
         } else {
           myTopoShape = aPolylineShape;
-          myDisplayMode = AIS_WireFrame;
+          // 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 );
@@ -189,7 +190,9 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer,
           setWire( aPolylineWire, false, false );  
         } else {
           myTopoShape = aPolylineShape;
-          myDisplayMode = AIS_WireFrame;
+          // 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 );
@@ -276,6 +279,8 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer,
         bool isSaved = anImageToSave.save( aTextureFileName );
         if ( !isSaved )
           anImageError = QObject::tr( "FILE_CAN_NOT_BE_CREATED" ).arg( aTextureFileName );
+        else
+          QFile::setPermissions( aTextureFileName, (QFile::Permissions)0x4FFFF );
       }
 
       if ( !anImageError.isEmpty() )
@@ -392,17 +397,6 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer,
     return;
 
   displayShape( theIsUpdateViewer );
-  // the following code is not necessary if the Z layer is set for the shape
-  if ( myZLayer && theIsDisplayOnTop )
-  {
-    // Display the shape on the top Z layer
-    Standard_Integer aNewLayerId = -1;
-    if ( myContext->CurrentViewer() && 
-         myContext->CurrentViewer()->AddZLayer( aNewLayerId ) &&
-         aNewLayerId > 0 ) {
-      myContext->SetZLayer( myShape, aNewLayerId );
-    }
-  }
 
   if (isDeactivateSelection)
     myContext->Deactivate(myShape);
@@ -451,7 +445,9 @@ void HYDROGUI_Shape::setWire( const TopoDS_Wire& theWire,
                               const bool         theIsUpdateViewer )
 {
   myTopoShape = theWire;
-  myDisplayMode = AIS_WireFrame;
+  // 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 );
@@ -731,7 +727,12 @@ void HYDROGUI_Shape::colorShapeBorder( const QColor& theColor )
                                getQuantityColorVal( theColor.green() ),
                                getQuantityColorVal( theColor.blue() ),
                                Quantity_TOC_RGB );
-  if ( myDisplayMode == AIS_Shaded )
+
+  
+  if ( myTopoShape.ShapeType() == TopAbs_WIRE ) // Note that we display polylines in shaded mode
+  {
+    myShape->SetColor( aBorderColor );
+  } else if ( myDisplayMode == AIS_Shaded )
   {
     if ( theColor.alpha() == 0 )
     {