]> Creatis software - clitk.git/blobdiff - vv/vvSurfaceViewerDialog.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvSurfaceViewerDialog.cxx
index d227669db78100446f6645165e7522e33d8a7774..da0381a4521c918c375c9fd027b74c1026d12c67 100644 (file)
@@ -1,29 +1,22 @@
-#ifndef _vvSurfaceViewerDialog_CXX
-#define _vvSurfaceViewerDialog_CXX
-
 /*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-Program:   vv
-Language:  C++
-Author :   David Sarrut (david.sarrut@gmail.com)
-
-Copyright (C) 2008
-Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
-CREATIS-LRMN http://www.creatis.insa-lyon.fr
+  Authors belong to:
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
+  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, version 3 of the License.
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the copyright notices for more information.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+  It is distributed under dual licence
 
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-=========================================================================*/
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
+#ifndef _vvSurfaceViewerDialog_CXX
+#define _vvSurfaceViewerDialog_CXX
 #include <QtGui>
 #include <Qt>
 
@@ -31,7 +24,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "vtkOBJReader.h"
 #include "vtkInteractorStyle.h"
 
-
+#include <vtkVersion.h>
 #include "vtkPolyDataMapper.h"
 #include "vtkActor.h"
 #include "vtkPolyData.h"
@@ -40,133 +33,146 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "vtkRenderer.h"
 
 #include <QMessageBox>
