X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSurfaceViewerDialog.cxx;h=da0381a4521c918c375c9fd027b74c1026d12c67;hb=bff12b935c8c8f9c55f474e7b773fa8fa9d84865;hp=2a8ee9ea48aa7ff2426001f7307b417b65cab3dd;hpb=0b7c9b1e1215634b02cbd38d4e4ba101d6111ba8;p=clitk.git diff --git a/vv/vvSurfaceViewerDialog.cxx b/vv/vvSurfaceViewerDialog.cxx index 2a8ee9e..da0381a 100644 --- a/vv/vvSurfaceViewerDialog.cxx +++ b/vv/vvSurfaceViewerDialog.cxx @@ -1,9 +1,9 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - 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 @@ -24,7 +24,7 @@ #include "vtkOBJReader.h" #include "vtkInteractorStyle.h" - +#include #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkPolyData.h" @@ -33,133 +33,146 @@ #include "vtkRenderer.h" #include +#include + +#ifdef Q_OS_OSX +# include "vvOSXHelper.h" +#endif //---------------------------------------------------------------------------- class vvManagerCallback : public vtkCommand { public: - static vvManagerCallback *New() { - return new vvManagerCallback; + 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(); + } } - - 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 */