00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date: 2009-07-14 19:11:20 +0200 (Tue, 14 Jul 2009) $ 00006 Version: $Revision: 18127 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "QmitkSelectableGLWidget.h" 00019 #include "QmitkRenderWindow.h" 00020 00021 #include <QWheelEvent> 00022 00023 QmitkSelectableGLWidget::QmitkSelectableGLWidget(QWidget* parent) 00024 : QWidget(parent) 00025 { 00026 setupUi(this); 00027 QLayout *hlayout; 00028 hlayout=layout(); 00029 hlayout->setMargin(3); 00030 //hlayout->setAutoAdd(true); 00031 00032 QString rendererName("Renderer::"); 00033 rendererName += objectName(); 00034 00035 // create Renderer 00036 m_Renderer= mitk::VtkPropRenderer::New( qPrintable(rendererName), NULL, mitk::RenderingManager::GetInstance() ); 00037 00038 // create widget 00039 QString composedName("QSGLWt::"); 00040 if(!objectName().isEmpty()) 00041 composedName+=objectName(); 00042 else 00043 composedName+="QmitkGLWidget"; 00044 /* 00045 * here is the place to define QT-Flags to enable and disable certain OpenGL elements, like StencilBuffer, RGBA and so on. 00046 * See QGLFormat for futher informations 00047 * QGL::AlphaChannel: Enable Alpha in Framebuffer 00048 * QGL::Rgba enable use of rgba rather than color_index 00049 * QGL::StencilBuffer for use of stencilbuffer in OpenGL 00050 */ 00051 m_RenderWindow = new QmitkRenderWindow(this, composedName,m_Renderer); 00052 00053 hlayout->addWidget(m_RenderWindow); 00054 00055 } 00056 00057 00058 mitk::VtkPropRenderer* QmitkSelectableGLWidget::GetRenderer() 00059 { 00060 return m_Renderer.GetPointer(); 00061 } 00062 00063 00064 QmitkRenderWindow* QmitkSelectableGLWidget::GetRenderWindow() const 00065 { 00066 return m_RenderWindow; 00067 } 00068 00069 00070 void QmitkSelectableGLWidget::wheelEvent( QWheelEvent * e ) 00071 { 00072 if ( m_RenderWindow->GetSliceNavigationController()->GetSliceLocked() ) 00073 return; 00074 00075 mitk::Stepper* stepper = m_RenderWindow 00076 ->GetSliceNavigationController()->GetSlice(); 00077 00078 if (stepper->GetSteps() <= 1) 00079 { 00080 stepper = m_RenderWindow->GetSliceNavigationController()->GetTime(); 00081 } 00082 00083 if (e->orientation() * e->delta() > 0) 00084 { 00085 stepper->Next(); 00086 } 00087 else 00088 { 00089 stepper->Previous(); 00090 } 00091 } 00092 00093 00094 mitk::SliceNavigationController* 00095 QmitkSelectableGLWidget 00096 ::GetSliceNavigationController() const 00097 { 00098 return m_RenderWindow->GetSliceNavigationController(); 00099 } 00100 00101 00102 mitk::CameraRotationController* 00103 QmitkSelectableGLWidget 00104 ::GetCameraRotationController() const 00105 { 00106 return m_RenderWindow->GetCameraRotationController(); 00107 } 00108 00109 00110 mitk::BaseController* 00111 QmitkSelectableGLWidget 00112 ::GetController() const 00113 { 00114 return m_RenderWindow->GetController(); 00115 }