1 #ifndef _vvSurfaceViewerDialog_CXX
2 #define _vvSurfaceViewerDialog_CXX
4 /*=========================================================================
7 Module: $RCSfile: vvSurfaceViewerDialog.cxx,v $
9 Date: $Date: 2010/01/06 13:31:57 $
10 Version: $Revision: 1.1 $
11 Author : David Sarrut (david.sarrut@gmail.com)
14 Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
15 CREATIS-LRMN http://www.creatis.insa-lyon.fr
17 This program is free software: you can redistribute it and/or modify
18 it under the terms of the GNU General Public License as published by
19 the Free Software Foundation, version 3 of the License.
21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 GNU General Public License for more details.
26 You should have received a copy of the GNU General Public License
27 along with this program. If not, see <http://www.gnu.org/licenses/>.
29 =========================================================================*/
33 #include "vvSurfaceViewerDialog.h"
34 #include "vtkOBJReader.h"
35 #include "vtkInteractorStyle.h"
38 #include "vtkPolyDataMapper.h"
40 #include "vtkPolyData.h"
41 #include "vtkRenderWindow.h"
42 #include "vtkRendererCollection.h"
43 #include "vtkRenderer.h"
45 #include <QMessageBox>
47 //----------------------------------------------------------------------------
48 class vvManagerCallback : public vtkCommand
51 static vvManagerCallback *New() {
52 return new vvManagerCallback;
55 void Execute(vtkObject *caller,
57 void *vtkNotUsed(callData))
59 vtkInteractorStyle *isi = static_cast<vtkInteractorStyle *>(caller);
62 std::string KeyPress = isi->GetInteractor()->GetKeySym();
63 if (KeyPress == "Left")
65 this->IV->PreviousTime();
67 if (KeyPress == "Right")
73 vvSurfaceViewerDialog *IV;
77 //====================================================================
78 vvSurfaceViewerDialog::vvSurfaceViewerDialog(QWidget * parent, Qt::WindowFlags f)
79 :QDialog(parent,f), Ui::vvSurfaceViewerDialog() {
90 connect(loadButton,SIGNAL(clicked()),this,SLOT(LoadSurface()));
93 vvSurfaceViewerDialog::~vvSurfaceViewerDialog()
95 for (unsigned int i = 0; i < mReaders.size();i++)
96 mReaders[i]->Delete();
108 void vvSurfaceViewerDialog::LoadSurface()
110 QString Extensions = "All Files (*)";
111 Extensions += ";;Surface ( *.vtk)";
112 QStringList files = QFileDialog::getOpenFileNames(this,tr("Load Surfaces"),tr(""),Extensions);
118 mMapper = vtkPolyDataMapper::New();
121 for (int i = 0; i < files.size(); i++)
123 vtkOBJReader* reader = vtkOBJReader::New();
124 reader->SetFileName(files[i].toStdString().c_str());
126 mReaders.push_back(reader);
129 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
133 mActor = vtkActor::New();
134 mActor->SetMapper(mMapper);
138 mRenderer = vtkRenderer::New();
139 mRenderer->AddActor(mActor);
140 renderWidget->GetRenderWindow()->AddRenderer(mRenderer);
143 mRenderer->ResetCamera();
144 renderWidget->GetRenderWindow()->Render();
146 vvManagerCallback *smc = vvManagerCallback::New();
149 if (renderWidget->GetRenderWindow()->GetInteractor())
150 renderWidget->GetRenderWindow()->GetInteractor()->
151 GetInteractorStyle()->AddObserver(vtkCommand::KeyPressEvent, smc);
152 //readHeader->Delete();
155 void vvSurfaceViewerDialog::NextTime()
158 if (mCurrentTime >= mReaders.size())
160 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
162 renderWidget->GetRenderWindow()->Render();
165 void vvSurfaceViewerDialog::PreviousTime()
168 if (mCurrentTime < 0)
169 mCurrentTime = mReaders.size() - 1;
170 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
172 renderWidget->GetRenderWindow()->Render();
175 #endif /* end #define _vvSurfaceViewerDialog_CXX */