X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FexXCoherentFileSet.cxx;h=eced5e990eedab73d3420d7547c8c636b72881db;hb=88a0e8d8c47070a680d71eb6a7ac349993e81a5f;hp=567eff75e3778d4e90a08722afa3b3d3461ea679;hpb=48f7ce7aa61778477992107caf15e8960359e66b;p=gdcm.git diff --git a/Example/exXCoherentFileSet.cxx b/Example/exXCoherentFileSet.cxx index 567eff75..eced5e99 100755 --- a/Example/exXCoherentFileSet.cxx +++ b/Example/exXCoherentFileSet.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: exXCoherentFileSet.cxx,v $ Language: C++ - Date: $Date: 2006/01/26 15:52:43 $ - Version: $Revision: 1.7 $ + Date: $Date: 2007/06/15 13:18:51 $ + Version: $Revision: 1.10 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -29,7 +29,7 @@ int main(int argc, char *argv[]) "\n exXCoherentFileSet :\n ", "Shows the various 'XCoherent' Filesets within a directory ", "usage: exXCoherentFileSet {dirin=inputDirectoryName} ", - " { tag= group-elem | pos | ori } ", + " { tag= group-elem | pos | ori } sort ", " [ { [noshadowseq] | [noshadow][noseq] } ] [debug] ", " ", " inputDirectoryName : user wants to analyze *all* the files ", @@ -40,6 +40,8 @@ int main(int argc, char *argv[]) " 'Image Orientation ' ", " tag : group-elem (in hexa, no space) ", " the user wants to split on ", + " sort : user wants FileHelper to sort the images ", + " Warning : will probabely crah if sort has no meaning ", " noshadowseq: user doesn't want to load Private Sequences ", " noshadow : user doesn't want to load Private groups (odd number) ", " noseq : user doesn't want to load Sequences ", @@ -48,7 +50,7 @@ int main(int argc, char *argv[]) // ----- Initialize Arguments Manager ------ - gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv); + GDCM_NAME_SPACE::ArgMgr *am = new GDCM_NAME_SPACE::ArgMgr(argc, argv); if (am->ArgMgrDefined("usage") || argc == 1) { @@ -58,17 +60,17 @@ int main(int argc, char *argv[]) } if (am->ArgMgrDefined("debug")) - gdcm::Debug::DebugOn(); + GDCM_NAME_SPACE::Debug::DebugOn(); - int loadMode = gdcm::LD_ALL; + int loadMode = GDCM_NAME_SPACE::LD_ALL; if ( am->ArgMgrDefined("noshadowseq") ) - loadMode |= gdcm::LD_NOSHADOWSEQ; + loadMode |= GDCM_NAME_SPACE::LD_NOSHADOWSEQ; else { if ( am->ArgMgrDefined("noshadow") ) - loadMode |= gdcm::LD_NOSHADOW; + loadMode |= GDCM_NAME_SPACE::LD_NOSHADOW; if ( am->ArgMgrDefined("noseq") ) - loadMode |= gdcm::LD_NOSEQ; + loadMode |= GDCM_NAME_SPACE::LD_NOSEQ; } const char *dirName = am->ArgMgrGetString("dirin"); @@ -84,9 +86,10 @@ int main(int argc, char *argv[]) // FIXME : check only one of them is set ! - int pos = am->ArgMgrDefined("pos"); - int ori = am->ArgMgrDefined("ori"); - + int pos = am->ArgMgrDefined("pos"); + int ori = am->ArgMgrDefined("ori"); + int sort = am->ArgMgrDefined("sort"); + int nb; uint16_t *groupelem; groupelem = am->ArgMgrGetXInt16Enum("tag", &nb); @@ -113,15 +116,20 @@ int main(int argc, char *argv[]) delete am; // ------ we don't need Arguments Manager any longer ------ - gdcm::SerieHelper *s; + GDCM_NAME_SPACE::SerieHelper *s; - s = gdcm::SerieHelper::New(); - s->SetLoadMode(gdcm::LD_ALL); // Load everything for each File - //gdcm::TagKey t(0x0020,0x0013); - //s->AddRestriction(t, "340", gdcm::GDCM_LESS); // Keep only files where + s = GDCM_NAME_SPACE::SerieHelper::New(); + s->SetLoadMode(GDCM_NAME_SPACE::LD_ALL); // Load everything for each File + //GDCM_NAME_SPACE::TagKey t(0x0020,0x0013); + //s->AddRestriction(t, "340", GDCM_NAME_SPACE::GDCM_LESS); // Keep only files where // restriction is true s->SetDirectory(dirName, true); // true : recursive exploration + // The Dicom file set is splitted into several 'Single SerieUID Files Sets' + // (a 'Single SerieUID Files Set' per SerieUID) + // In some cases, it's not enough, since, in some cases + // we can find scout view with the same SerieUID + /* std::cout << " ---------------------------------------- " << "'Single UID' Filesets found in :[" @@ -133,11 +141,11 @@ int main(int argc, char *argv[]) */ int nbFiles; std::string fileName; - // For all the Single SerieUID Files Sets of the gdcm::Serie - gdcm::FileList *l = s->GetFirstSingleSerieUIDFileSet(); + // For all the Single SerieUID Files Sets of the GDCM_NAME_SPACE::Serie + GDCM_NAME_SPACE::FileList *l = s->GetFirstSingleSerieUIDFileSet(); - gdcm::XCoherentFileSetmap xcm; - while (l) + GDCM_NAME_SPACE::XCoherentFileSetmap xcm; + while (l) // for each 'Single SerieUID FileSet' { nbFiles = l->size() ; if ( l->size() > 3 ) // Why not ? Just an example, for testing @@ -154,7 +162,7 @@ int main(int argc, char *argv[]) if (groupelem != 0) xcm = s->SplitOnTagValue(l, groupelem[0],groupelem[1] ); - for (gdcm::XCoherentFileSetmap::iterator i = xcm.begin(); + for (GDCM_NAME_SPACE::XCoherentFileSetmap::iterator i = xcm.begin(); i != xcm.end(); ++i) { @@ -168,15 +176,20 @@ int main(int argc, char *argv[]) std::cout << "[" << (*i).first << "]" << std::endl; - // Nowadays OrderFileList() causes trouble, since some files - // (MIP views) don't have 'Position', now considered as mandatory + // Within a 'just to see' program, + // OrderFileList() causes trouble, since some files + // (eg:MIP views) don't have 'Position', now considered as mandatory // Commented out for the moment. - - //s->OrderFileList((*i).second); // sort the XCoherent Fileset - - for (std::vector::iterator it = ((*i).second)->begin(); - it != ((*i).second)->end(); - ++it) + + if (sort) { + s->OrderFileList((*i).second); // sort the XCoherent Fileset + std::cout << "ZSpacing for the file set " << s->GetZSpacing() + << std::endl; + } + + for (GDCM_NAME_SPACE::FileList::iterator it = ((*i).second)->begin(); + it != ((*i).second)->end(); + ++it) { fileName = (*it)->GetFileName(); std::cout << " " << fileName << std::endl;