X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2FvtkWriteDicomExtended.cxx;h=e03c8f15cf4ecb154397a49f307a8dd631500cc4;hb=fb1db702e2e94adb9c04387604dbe635726db898;hp=5d36725dc6ffb4f317e88c459d8298e2833c218c;hpb=b8eef7da99d83e85969d8f16d45ac3de470ebf16;p=gdcm.git diff --git a/vtk/vtkWriteDicomExtended.cxx b/vtk/vtkWriteDicomExtended.cxx index 5d36725d..e03c8f15 100755 --- a/vtk/vtkWriteDicomExtended.cxx +++ b/vtk/vtkWriteDicomExtended.cxx @@ -18,13 +18,14 @@ #endif #include "gdcmArgMgr.h" // for Argument Manager functions +#include "gdcmFile.h" //---------------------------------------------------------------------------- int main(int argc, char *argv[]) { START_USAGE(usage) " \n vtkWriteDicomExtended : \n", - " Reads a DICOM file and re writes it according to user's requierements. ", + " Reads a DICOM file and re writes it according to user's requirements. ", " ", " usage: vtkWriteDicomExtended filein=dicom file to read ", " [filecontent = ] [2D] ", @@ -42,7 +43,7 @@ int main(int argc, char *argv[]) // Initialize Arguments Manager - gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv); + GDCM_NAME_SPACE::ArgMgr *am= new GDCM_NAME_SPACE::ArgMgr(argc, argv); if (argc == 1 || am->ArgMgrDefined("usage") ) { @@ -51,26 +52,26 @@ int main(int argc, char *argv[]) return 0; } - int loadMode = gdcm::LD_ALL; + int loadMode = GDCM_NAME_SPACE::LD_ALL; if ( am->ArgMgrDefined("noshadowseq") ) - loadMode |= gdcm::LD_NOSHADOWSEQ; + loadMode |= GDCM_NAME_SPACE::LD_NOSHADOWSEQ; else { if ( am->ArgMgrDefined("noshadow") ) - loadMode |= gdcm::LD_NOSHADOW; + loadMode |= GDCM_NAME_SPACE::LD_NOSHADOW; if ( am->ArgMgrDefined("noseq") ) - loadMode |= gdcm::LD_NOSEQ; + loadMode |= GDCM_NAME_SPACE::LD_NOSEQ; } int filecontent = am->ArgMgrGetInt("filecontent", 1); char *filein = am->ArgMgrWantString("filein",usage); - char *fileout = am->ArgMgrWantString("fileout",usage); + char *fileout = (char *)(am->ArgMgrGetString("fileout","fileout")); if (am->ArgMgrDefined("debug")) - gdcm::Debug::DebugOn(); + GDCM_NAME_SPACE::Debug::DebugOn(); - bool deuxD = am->ArgMgrDefined("2D"); + int deuxD = am->ArgMgrDefined("2D"); /* if unused Param we give up */ if ( am->ArgMgrPrintUnusedLabels() ) @@ -80,11 +81,19 @@ int main(int argc, char *argv[]) return 0; } -// ------------------------------------------------------------ +// ------------------------------------------------------------ + std::vector cfl; + + GDCM_NAME_SPACE::File *f = GDCM_NAME_SPACE::File::New(); + f->SetFileName(filein); + f->Load(); + cfl.push_back(f); vtkGdcmReader *reader = vtkGdcmReader::New(); reader->AllowLookupTableOff(); - reader->SetFileName( argv[1] ); + //reader->SetFileName( filein ); + // in order not to parse twice the input file. + reader->SetCoherentFileList(&cfl); reader->Update(); vtkImageData *output; @@ -123,31 +132,38 @@ int main(int argc, char *argv[]) case 2: writer->SetContentTypeToFilteredImage(); + writer->SetGdcmFile( f ); fileName = fileName + "_FilteredImage.dcm"; break; case 3: writer->SetContentTypeToUserCreatedImage(); - fileName = fileName + "_FilteredImage.dcm"; + writer->SetGdcmFile( f ); + fileName = fileName + "_UserCreatedImage.dcm"; break; case 4: writer->SetContentTypeToUserCreatedImage(); + writer->SetGdcmFile( f ); fileName = fileName + "_UnmodifiedPixelsImage.dcm"; break; } - fileName += ".dcm"; +/// \todo : fix stupid generated image names (later : JPRx) - // For 3D - writer->SetFileDimensionality(3); - writer->SetFileName(fileName.c_str()); if(deuxD) { writer->SetFileDimensionality(2); writer->SetFilePrefix(fileout); writer->SetFilePattern("%s%d.dcm"); } + else + { + fileName += ".dcm"; + // For 3D + writer->SetFileDimensionality(3); + writer->SetFileName(fileName.c_str()); + } writer->SetInput(output); writer->Write();