X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDocument.cxx;h=34b18e5f2d2dd451484efdeb672e8b431275d18e;hb=507c357466602345e4bd9de6c475e0887cf2ba36;hp=6fcc7ac145fe28979cea4af532d148d5d06bdbb9;hpb=e9a711266d34e33b482edbe241b2e40db7d9915a;p=gdcm.git diff --git a/src/gdcmDocument.cxx b/src/gdcmDocument.cxx index 6fcc7ac1..34b18e5f 100644 --- a/src/gdcmDocument.cxx +++ b/src/gdcmDocument.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocument.cxx,v $ Language: C++ - Date: $Date: 2005/11/09 10:18:43 $ - Version: $Revision: 1.326 $ + Date: $Date: 2005/12/14 10:00:28 $ + Version: $Revision: 1.334 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -89,17 +89,6 @@ bool Document::Load( ) return false; } return DoTheLoadingDocumentJob( ); -} -/** - * \brief Loader. (DEPRECATED : not to break the API) - * @param fileName 'Document' (File or DicomDir) to be open for parsing - * @return false if file cannot be open or no swap info was found, - * or no tag was found. - */ -bool Document::Load( std::string const &fileName ) -{ - Filename = fileName; - return DoTheLoadingDocumentJob( ); } /** @@ -337,22 +326,33 @@ bool Document::SetShaDict(DictKey const &dictName) * @return false when we're 150 % sure it's NOT a Dicom/Acr file, * true otherwise. */ -bool Document::IsReadable() +bool Document::IsParsable() { if ( Filetype == Unknown ) { - gdcmErrorMacro( "Wrong filetype for " << GetFileName()); + gdcmWarningMacro( "Wrong filetype for " << GetFileName()); return false; } if ( IsEmpty() ) { - gdcmErrorMacro( "No tag in internal hash table."); + gdcmWarningMacro( "No tag in internal hash table."); return false; } return true; } +/** + * \brief This predicate tells us whether or not the current Document + * was properly parsed and contains at least *one* Dicom Element + * (and nothing more, sorry). + * @return false when we're 150 % sure it's NOT a Dicom/Acr file, + * true otherwise. + */ +bool Document::IsReadable() +{ + return IsParsable(); +} /** * \brief Predicate for dicom version 3 file. @@ -931,7 +931,6 @@ uint32_t Document::ReadInt32() /** * \brief skips bytes inside the source file - * \warning NOT end user intended method ! * @return */ void Document::SkipBytes(uint32_t nBytes) @@ -984,11 +983,37 @@ int Document::ComputeGroup0002Length( ) return groupLength; } +/** + * \brief CallStartMethod + */ +void Document::CallStartMethod() +{ + Progress = 0.0f; + Abort = false; + CommandManager::ExecuteCommand(this,CMD_STARTPROGRESS); +} + +/** + * \brief CallProgressMethod + */ +void Document::CallProgressMethod() +{ + CommandManager::ExecuteCommand(this,CMD_PROGRESS); +} + +/** + * \brief CallEndMethod + */ +void Document::CallEndMethod() +{ + Progress = 1.0f; + CommandManager::ExecuteCommand(this,CMD_ENDPROGRESS); +} + //----------------------------------------------------------------------------- // Private /** * \brief Loads all the needed Dictionaries - * \warning NOT end user intended method ! */ void Document::Initialize() { @@ -1016,7 +1041,7 @@ void Document::ParseDES(DocEntrySet *set, long offset, bool delim_mode_intern = delim_mode; bool first = true; gdcmDebugMacro( "Enter in ParseDES, delim-mode " << delim_mode - << " at offset " << std::hex << offset ); + << " at offset " << std::hex << "0x(" << offset << ")" ); while (true) { if ( !delim_mode && ((long)(Fp->tellg())-offset) >= l_max) @@ -1063,8 +1088,8 @@ void Document::ParseDES(DocEntrySet *set, long offset, { gdcmDebugMacro( "in ParseDES : cannot add a DataEntry " << newDataEntry->GetKey() - << " (at offset : " - << newDataEntry->GetOffset() << " )" ); + << " (at offset : 0x(" + << newDataEntry->GetOffset() << ") )" ); used=false; } else @@ -1073,7 +1098,6 @@ void Document::ParseDES(DocEntrySet *set, long offset, // Load only if we can add (not a duplicate key) LoadDocEntry( newDataEntry ); } - if ( newDataEntry->GetElement() == 0x0000 ) // if on group length { if ( newDataEntry->GetGroup()%2 != 0 ) // if Shadow Group @@ -1081,8 +1105,9 @@ void Document::ParseDES(DocEntrySet *set, long offset, if ( LoadMode & LD_NOSHADOW ) // if user asked to skip shad.gr { std::string strLgrGroup = newDataEntry->GetString(); + int lgrGroup; - if ( newDataEntry->IsUnfound() ) + //if ( newDataEntry->IsUnfound() ) /?!? JPR { lgrGroup = atoi(strLgrGroup.c_str()); Fp->seekg(lgrGroup, std::ios::cur); @@ -1171,8 +1196,8 @@ void Document::ParseDES(DocEntrySet *set, long offset, { // Don't try to parse zero-length sequences gdcmDebugMacro( "Entry in ParseSQ, delim " << delim_mode_intern - << " at offset " << std::hex - << newDocEntry->GetOffset() ); + << " at offset 0x(" << std::hex + << newDocEntry->GetOffset() << ")"); ParseSQ( newSeqEntry, newDocEntry->GetOffset(), @@ -1185,8 +1210,8 @@ void Document::ParseDES(DocEntrySet *set, long offset, { gdcmWarningMacro( "in ParseDES : cannot add a SeqEntry " << newSeqEntry->GetKey() - << " (at offset : " - << newSeqEntry->GetOffset() << " )" ); + << " (at offset : 0x(" + << newSeqEntry->GetOffset() << ") )" ); used = false; } else @@ -1297,8 +1322,8 @@ DocEntry *Document::Backtrack(DocEntry *docEntry) long offset = PreviousDocEntry->GetOffset(); gdcmDebugMacro( "Backtrack :" << std::hex << group - << "|" << elem - << " at offset " << offset ); + << "|" << elem + << " at offset 0x(" <seekg(positionOnEntry, std::ios::beg); return GDCM_VRUNKNOWN; } @@ -1572,7 +1596,6 @@ bool Document::CheckDocEntryVR(const VRKey &vr) /** * \brief Skip a given Header Entry - * \warning NOT end user intended method ! * @param entry entry to skip */ void Document::SkipDocEntry(DocEntry *entry) @@ -1582,7 +1605,6 @@ void Document::SkipDocEntry(DocEntry *entry) /** * \brief Skips to the beginning of the next Header Entry - * \warning NOT end user intended method ! * @param currentDocEntry entry to skip */ void Document::SkipToNextDocEntry(DocEntry *currentDocEntry)