X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSurfaceViewerDialog.cxx;h=0645ccfa95e8ea3c16d5c959a2cb35d6f7afd5e5;hb=5a7da4aedae5c204bc55c187717193e5950f9a44;hp=1d3d1b85f22ff6a16a8dd092fd4685b10512d694;hpb=0083c3fb2c66812489631c7551709d121de51625;p=clitk.git diff --git a/vv/vvSurfaceViewerDialog.cxx b/vv/vvSurfaceViewerDialog.cxx index 1d3d1b8..0645ccf 100644 --- a/vv/vvSurfaceViewerDialog.cxx +++ b/vv/vvSurfaceViewerDialog.cxx @@ -1,3 +1,20 @@ +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + 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 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. + + It is distributed under dual licence + + - 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 @@ -21,128 +38,121 @@ 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())); } 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); + } + + 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(); } 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; + mMapper->SetInput(mReaders[mCurrentTime]->GetOutput()); + 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; + mMapper->SetInput(mReaders[mCurrentTime]->GetOutput()); + mMapper->Modified(); + renderWidget->GetRenderWindow()->Render(); } #endif /* end #define _vvSurfaceViewerDialog_CXX */