Program: gdcm
Module: $RCSfile: VTKTestWrite.cxx,v $
Language: C++
- Date: $Date: 2005/01/19 10:49:47 $
- Version: $Revision: 1.2 $
+ Date: $Date: 2005/09/08 14:40:15 $
+ Version: $Revision: 1.11 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
-#include "gdcmFile.h"
#include "vtkGdcmReader.h"
#include "vtkGdcmWriter.h"
#include "vtkImageViewer.h"
//Generated file:
#include "gdcmDataImages.h"
+#include "gdcmDebug.h"
+
#ifndef vtkFloatingPointType
#define vtkFloatingPointType float
#endif
int VTKWriteTest(vtkTesting *t,vtkImageViewer *viewer,
- std::string const & filename,
- std::string const & referenceFileName,
- bool show )
+ std::string const &filename,
+ std::string const &referenceFileName)
{
- int retVal = 0; //by default this is an error
+ int retVal;
t->CleanArguments();
t->AddArgument("-D");
vtkGdcmReader *origin = vtkGdcmReader::New();
origin->SetFileName( filename.c_str() );
origin->Update();
-
+
+ std::cout << "1 ...";
+
// Write the image
vtkGdcmWriter *writer = vtkGdcmWriter::New();
writer->SetFileName( "TestWrite.dcm" );
writer->SetInput(origin->GetOutput());
+ std::cout << "2' ...",
writer->Write();
+ std::cout << "2'' ...";
origin->Delete();
writer->Delete();
reader->SetFileName( "TestWrite.dcm" );
reader->Update();
+ std::cout << "3 ...";
+ double range[2];
+ reader->GetOutput()->GetScalarRange(range);
int dim[3];
reader->GetOutput()->GetDimensions( dim );
// Show
- if( show )
+ if( viewer )
{
viewer->SetInput ( reader->GetOutput() );
- vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
viewer->SetColorWindow (range[1] - range[0]);
viewer->SetColorLevel (0.5 * (range[1] + range[0]));
viewer->SetSize(dim[0], dim[1]);
if(dim[2] != 1)
{
- //For multifame dicom, take a snapshot of the center slice (+/- 1)
+ //For multiframe dicom, take a snapshot of the center slice (+/- 1)
viewer->SetZSlice( dim[2] / 2 );
}
else
viewer->SetInput(NULL);
}
+ std::cout << std::endl;
//----------------------------------------------------------------------
// Transform the image to be RGB unsigned char, due to the requests in
// vtkTesting processing
clip->SetInput(image);
clip->SetOutputWholeExtent(ext[0],ext[1],ext[2],ext[3],
ext[4]+dim[2] / 2,ext[4]+dim[2] / 2);
+ clip->ClipDataOn();
vtkImageTranslateExtent *translat=vtkImageTranslateExtent::New();
translat->SetInput(clip->GetOutput());
translat->SetTranslation(0,0,-ext[4]-dim[2] / 2);
// Set an unsigned char image
// Shift/Scale the image
image->Update();
- double *rng=image->GetScalarRange();
vtkImageShiftScale *iss=vtkImageShiftScale::New();
iss->SetInput(image);
iss->SetOutputScalarTypeToUnsignedChar();
- iss->SetShift(-rng[0]);
- iss->SetScale(255.0/(rng[1]-rng[0]));
+ iss->SetShift(-range[0]);
+ iss->SetScale(255.0/(range[1]-range[0]));
iss->ClampOverflowOn();
image->UnRegister(NULL);
}
}
+// gdcm::Debug::DebugOn();
+
int ret = 0;
- vtkTesting* t = vtkTesting::New();
+ vtkTesting *t = vtkTesting::New();
vtkImageViewer *viewer;
if( show )
viewer = vtkImageViewer::New();
}
else
{
- ret = VTKWriteTest(t,viewer,argv[1+show],argv[2+show],show);
+ ret = VTKWriteTest(t,viewer,argv[1+show],argv[2+show]);
t->Delete();
- viewer->Delete();
+ if( viewer )
+ viewer->Delete();
return ret;
}
pngfile.insert( 0, "Baseline/");
//std::cerr << "PNG file: " << pngfile << std::endl;
- ret += VTKWriteTest(t,viewer,filename,pngfile,show);
+ ret += VTKWriteTest(t,viewer,filename,pngfile);
}
t->Delete();
- if(viewer)
+ if( viewer )
viewer->Delete();
return ret;