1 #ifndef _vvSurfaceViewerDialog_CXX
2 #define _vvSurfaceViewerDialog_CXX
6 #include "vvSurfaceViewerDialog.h"
7 #include "vtkOBJReader.h"
8 #include "vtkInteractorStyle.h"
11 #include "vtkPolyDataMapper.h"
13 #include "vtkPolyData.h"
14 #include "vtkRenderWindow.h"
15 #include "vtkRendererCollection.h"
16 #include "vtkRenderer.h"
18 #include <QMessageBox>
20 //----------------------------------------------------------------------------
21 class vvManagerCallback : public vtkCommand
24 static vvManagerCallback *New() {
25 return new vvManagerCallback;
28 void Execute(vtkObject *caller,
30 void *vtkNotUsed(callData))
32 vtkInteractorStyle *isi = static_cast<vtkInteractorStyle *>(caller);
35 std::string KeyPress = isi->GetInteractor()->GetKeySym();
36 if (KeyPress == "Left")
38 this->IV->PreviousTime();
40 if (KeyPress == "Right")
46 vvSurfaceViewerDialog *IV;
50 //====================================================================
51 vvSurfaceViewerDialog::vvSurfaceViewerDialog(QWidget * parent, Qt::WindowFlags f)
52 :QDialog(parent,f), Ui::vvSurfaceViewerDialog() {
63 connect(loadButton,SIGNAL(clicked()),this,SLOT(LoadSurface()));
66 vvSurfaceViewerDialog::~vvSurfaceViewerDialog()
68 for (unsigned int i = 0; i < mReaders.size();i++)
69 mReaders[i]->Delete();
81 void vvSurfaceViewerDialog::LoadSurface()
83 QString Extensions = "All Files (*)";
84 Extensions += ";;Surface ( *.vtk)";
85 QStringList files = QFileDialog::getOpenFileNames(this,tr("Load Surfaces"),tr(""),Extensions);
91 mMapper = vtkPolyDataMapper::New();
94 for (int i = 0; i < files.size(); i++)
96 vtkOBJReader* reader = vtkOBJReader::New();
97 reader->SetFileName(files[i].toStdString().c_str());
99 mReaders.push_back(reader);
102 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
106 mActor = vtkActor::New();
107 mActor->SetMapper(mMapper);
111 mRenderer = vtkRenderer::New();
112 mRenderer->AddActor(mActor);
113 renderWidget->GetRenderWindow()->AddRenderer(mRenderer);
116 mRenderer->ResetCamera();
117 renderWidget->GetRenderWindow()->Render();
119 vvManagerCallback *smc = vvManagerCallback::New();
122 if (renderWidget->GetRenderWindow()->GetInteractor())
123 renderWidget->GetRenderWindow()->GetInteractor()->
124 GetInteractorStyle()->AddObserver(vtkCommand::KeyPressEvent, smc);
125 //readHeader->Delete();
128 void vvSurfaceViewerDialog::NextTime()
131 if (mCurrentTime >= mReaders.size())
133 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
135 renderWidget->GetRenderWindow()->Render();
138 void vvSurfaceViewerDialog::PreviousTime()
141 if (mCurrentTime < 0)
142 mCurrentTime = mReaders.size() - 1;
143 mMapper->SetInput(mReaders[mCurrentTime]->GetOutput());
145 renderWidget->GetRenderWindow()->Render();
148 #endif /* end #define _vvSurfaceViewerDialog_CXX */