X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDicomDir.cxx;h=6c42fea238370cea60848fd12c63a526b885273d;hb=01f14ba7d0d9eee2b8f0a768efd116e26023be12;hp=a12b7fa7fed62d2c95a81c59573bb3c84afabafd;hpb=83d626ec3d3111a6d14586246b6e2dda56f0ab86;p=gdcm.git diff --git a/src/gdcmDicomDir.cxx b/src/gdcmDicomDir.cxx index a12b7fa7..6c42fea2 100644 --- a/src/gdcmDicomDir.cxx +++ b/src/gdcmDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDir.cxx,v $ Language: C++ - Date: $Date: 2006/01/27 10:01:33 $ - Version: $Revision: 1.185 $ + Date: $Date: 2006/05/30 08:10:19 $ + Version: $Revision: 1.189 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -56,7 +56,7 @@ #if defined(__BORLANDC__) #include // for memset -#endif +#endif // ---------------------------------------------------------------------------- // Note for future developpers @@ -129,6 +129,38 @@ DicomDir::DicomDir() NewMeta(); } +//#ifndef GDCM_LEGACY_REMOVE +/** + * \brief Constructor Parses recursively the directory and creates the DicomDir + * or uses an already built DICOMDIR, depending on 'parseDir' value. + * @param fileName name + * - of the root directory (parseDir = true) + * - of the DICOMDIR (parseDir = false) + * @param parseDir boolean + * - true if user passed an entry point + * and wants to explore recursively the directories + * - false if user passed an already built DICOMDIR file + * and wants to use it + * @deprecated use : new DicomDir() + [ SetLoadMode(lm) + ] SetDirectoryName(name) + * or : new DicomDir() + SetFileName(name) + */ + /* +DicomDir::DicomDir(std::string const &fileName, bool parseDir ): + Document( ) +{ + // At this step, Document constructor is already executed, + // whatever user passed (either a root directory or a DICOMDIR) + // and whatever the value of parseDir was. + // (nothing is cheked in Document constructor, to avoid overhead) + + ParseDir = parseDir; + SetLoadMode (LD_ALL); // concerns only dicom files + SetFileName( fileName ); + Load( ); +} +*/ +//#endif + /** * \brief Canonical destructor */ @@ -159,6 +191,30 @@ bool DicomDir::Load( ) } return DoTheLoadingJob( ); } +//#ifndef GDCM_LEGACY_REMOVE +/** + * \brief Loader. (DEPRECATED : kept not to break the API) + * @param fileName file to be open for parsing + * @return false if file cannot be open or no swap info was found, + * or no tag was found. + * @deprecated use SetFileName(n) + Load() instead + */ + /* +bool DicomDir::Load(std::string const &fileName ) +{ + // We should clean out anything that already exists. + Initialize(); // sets all private fields to NULL + + SetFileName( fileName ); + if (!ParseDir) + { + if ( ! this->Document::Load( ) ) + return false; + } + return DoTheLoadingJob( ); +} +*/ +//#endif /** * \brief Does the Loading Job (internal use only) @@ -208,11 +264,11 @@ bool DicomDir::DoTheLoadingJob( ) const char *cwd = getcwd(buf, 2048); if( cwd ) { - SetFileName( buf ); // will be converted into a string + SetFileName( buf ); // will be converted into a string } else { - gdcmErrorMacro( "Path was too long to fit on 2048 bytes" ); + gdcmErrorMacro( "Path was too long to fit on 2048 bytes" ); } } NewMeta(); @@ -837,7 +893,7 @@ void DicomDir::SetElement(std::string const &path, DicomDirType type, ListDicomDirElem elemList; ListDicomDirElem::const_iterator it; uint16_t tmpGr, tmpEl; - DictEntry *dictEntry; + //DictEntry *dictEntry; DataEntry *entry; std::string val; SQItem *si; @@ -893,9 +949,9 @@ void DicomDir::SetElement(std::string const &path, DicomDirType type, default: return; } - + // FIXME : troubles found when it's a SeqEntry - + // removed all the seems-to-be-useless stuff about Referenced Image Sequence // to avoid further troubles // imageElem 0008 1140 "" // Referenced Image Sequence @@ -910,17 +966,17 @@ void DicomDir::SetElement(std::string const &path, DicomDirType type, { tmpGr = it->Group; tmpEl = it->Elem; - dictEntry = GetPubDict()->GetEntry(tmpGr, tmpEl); - - entry = DataEntry::New( dictEntry ); + //dictEntry = GetPubDict()->GetEntry(tmpGr, tmpEl); + //entry = DataEntry::New( dictEntry ); + + entry = DataEntry::New(tmpGr, tmpEl, GDCM_VRUNKNOWN); /// \todo : modify dicomelements file, to store VR entry->SetOffset(0); // just to avoid further missprinting if ( header ) { // NULL when we Build Up (ex nihilo) a DICOMDIR // or when we add the META elems - - val = header->GetEntryString(tmpGr, tmpEl); + val = header->GetEntryString(tmpGr, tmpEl); } else { @@ -928,7 +984,7 @@ void DicomDir::SetElement(std::string const &path, DicomDirType type, } if ( val == GDCM_UNFOUND) - { + { if ( tmpGr == 0x0004 ) // never present in File ! { switch (tmpEl)