-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015 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
// 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
#include "OCCViewer_ViewFrame.h"
#include "OCCViewer_ViewWindow.h"
#include "OCCViewer_ViewModel.h"
+#include "OCCViewer_ViewPort3d.h"
#include <SUIT_ViewManager.h>
#include <SUIT_Session.h>
myLayout->addWidget( view0, 0, 0 );
myMaximizedView = view0;
+ myActiveView = view0;
connectViewSignals(view0);
}
return ( i >= 0 && i < myViews.count() ) ? myViews.at( i ) : 0 ;
}
+//**************************************************************************************
+OCCViewer_ViewWindow* OCCViewer_ViewFrame::getActiveView( ) const
+{
+ return myActiveView;
+}
+
//**************************************************************************************
void OCCViewer_ViewFrame::setViewManager( SUIT_ViewManager* theMgr )
{
view = myViews.at(i);
view->setVisible( view->get2dMode() == No2dMode );
view->setMaximized( true, false );
- if (view->get2dMode() == No2dMode) myMaximizedView = view;
+ if (view->get2dMode() == No2dMode) {
+ myMaximizedView = view;
+ myActiveView = view;
+ }
}
myLayout->setColumnStretch(0, 0);
myLayout->setColumnStretch(1, 0);
void OCCViewer_ViewFrame::onMaximizedView( OCCViewer_ViewWindow* theView, bool isMaximized)
{
myMaximizedView = theView;
+ myActiveView = theView;
if (isMaximized) {
if (myViews.count() <= 1)
return;
mySplitMode = CreateSubViewsDlg.getSplitMode();
myViewsMode = CreateSubViewsDlg.getViewsMode();
splitSubViews();
- }
- else {
- myMaximizedView->setMaximized(true);
+ myMaximizedView->setMaximized(false, false);
}
}
myLayout->invalidate();
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() );
+ aView->SetSurfaceDetail( aMainView->SurfaceDetail() );
+}
+
void OCCViewer_ViewFrame::splitSubViews()
{
if( mySplitMode == -1 )
}
}
+//**************************************************************************************
+int OCCViewer_ViewFrame::projectionType() const
+{
+ return getView(MAIN_VIEW)->projectionType();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setProjectionType( int t)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setProjectionType(t);
+ }
+}
+
+//**************************************************************************************
+int OCCViewer_ViewFrame::stereoType() const
+{
+ return getView(MAIN_VIEW)->stereoType();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setStereoType( int t)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setStereoType(t);
+ }
+}
+
+//**************************************************************************************
+int OCCViewer_ViewFrame::anaglyphFilter() const
+{
+ return getView(MAIN_VIEW)->anaglyphFilter();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setAnaglyphFilter( int t)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setAnaglyphFilter(t);
+ }
+}
+
+//**************************************************************************************
+int OCCViewer_ViewFrame::stereographicFocusType() const
+{
+ return getView(MAIN_VIEW)->stereographicFocusType();
+}
+
+//**************************************************************************************
+double OCCViewer_ViewFrame::stereographicFocusValue() const
+{
+ return getView(MAIN_VIEW)->stereographicFocusValue();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setStereographicFocus( int t, double v)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setStereographicFocus(t, v);
+ }
+}
+
+//**************************************************************************************
+int OCCViewer_ViewFrame::interocularDistanceType() const
+{
+ return getView(MAIN_VIEW)->interocularDistanceType();
+}
+
+//**************************************************************************************
+double OCCViewer_ViewFrame::interocularDistanceValue() const
+{
+ return getView(MAIN_VIEW)->interocularDistanceValue();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setInterocularDistance( int t, double v)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setInterocularDistance(t, v);
+ }
+}
+
+//**************************************************************************************
+bool OCCViewer_ViewFrame::isReverseStereo() const
+{
+ return getView(MAIN_VIEW)->isReverseStereo();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setReverseStereo( bool t)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setReverseStereo(t);
+ }
+}
+
+//**************************************************************************************
+bool OCCViewer_ViewFrame::isVSync() const
+{
+ return getView(MAIN_VIEW)->isVSync();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setVSync( bool t)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setVSync(t);
+ }
+}
+
+//**************************************************************************************
+bool OCCViewer_ViewFrame::isQuadBufferSupport() const
+{
+ return getView(MAIN_VIEW)->isQuadBufferSupport();
+}
+
+//**************************************************************************************
+void OCCViewer_ViewFrame::setQuadBufferSupport( bool t)
+{
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ aView->setQuadBufferSupport(t);
+ }
+}
+
//**************************************************************************************
void OCCViewer_ViewFrame::setZoomingStyle( const int i )
{
this, SIGNAL( mouseDoubleClicked(SUIT_ViewWindow*, QMouseEvent*) ) );
connect( theView, SIGNAL( mousePressed(SUIT_ViewWindow*, QMouseEvent*) ),
this, SIGNAL( mousePressed(SUIT_ViewWindow*, QMouseEvent*) ) );
+ // The signal is used to mouse pressed for choose the current window
+ connect( theView, SIGNAL( mousePressed(SUIT_ViewWindow*, QMouseEvent*) ),
+ this, SLOT( onMousePressed(SUIT_ViewWindow*, QMouseEvent*) ) );
connect( theView, SIGNAL( mouseReleased(SUIT_ViewWindow*, QMouseEvent*) ),
this, SIGNAL( mouseReleased(SUIT_ViewWindow*, QMouseEvent*) ) );
connect( theView, SIGNAL( mouseMoving(SUIT_ViewWindow*, QMouseEvent*) ),
return getView(MAIN_VIEW)->background();
}
+void OCCViewer_ViewFrame::showStaticTrihedron( bool on )
+{
+ if ( myPopupRequestedView )
+ myPopupRequestedView->showStaticTrihedron( on );
+ else {
+ foreach ( OCCViewer_ViewWindow* aView, myViews ) {
+ aView->showStaticTrihedron( on );
+ }
+ }
+}
+
QImage OCCViewer_ViewFrame::dumpView()
{
foreach (OCCViewer_ViewWindow* aView, myViews) {
myPopupRequestedView = dynamic_cast<OCCViewer_ViewWindow*>(sender());
}
+void OCCViewer_ViewFrame::onMousePressed(SUIT_ViewWindow* view, QMouseEvent*)
+{
+ myActiveView = dynamic_cast<OCCViewer_ViewWindow*>(view);
+}
+
void OCCViewer_ViewFrame::onDumpView()
{
if (myPopupRequestedView) {
aView->enablePreselection(isEnabled);
}
}
+
+bool OCCViewer_ViewFrame::enableDrawMode( bool on )
+{
+ bool prev = false;
+ foreach (OCCViewer_ViewWindow* aView, myViews) {
+ prev = prev || aView->enableDrawMode( on );
+ }
+ return prev;
+}