1 #ifndef _vvSurfaceViewerDialog_CXX
2 #define _vvSurfaceViewerDialog_CXX
4 /*=========================================================================
8 Author : David Sarrut (david.sarrut@gmail.com)
11 Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
12 CREATIS-LRMN http://www.creatis.insa-lyon.fr
14 This program is free software: you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation, version 3 of the License.
18 This program is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
23 You should have received a copy of the GNU General Public License
24 along with this program. If not, see <http://www.gnu.org/licenses/>.
26 =========================================================================*/
30 #include "vvSurfaceViewerDialog.h"
31 #include "vtkOBJReader.h"
32 #include "vtkInteractorStyle.h"
35 #include "vtkPolyDataMapper.h"
37 #include "vtkPolyData.h"
38 #include "vtkRenderWindow.h"
39 #include "vtkRendererCollection.h"
40 #include "vtkRenderer.h"
42 #include <QMessageBox>
44 //----------------------------------------------------------------------------
45 class vvManagerCallback : public vtkCommand
48 static vvManagerCallback *New() {
49 return new vvManagerCallback;
52 void Execute(vtkObject *caller,
54 void *vtkNotUsed(callData))
56 vtkInteractorStyle *isi = static_cast<vtkInteractorStyle *>(caller);
59 std::string KeyPress = isi->GetInteractor()->GetKeySym();
60 if (KeyPress == "Left")
62 this->IV->PreviousTime();
64 if (KeyPress == "Right")
70 vvSurfaceViewerDialog *IV;
74 //====================================================================
75 vvSurfaceViewerDialog::vvSurfaceViewerDialog(QWidget * parent, Qt::WindowFlags f)
76 :QDialog(parent,f), Ui::vvSurfaceViewerDialog() {
87 connect(loadButton,SIGNAL(clicked()),this,SLOT(LoadSurface()));
90 vvSurfaceViewerDialog::~vvSurfaceViewerDialog()
92 for (unsigned int i = 0; i < mReaders.size();i++)
93 mReaders[i]->Delete();
105 void vvSurfaceViewerDialog::LoadSurface()
107 QString Extensions = "All Files (*)";
108 Extensions += ";;Surface ( *.vtk)";
109 QStringList files = QFileDialog::getOpenFileNames(this,tr("Load Surfaces"),tr(""),Extensions);
115 mMapper = vtkPolyDataMapper::New();
118 for (int i = 0; i < files.size(); i++)
120 vtkOBJReader* reader = vtkOBJReader::New();
121 reader->SetFileName(files[i].toStdString().c_str());
123 mReaders.push_back(reader);
126 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
130 mActor = vtkActor::New();
131 mActor->SetMapper(mMapper);
135 mRenderer = vtkRenderer::New();
136 mRenderer->AddActor(mActor);
137 renderWidget->GetRenderWindow()->AddRenderer(mRenderer);
140 mRenderer->ResetCamera();
141 renderWidget->GetRenderWindow()->Render();
143 vvManagerCallback *smc = vvManagerCallback::New();
146 if (renderWidget->GetRenderWindow()->GetInteractor())
147 renderWidget->GetRenderWindow()->GetInteractor()->
148 GetInteractorStyle()->AddObserver(vtkCommand::KeyPressEvent, smc);
149 //readHeader->Delete();
152 void vvSurfaceViewerDialog::NextTime()
155 if (mCurrentTime >= mReaders.size())
157 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
159 renderWidget->GetRenderWindow()->Render();
162 void vvSurfaceViewerDialog::PreviousTime()
165 if (mCurrentTime < 0)
166 mCurrentTime = mReaders.size() - 1;
167 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
169 renderWidget->GetRenderWindow()->Render();
172 #endif /* end #define _vvSurfaceViewerDialog_CXX */