Salome HOME
updated copyright message
[modules/gui.git] / src / OCCViewer / OCCViewer_ViewFrame.cxx
index 70e253b63a624abf80814b44a63079ea943c6da7..64fe81c872e817e3e4f9a831b5260107e020dcd3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023  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
@@ -23,6 +23,7 @@
 #include "OCCViewer_ViewFrame.h"
 #include "OCCViewer_ViewWindow.h"
 #include "OCCViewer_ViewModel.h"
+#include "OCCViewer_ViewPort3d.h"
 
 #include <SUIT_ViewManager.h>
 #include <SUIT_Session.h>
@@ -36,7 +37,7 @@
 #include <QApplication>
 
 OCCViewer_ViewFrame::OCCViewer_ViewFrame(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel)
-  : OCCViewer_ViewWindow( theDesktop, theModel ), myPopupRequestedView(0), mySplitMode(-1)
+  : OCCViewer_ViewWindow( theDesktop, theModel ), mySplitMode(-1), myPopupRequestedView(0)
 {
   QFrame* centralFrame = new QFrame( this );
   setCentralWidget( centralFrame );
@@ -169,16 +170,30 @@ void OCCViewer_ViewFrame::createSubViews()
       view->setDropDownButtons( dropDownButtons() );
       connectViewSignals(view);
       view->setBackground(aModel->background(i));
+      setSubViewParams( view );
     }
   }
 }
 
+//**************************************************************************************
+void OCCViewer_ViewFrame::setSubViewParams( OCCViewer_ViewWindow* theView )
+{
+  Handle(V3d_View) aView = theView->getViewPort()->getView();
+  Handle(V3d_View) aMainView = myViews.at( MAIN_VIEW )->getViewPort()->getView();
+
+  // set ray tracing parameters
+  aView->ChangeRenderingParams() = aMainView->RenderingParams();
+
+  // set environment texture parameters
+  aView->SetTextureEnv( aMainView->TextureEnv() );
+}
+
 void OCCViewer_ViewFrame::splitSubViews()
 {
        if( mySplitMode == -1 )
                return;
 
-  int aNbViews;
+  int aNbViews = 1;
   if ( mySplitMode >= 0 && mySplitMode < 2)
     aNbViews = 2;
   else if( mySplitMode >= 2 && mySplitMode < 8 )
@@ -187,7 +202,7 @@ void OCCViewer_ViewFrame::splitSubViews()
     aNbViews = 4;
 
   if( aNbViews != myViewsMode.count() )
-       return;
+    return;
 
   int SubViews3Map[6][3][4] = {
     { {0,0,1,1}, {0,1,1,1}, {0,2,1,1} },
@@ -339,6 +354,20 @@ void OCCViewer_ViewFrame::setProjectionType( int t)
   }
 }
 
+//**************************************************************************************
+OCCViewer_ViewWindow::SelectionStyle OCCViewer_ViewFrame::selectionStyle() const
+{
+  return getView(MAIN_VIEW)->selectionStyle();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setSelectionStyle(OCCViewer_ViewWindow::SelectionStyle t)
+{
+  foreach(OCCViewer_ViewWindow* aView, myViews) {
+    aView->setSelectionStyle(t);
+  }
+}
+
 //**************************************************************************************
 int OCCViewer_ViewFrame::stereoType() const
 {
@@ -708,3 +737,12 @@ void OCCViewer_ViewFrame::enablePreselection( bool isEnabled )
     aView->enablePreselection(isEnabled); 
   }
 }
+
+bool OCCViewer_ViewFrame::enableDrawMode( bool on )
+{
+  bool prev = false;
+  foreach (OCCViewer_ViewWindow* aView, myViews) {
+    prev = prev || aView->enableDrawMode( on ); 
+  }
+  return prev;
+}