X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2FvtkgdcmViewer.cxx;h=709d93da50129a8e50839f51b913ee7dc1acd47c;hb=d58a7d319d70fccc3c56e7d0fd96afc8a4792a88;hp=f48766a1cd8b6ed77390080b30f5db7c09db5e7d;hpb=43482d0567f0b3e1ac0d292f636221a569266383;p=gdcm.git diff --git a/vtk/vtkgdcmViewer.cxx b/vtk/vtkgdcmViewer.cxx index f48766a1..709d93da 100644 --- a/vtk/vtkgdcmViewer.cxx +++ b/vtk/vtkgdcmViewer.cxx @@ -1,12 +1,20 @@ +#include + #include #include #include #include #include #include +#include +#include #include "vtkGdcmReader.h" +#ifndef vtkFloatingPointType +#define vtkFloatingPointType float +#endif + //---------------------------------------------------------------------------- // Callback for the interaction class vtkgdcmObserver : public vtkCommand @@ -19,7 +27,7 @@ class vtkgdcmObserver : public vtkCommand { this->ImageViewer = NULL; } - virtual void Execute(vtkObject *wdg, unsigned long event, void* calldata) + virtual void Execute(vtkObject *, unsigned long event, void* ) { if ( this->ImageViewer ) { @@ -27,9 +35,8 @@ class vtkgdcmObserver : public vtkCommand { int max = ImageViewer->GetWholeZMax(); int slice = (ImageViewer->GetZSlice() + 1 ) % ++max; - std::cout << "Slice:" << slice << "," << max << std::endl; ImageViewer->SetZSlice( slice ); - ImageViewer->GetRenderer()->ResetCameraClippingRange(); + ImageViewer->GetRenderer()->ResetCameraClippingRange(); ImageViewer->Render(); } } @@ -40,24 +47,47 @@ class vtkgdcmObserver : public vtkCommand int main(int argc, char *argv[]) { - + if( argc < 2 ) + return 0; + vtkGdcmReader *reader = vtkGdcmReader::New(); - reader->SetFileName( argv[1] ); + reader->AllowLookupTableOff(); + + if( argc == 2 ) + reader->SetFileName( argv[1] ); + else + for(int i=1; i< argc; i++) + reader->AddFileName( argv[i] ); + reader->DebugOn(); reader->Update(); //print debug info: - reader->GetOutput()->Print( std::cout ); + reader->GetOutput()->Print( cout ); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); vtkImageViewer2 *viewer = vtkImageViewer2::New(); - viewer->SetInput ( reader->GetOutput() ); + + if( reader->GetLookupTable() ) + { + //convert to color: + vtkImageMapToColors *map = vtkImageMapToColors::New (); + map->SetInput (reader->GetOutput()); + map->SetLookupTable (reader->GetLookupTable()); + map->SetOutputFormatToRGB(); + viewer->SetInput ( map->GetOutput() ); + map->Delete(); + } + else + { + viewer->SetInput ( reader->GetOutput() ); + } viewer->SetupInteractor (iren); -// float *range = reader->GetOutput()->GetScalarRange(); -// viewer->SetColorWindow (range[1] - range[0]); -// viewer->SetColorLevel (0.5 * (range[1] + range[0])); + //vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange(); + //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();