X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=inline;f=src%2FgdcmDicomDir.cxx;h=fb566c629744cdda1fbc37418442a2c1e35e7c18;hb=e25987c451d6f797a5e5288ac1a926cfd767fe57;hp=c24e21989f754ab3d1e562fb221b4904d337cafc;hpb=0e82725d64f17545e782c18039ced7ea898f8cad;p=gdcm.git diff --git a/src/gdcmDicomDir.cxx b/src/gdcmDicomDir.cxx index c24e2198..fb566c62 100644 --- a/src/gdcmDicomDir.cxx +++ b/src/gdcmDicomDir.cxx @@ -18,20 +18,21 @@ #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 @@ -74,26 +75,23 @@ gdcmDicomDir::gdcmDicomDir(const char *FileName, bool parseDir, 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 } } @@ -315,20 +313,18 @@ bool gdcmDicomDir::Write(std::string fileName) 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) @@ -342,28 +338,28 @@ void gdcmDicomDir::WriteDicomDirEntries(FILE *_fp) 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; } @@ -450,11 +446,11 @@ void gdcmDicomDir::CheckBoundaries() itImage = ((*itSerie)->GetDicomDirImages()).begin(); while (itImage != (*itSerie)->GetDicomDirImages().end() ) { (*itImage)->ResetBoundaries(1); - ++itImage; - } - ++itSerie; + ++itImage; + } + ++itSerie; } - ++itStudy; + ++itStudy; } ++itPatient; } @@ -490,9 +486,9 @@ gdcmDicomDirPatient * gdcmDicomDir::NewPatient(void) { 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);