Program: gdcm
Module: $RCSfile: MakeDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/06/03 15:40:53 $
- Version: $Revision: 1.3 $
+ Date: $Date: 2005/07/07 17:31:53 $
+ Version: $Revision: 1.8 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmDirList.h"
#include "gdcmDebug.h"
+#include "gdcmArgMgr.h"
+
#include <iostream>
// ---
// ---
/**
- * \ingroup Test
- * \brief Explores recursively the given directory (or GDCM_DATA_ROOT by default)
+ * \brief Explores recursively the given directory
* orders the gdcm-readable found Files
* according their Patient/Study/Serie/Image characteristics
* makes the gdcmDicomDir
int main(int argc, char *argv[])
{
- // gdcm::Debug::DebugOn();
- std::string dirName;
-
- if (argc > 1)
+ START_USAGE(usage)
+ " \n MakeDicomDir :\n",
+ " Explores recursively the given directory, makes the relevant DICOMDIR",
+ " and writes it as 'NewDICOMDIR'",
+ " usage: MakeDicomDir dirname=rootDirectoryName [noshadowseq][noshadow][noseq] [debug] ",
+ " noshadowseq: user doesn't want to load Private Sequences",
+ " noshadow : user doesn't want to load Private groups (odd number)",
+ " noseq : user doesn't want to load Sequences ",
+ " debug : user wants to run the program in 'debug mode' ",
+ FINISH_USAGE
+
+ // ----- Initialize Arguments Manager ------
+ gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv);
+
+ if (argc == 1 || am->ArgMgrDefined("usage"))
{
- dirName = argv[1];
+ am->ArgMgrUsage(usage); // Display 'usage'
+ delete am;
+ return 0;
}
- else
+
+ char *dirName;
+ dirName = am->ArgMgrGetString("dirName",(char *)".");
+
+ int loadMode = 0x00000000;
+ if ( am->ArgMgrDefined("noshadowseq") )
+ loadMode |= NO_SHADOWSEQ;
+ else
{
- dirName = GDCM_DATA_ROOT;
+ if ( am->ArgMgrDefined("noshadow") )
+ loadMode |= NO_SHADOW;
+ if ( am->ArgMgrDefined("noseq") )
+ loadMode |= NO_SEQ;
}
- gdcm::DicomDir *dcmdir;
- // we ask for Directory parsing
+ if (am->ArgMgrDefined("debug"))
+ gdcm::Debug::DebugOn();
- // Old style (still available) :
- // dcmdir = new gdcm::DicomDir(dirName, true);
+ // if unused Param we give up
+ if ( am->ArgMgrPrintUnusedLabels() )
+ {
+ am->ArgMgrUsage(usage);
+ delete am;
+ return 0;
+ }
+
+ delete am; // we don't need Argument Manager any longer
+
+ // ----- Begin Processing -----
+
+ gdcm::DicomDir *dcmdir;
+
+ // we ask for Directory parsing
- // new style (user is allowed no to load Sequences an/or Shadow Groups)
dcmdir = new gdcm::DicomDir( );
dcmdir->SetParseDir(true);
-// some images have a wrong length for element 0x0000 of private groups
-// dcmdir->SetLoadMode(NO_SEQ | NO_SHADOW);
-
- dcmdir->SetLoadMode(NO_SEQ);
- dcmdir->Load(dirName);
dcmdir->SetStartMethod(StartMethod, (void *) NULL);
dcmdir->SetEndMethod(EndMethod);
-
+
+ dcmdir->SetLoadMode(loadMode);
+ dcmdir->SetFileName(dirName);
+
+ dcmdir->Load();
+
+ // ----- Check the result
+
if ( !dcmdir->GetFirstPatient() )
{
std::cout << "makeDicomDir: no patient found. Exiting."
<< std::endl;
-
delete dcmdir;
return 1;
}
- // Create the corresponding DicomDir
+ // ----- Create the corresponding DicomDir
+
dcmdir->WriteDicomDir("NewDICOMDIR");
delete dcmdir;