// gdcmDicomDir.cxx
//-----------------------------------------------------------------------------
-#include "gdcmDicomDir.h"
-#include "gdcmDicomDirStudy.h"
-#include "gdcmDicomDirSerie.h"
-#include "gdcmDicomDirImage.h"
-#include "gdcmDirList.h"
-#include "gdcmUtil.h"
-
#include <string>
#include <algorithm>
-
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
#endif
+#include "gdcmDicomDir.h"
+#include "gdcmDicomDirStudy.h"
+#include "gdcmDicomDirSerie.h"
+#include "gdcmDicomDirImage.h"
+#include "gdcmDirList.h"
+#include "gdcmUtil.h"
+#include "gdcmDebug.h"
+#include "gdcmGlobal.h"
+
//-----------------------------------------------------------------------------
// For full DICOMDIR description, see:
// PS 3.3-2003, pages 731-750
//-----------------------------------------------------------------------------
+
// Constructor / Destructor
/**
- * \ingroup gdcmDicomDir
* \brief Constructor Parses recursively the directory and creates the DicomDir
- * or uses an already built DICOMDIR, depending on 'parseDir' value
+ * or uses an already built DICOMDIR, depending on 'parseDir' value.
* @param FileName name
- - of the root directory (parseDir = true)
+ * - of the root directory (parseDir = true)
* - of the DICOMDIR (parseDir = false)
* @param parseDir boolean
* - true if user passed an entry point
if(strlen(FileName)==1 && FileName[0]=='.') { // user passed '.' as Name
// we get current directory name
char*dummy=(char*) malloc(1000);
-#ifdef _MSC_VER
- _getcwd(dummy,(size_t)1000);
-#else
getcwd(dummy,(size_t)1000);
-#endif
SetFileName(dummy); // will be converted into a string
free(dummy); // no longer needed
}
if(parseDir)
{
- dbg.Verbose(0, "gdcmDicomDir::gdcmDicomDir : Parse directory and create the DicomDir");
- ParseDirectory();
+ dbg.Verbose(0, "gdcmDicomDir::gdcmDicomDir : Parse directory"
+ " and create the DicomDir");
+ ParseDirectory();
}
}
else {
CreateDicomDir();
CheckBoundaries(); // to maintain consistency between
// home-made gdcmDicomDir
- // and the ones comming from a DICOMDIR file
+ // and the ones comming from a DICOMDIR file
}
}
fwrite("DICM",4,1,fp1);
free(filePreamble);
UpdateDirectoryRecordSequenceLength();
- WriteDicomDirEntries(fp1);
+ WriteEntries(fp1);
fclose(fp1);
return true;
}
/**
- * \ingroup gdcmParser
- * \brief writes on disc according to the DICOMDIR format
- * using the tree-like structure
+ * \brief Writes in a file using the tree-like structure.
* @param _fp already open file pointer
*/
-void gdcmDicomDir::WriteDicomDirEntries(FILE *_fp)
+void gdcmDicomDir::WriteEntries(FILE *_fp)
{
// TODO (?) tester les echecs en ecriture
// (apres chaque fwrite, dans le WriteEntry)
ptrMeta= GetDicomDirMeta();
for(i=ptrMeta->debut();i!=ptrMeta->fin();++i) {
- WriteEntry(*i,_fp,DICOMDIR);
+ WriteEntry(*i,_fp, ExplicitVR);
}
itPatient = GetDicomDirPatients().begin();
while ( itPatient != GetDicomDirPatients().end() ) {
for(i=(*itPatient)->debut();i!=(*itPatient)->fin();++i) {
- WriteEntry(*i,_fp,DICOMDIR);
+ WriteEntry(*i,_fp, ExplicitVR);
}
itStudy = ((*itPatient)->GetDicomDirStudies()).begin();
while (itStudy != (*itPatient)->GetDicomDirStudies().end() ) {
for(i=(*itStudy)->debut();i!=(*itStudy)->fin();++i) {
- WriteEntry(*i,_fp,DICOMDIR);
+ WriteEntry(*i,_fp, ExplicitVR);
}
itSerie = ((*itStudy)->GetDicomDirSeries()).begin();
while (itSerie != (*itStudy)->GetDicomDirSeries().end() ) {
for(i=(*itSerie)->debut();i!=(*itSerie)->fin();++i) {
- WriteEntry(*i,_fp,DICOMDIR);
+ WriteEntry(*i,_fp, ExplicitVR);
}
itImage = ((*itSerie)->GetDicomDirImages()).begin();
while (itImage != (*itSerie)->GetDicomDirImages().end() ) {
for(i=(*itImage)->debut();i!=(*itImage)->fin();++i) {
- WriteEntry(*i,_fp,DICOMDIR);
+ WriteEntry(*i,_fp, ExplicitVR);
}
++itImage;
}
itImage = ((*itSerie)->GetDicomDirImages()).begin();
while (itImage != (*itSerie)->GetDicomDirImages().end() ) {
(*itImage)->ResetBoundaries(1);
- ++itImage;
- }
- ++itSerie;
- }
- ++itStudy;
- }
- ++itPatient;
+ ++itImage;
+ }
+ ++itSerie;
+ }
+ ++itStudy;
+ }
+ ++itPatient;
}
}
entry->SetValue(it->value);
if(dictEntry->GetGroup()==0xfffe)
- {
- entry->SetLength(entry->GetValue().length());
- }
+ {
+ entry->SetLength(entry->GetValue().length());
+ }
else if( (dictEntry->GetVR()=="UL") || (dictEntry->GetVR()=="SL") )
{
entry->SetLength(4);