From: malaterre Date: Mon, 27 Oct 2003 13:43:57 +0000 (+0000) Subject: *ENH: Added CharEvent to browse throught a multiframe volume, press any key it will... X-Git-Tag: Version0.3.1~84 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=a2f6b3afa53313f320d92c0dad00b82b215cb156;p=gdcm.git *ENH: Added CharEvent to browse throught a multiframe volume, press any key it will lopp over frames. --- diff --git a/vtk/vtkgdcmViewer.cxx b/vtk/vtkgdcmViewer.cxx index 5038e3a2..226e12ac 100644 --- a/vtk/vtkgdcmViewer.cxx +++ b/vtk/vtkgdcmViewer.cxx @@ -2,15 +2,45 @@ #include #include #include +#include #include "vtkGdcmReader.h" +//---------------------------------------------------------------------------- +// Callback for the interaction +class vtkgdcmObserver : public vtkCommand +{ + public: + virtual char const *GetClassName() const { return "vtkgdcmObserver";} + static vtkgdcmObserver *New() + { return new vtkgdcmObserver; } + vtkgdcmObserver() + { + this->ImageViewer = NULL; + } + virtual void Execute(vtkObject *wdg, unsigned long event, void* calldata) + { + if ( this->ImageViewer ) + { + if ( event == vtkCommand::CharEvent ) + { + int max = ImageViewer->GetWholeZMax(); + int slice = (ImageViewer->GetZSlice() + 1 ) % ++max; + ImageViewer->SetZSlice( slice ); + ImageViewer->Render(); + } + } + } + vtkImageViewer2 *ImageViewer; +}; + + int main(int argc, char *argv[]) { vtkGdcmReader *reader = vtkGdcmReader::New(); reader->SetFileName( argv[1] ); - //reader->DebugOn(); + reader->DebugOn(); reader->Update(); //print debug info: @@ -26,6 +56,12 @@ int main(int argc, char *argv[]) // viewer->SetColorWindow (range[1] - range[0]); // viewer->SetColorLevel (0.5 * (range[1] + range[0])); + // Here is where we setup the observer, + vtkgdcmObserver *obs = vtkgdcmObserver::New(); + obs->ImageViewer = viewer; + iren->AddObserver(vtkCommand::CharEvent,obs); + obs->Delete(); + iren->Initialize(); iren->Start();