Program: gdcm
Module: $RCSfile: TestMakeDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/04/14 14:27:57 $
- Version: $Revision: 1.2 $
+ Date: $Date: 2007/06/21 14:59:06 $
+ Version: $Revision: 1.13 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmDicomDir.h"
#include "gdcmDicomDirPatient.h"
#include "gdcmDirList.h"
+#include "gdcmCommandManager.h"
#include "gdcmDebug.h"
// ---
-void StartMethod(void *startMethod)
+class CommandStart : public GDCM_NAME_SPACE::Command
{
- (void)startMethod;
- std::cout<<"Start parsing"<<std::endl;
-}
+ gdcmTypeMacro(CommandStart);
+ gdcmNewMacro(CommandStart);
+
+public :
+ virtual void Execute()
+ {
+ std::cerr << "Start parsing" << std::endl;
+ }
+
+protected :
+ CommandStart() {}
+};
+
+class CommandEnd : public GDCM_NAME_SPACE::Command
+{
+ gdcmTypeMacro(CommandEnd);
+ gdcmNewMacro(CommandEnd);
+
+public :
+ virtual void Execute()
+ {
+ std::cerr << "End parsing" << std::endl;
+ }
+
+protected :
+ CommandEnd() {}
+};
+
+class CommandProgress : public GDCM_NAME_SPACE::Command
+{
+ gdcmTypeMacro(CommandProgress);
+ gdcmNewMacro(CommandProgress);
+
+public :
+ virtual void Execute()
+ {
+ GDCM_NAME_SPACE::DicomDir *dd=dynamic_cast<GDCM_NAME_SPACE::DicomDir *>(GetObject());
+
+ if(dd)
+ std::cerr << "Progress parsing (" << dd->GetProgress() << ")" << std::endl;
+ else
+ std::cerr << "Progress parsing (NULL)" << std::endl;
+ }
+
+protected :
+ CommandProgress() {}
+};
void EndMethod(void *endMethod)
{
{
dirName = GDCM_DATA_ROOT;
}
-
- gdcm::DicomDir *dcmdir;
- // we ask for Directory parsing
- // Old style (still available) :
- // dcmdir = new gdcm::DicomDir(dirName, true);
+ GDCM_NAME_SPACE::DicomDir *dcmdir;
// new style (user is allowed no to load Sequences an/or Shadow Groups)
- dcmdir = new gdcm::DicomDir( );
- dcmdir->SetParseDir(true);
- dcmdir->SetLoadMode(NO_SEQ | NO_SHADOW);
- dcmdir->Load(dirName);
-
- dcmdir->SetStartMethod(StartMethod, (void *) NULL);
- dcmdir->SetEndMethod(EndMethod);
-
+ dcmdir = GDCM_NAME_SPACE::DicomDir::New( );
+
+ GDCM_NAME_SPACE::Command *cmd;
+ cmd = CommandStart::New();
+ GDCM_NAME_SPACE::CommandManager::SetCommand(dcmdir,GDCM_NAME_SPACE::CMD_STARTPROGRESS,cmd);
+ cmd->Delete();
+ cmd = CommandProgress::New();
+ GDCM_NAME_SPACE::CommandManager::SetCommand(dcmdir,GDCM_NAME_SPACE::CMD_PROGRESS,cmd);
+ cmd->Delete();
+ cmd = CommandEnd::New();
+ GDCM_NAME_SPACE::CommandManager::SetCommand(dcmdir,GDCM_NAME_SPACE::CMD_ENDPROGRESS,cmd);
+ cmd->Delete();
+
+ // dcmdir->SetLoadMode(gdcm::LD_NOSEQ | gdcm::LD_NOSHADOW);
+ // some images have a wrong length for element 0x0000 of private groups
+ dcmdir->SetLoadMode(GDCM_NAME_SPACE::LD_NOSEQ);
+ dcmdir->SetDirectoryName(dirName);
+ dcmdir->Load();
+
if ( !dcmdir->GetFirstPatient() )
{
std::cout << "makeDicomDir: no patient found. Exiting."
<< std::endl;
- delete dcmdir;
+ dcmdir->Delete();
return 1;
}
// Create the corresponding DicomDir
- dcmdir->WriteDicomDir("NewDICOMDIR");
- delete dcmdir;
+ dcmdir->Write("NewDICOMDIR");
+ dcmdir->Delete();
// Read from disc the just written DicomDir
- gdcm::DicomDir *newDicomDir = new gdcm::DicomDir("NewDICOMDIR");
+ GDCM_NAME_SPACE::DicomDir *newDicomDir = GDCM_NAME_SPACE::DicomDir::New();
+ newDicomDir->SetFileName("NewDICOMDIR");
+ newDicomDir->Load();
+
if( !newDicomDir->IsReadable() )
{
std::cout<<" Written DicomDir 'NewDICOMDIR'"
<<" is not readable"<<std::endl
<<" ...Failed"<<std::endl;
- delete newDicomDir;
+ newDicomDir->Delete();
return 1;
}
<<" has no patient"<<std::endl
<<" ...Failed"<<std::endl;
- delete newDicomDir;
+ newDicomDir->Delete();
return(1);
}
std::cout<<std::flush;
-
- delete newDicomDir;
+ newDicomDir->Delete();
return 0;
}