X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSurfaceViewerDialog.cxx;h=da0381a4521c918c375c9fd027b74c1026d12c67;hb=6aa95a9aeaacfa57a9a17a7aedf7798c5334079e;hp=f3e788b24195ecb02d985563cd64d8e5797d9abd;hpb=931a42358442f4ee4f314613c991c838d4b4e3b7;p=clitk.git diff --git a/vv/vvSurfaceViewerDialog.cxx b/vv/vvSurfaceViewerDialog.cxx index f3e788b..da0381a 100644 --- a/vv/vvSurfaceViewerDialog.cxx +++ b/vv/vvSurfaceViewerDialog.cxx @@ -1,32 +1,22 @@ -#ifndef _vvSurfaceViewerDialog_CXX -#define _vvSurfaceViewerDialog_CXX - /*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv -Program: vv -Module: $RCSfile: vvSurfaceViewerDialog.cxx,v $ -Language: C++ -Date: $Date: 2010/01/06 13:31:57 $ -Version: $Revision: 1.1 $ -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 . - -=========================================================================*/ + - 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 #include @@ -34,7 +24,7 @@ along with this program. If not, see . #include "vtkOBJReader.h" #include "vtkInteractorStyle.h" - +#include #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkPolyData.h" @@ -43,133 +33,146 @@ along with this program. If not, see . #include "vtkRenderer.h" #include +#include + +#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(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(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 */