+#include <QFileDialog>
+
+#ifdef Q_OS_OSX
+# include "vvOSXHelper.h"
+#endif
 
 //----------------------------------------------------------------------------
 class vvManagerCallback : public vtkCommand
 {
 public:
-    static vvManagerCallback *New() {
-        return new vvManagerCallback;
-    }
-
-    void Execute(vtkObject *caller,
-                 unsigned long event,
-                 void *vtkNotUsed(callData))
-    {
-        vtkInteractorStyle *isi = static_cast<vtkInteractorStyle *>(caller);
-        if (isi)
-        {
-            std::string KeyPress = isi->GetInteractor()->GetKeySym();
-            if (KeyPress == "Left")
-            {
-                this->IV->PreviousTime();
-            }
-            if (KeyPress == "Right")
-            {
-                this->IV->NextTime();
-            }
-        }
+  static vvManagerCallback *New() {
+    return new vvManagerCallback;
+  }
+
+  void Execute(vtkObject *caller,
+               unsigned long event,
+               void *vtkNotUsed(callData)) {
+    vtkInteractorStyle *isi = static_cast<vtkInteractorStyle *>(caller);
+    if (isi) {
+      std::string KeyPress = isi->GetInteractor()->GetKeySym();
+      if (KeyPress == "Left") {
+        this->IV->PreviousTime();
+      }
+      if (KeyPress == "Right") {
+        this->IV->NextTime();
+      }
     }
-    vvSurfaceViewerDialog *IV;
+  }
+  vvSurfaceViewerDialog *IV;
 };
 
 
 //====================================================================
 vvSurfaceViewerDialog::vvSurfaceViewerDialog(QWidget * parent, Qt::WindowFlags f)
-        :QDialog(parent,f), Ui::vvSurfaceViewerDialog() {
+  :QDialog(parent,f), Ui::vvSurfaceViewerDialog()
+{
 
-    // initialization
-    setupUi(this);
+  // initialization
+  setupUi(this);
 
-    mReaders.clear();
-    mMapper = NULL;
-    mActor = NULL;
-    mRenderer = NULL;
-    mCurrentTime = 0;
+  mReaders.clear();
+  mMapper = NULL;
+  mActor = NULL;
+  mRenderer = NULL;
+  mCurrentTime = 0;
 
-    connect(loadButton,SIGNAL(clicked()),this,SLOT(LoadSurface()));
+  connect(loadButton,SIGNAL(clicked()),this,SLOT(LoadSurface()));
+
+#ifdef Q_OS_OSX
+  disableGLHiDPI(renderWidget->winId());
+#endif
 }
 
 vvSurfaceViewerDialog::~vvSurfaceViewerDialog()
 {
-    for (unsigned int i = 0; i < mReaders.size();i++)
-        mReaders[i]->Delete();
+  for (unsigned int i = 0; i < mReaders.size(); i++)
+    mReaders[i]->Delete();
 
-    if (mMapper)
-        mMapper->Delete();
+  if (mMapper)
+    mMapper->Delete();
 
-    if (mActor)
-        mActor->Delete();
+  if (mActor)
+    mActor->Delete();
 
-    if (mRenderer)
-        mRenderer->Delete();
+  if (mRenderer)
+    mRenderer->Delete();
 }
 
 void vvSurfaceViewerDialog::LoadSurface()
 {
-    QString Extensions = "All Files (*)";
-    Extensions += ";;Surface ( *.vtk)";
-    QStringList files = QFileDialog::getOpenFileNames(this,tr("Load Surfaces"),tr(""),Extensions);
-    if (files.isEmpty())
-        return;
-
-    if (!mMapper)
-    {
-        mMapper = vtkPolyDataMapper::New();
-    }
-
-    for (int i = 0; i < files.size(); i++)
-    {
-        vtkOBJReader* reader = vtkOBJReader::New();
-        reader->SetFileName(files[i].toStdString().c_str());
-        reader->Update();
-        mReaders.push_back(reader);
-    }
-
-    mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
-
-    if (!mActor)
-    {
-        mActor = vtkActor::New();
-        mActor->SetMapper(mMapper);
-    }
-    if (!mRenderer)
-    {
-        mRenderer = vtkRenderer::New();
-        mRenderer->AddActor(mActor);
-        renderWidget->GetRenderWindow()->AddRenderer(mRenderer);
-    }
-
-    mRenderer->ResetCamera();
-    renderWidget->GetRenderWindow()->Render();
-
-    vvManagerCallback *smc = vvManagerCallback::New();
-    smc->IV = this;
-
-    if (renderWidget->GetRenderWindow()->GetInteractor())
-        renderWidget->GetRenderWindow()->GetInteractor()->
-        GetInteractorStyle()->AddObserver(vtkCommand::KeyPressEvent, smc);
-    //readHeader->Delete();
+  QString Extensions = "All Files (*)";
+  Extensions += ";;Surface ( *.vtk)";
+  QStringList files = QFileDialog::getOpenFileNames(this,tr("Load Surfaces"),tr(""),Extensions);
+  if (files.isEmpty())
+    return;
+
+  if (!mMapper) {
+    mMapper = vtkPolyDataMapper::New();
+  }
+
+  for (int i = 0; i < files.size(); i++) {
+    vtkOBJReader* reader = vtkOBJReader::New();
+    reader->SetFileName(files[i].toStdString().c_str());
+    reader->Update();
+    mReaders.push_back(reader);
+  }
+#if VTK_MAJOR_VERSION <= 5
+  mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
+#else
+  mMapper->SetInputConnection(mReaders[mCurrentTime]->GetOutputPort());
+#endif
+
+  if (!mActor) {
+    mActor = vtkActor::New();
+    mActor->SetMapper(mMapper);
+  }
+  if (!mRenderer) {
+    mRenderer = vtkRenderer::New();
+    mRenderer->AddActor(mActor);
+    renderWidget->GetRenderWindow()->AddRenderer(mRenderer);
+  }
+
+  mRenderer->ResetCamera();
+  renderWidget->GetRenderWindow()->Render();
+
+  vvManagerCallback *smc = vvManagerCallback::New();
+  smc->IV = this;
+
+  if (renderWidget->GetRenderWindow()->GetInteractor())
+    renderWidget->GetRenderWindow()->GetInteractor()->
+    GetInteractorStyle()->AddObserver(vtkCommand::KeyPressEvent, smc);
+  //readHeader->Delete();
 }
 
 void vvSurfaceViewerDialog::NextTime()
 {
-    mCurrentTime++;
-    if (mCurrentTime >= mReaders.size())
-        mCurrentTime = 0;
-    mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
-    mMapper->Modified();
-    renderWidget->GetRenderWindow()->Render();
+  mCurrentTime++;
+  if (mCurrentTime >= mReaders.size())
+    mCurrentTime = 0;
+#if VTK_MAJOR_VERSION <= 5
+  mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
+#else
+  mMapper->SetInputConnection(mReaders[mCurrentTime]->GetOutputPort());
+#endif
+  mMapper->Modified();
+  renderWidget->GetRenderWindow()->Render();
 }
 
 void vvSurfaceViewerDialog::PreviousTime()
 {
-    mCurrentTime--;
-    if (mCurrentTime < 0)
-        mCurrentTime = mReaders.size() - 1;
-    mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
-    mMapper->Modified();
-    renderWidget->GetRenderWindow()->Render();
+  mCurrentTime--;
+  if (mCurrentTime < 0)
+    mCurrentTime = (unsigned int) mReaders.size() - 1;
+#if VTK_MAJOR_VERSION <= 5
+  mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
+#else
+  mMapper->SetInputConnection(mReaders[mCurrentTime]->GetOutputPort());
+#endif
+  mMapper->Modified();
+  renderWidget->GetRenderWindow()->Render();
 }
 
 #endif /* end #define _vvSurfaceViewerDialog_CXX */