Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
START_USAGE(usage)
"\n exXCoherentFileSet :\n ",
"Shows the various 'XCoherent' Filesets within a directory ",
START_USAGE(usage)
"\n exXCoherentFileSet :\n ",
"Shows the various 'XCoherent' Filesets within a directory ",
GDCM_NAME_SPACE::ArgMgr *am = new GDCM_NAME_SPACE::ArgMgr(argc, argv);
if (am->ArgMgrDefined("usage") || argc == 1)
GDCM_NAME_SPACE::ArgMgr *am = new GDCM_NAME_SPACE::ArgMgr(argc, argv);
if (am->ArgMgrDefined("usage") || argc == 1)
int loadMode = GDCM_NAME_SPACE::LD_ALL;
if ( am->ArgMgrDefined("noshadowseq") )
loadMode |= GDCM_NAME_SPACE::LD_NOSHADOWSEQ;
int loadMode = GDCM_NAME_SPACE::LD_ALL;
if ( am->ArgMgrDefined("noshadowseq") )
loadMode |= GDCM_NAME_SPACE::LD_NOSHADOWSEQ;
bool sort = ( 0 != am->ArgMgrDefined("sort") );
bool write = ( 0 != am->ArgMgrDefined("write") );
bool verbose = ( 0 != am->ArgMgrDefined("verbose") );
bool sort = ( 0 != am->ArgMgrDefined("sort") );
bool write = ( 0 != am->ArgMgrDefined("write") );
bool verbose = ( 0 != am->ArgMgrDefined("verbose") );
}
if( (!tag && !pos && !ori))
{
std::cout << " One of POS, ORI and TAG is mandatory!" << std::endl;
delete am;
}
if( (!tag && !pos && !ori))
{
std::cout << " One of POS, ORI and TAG is mandatory!" << std::endl;
delete am;
delete am; // ------ we don't need Arguments Manager any longer ------
GDCM_NAME_SPACE::SerieHelper *s;
delete am; // ------ we don't need Arguments Manager any longer ------
GDCM_NAME_SPACE::SerieHelper *s;
//GDCM_NAME_SPACE::TagKey t(0x0020,0x0013);
//s->AddRestriction(t, "340", GDCM_NAME_SPACE::GDCM_LESS); // Keep only files where
// restriction is true
//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'
s->SetDirectory(dirName, true); // true : recursive exploration
// The Dicom file set is splitted into several 'Single SerieUID Files Sets'
{
serieUID = s->GetCurrentSerieUIDFileSetUID();
GDCM_NAME_SPACE::Util::ReplaceSpecChar(serieUID, rep);
{
serieUID = s->GetCurrentSerieUIDFileSetUID();
GDCM_NAME_SPACE::Util::ReplaceSpecChar(serieUID, rep);
unsigned int lg = strlen(dirNameout)-1;
if ( dirNameout[lg] != '/' && dirNameout[lg] != '\\')
currentSerieWriteDir = currentSerieWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR;
unsigned int lg = strlen(dirNameout)-1;
if ( dirNameout[lg] != '/' && dirNameout[lg] != '\\')
currentSerieWriteDir = currentSerieWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR;
currentSerieWriteDir = currentSerieWriteDir + serieUID;
if (verbose)
std::cout << "[" << currentSerieWriteDir<< "]" << std::endl;
// if ( ! GDCM_NAME_SPACE::DirList::IsDirectory(currentSerieWriteDir) )
currentSerieWriteDir = currentSerieWriteDir + serieUID;
if (verbose)
std::cout << "[" << currentSerieWriteDir<< "]" << std::endl;
// if ( ! GDCM_NAME_SPACE::DirList::IsDirectory(currentSerieWriteDir) )
systemCommand = "mkdir " + currentSerieWriteDir;
system( systemCommand.c_str());
if (verbose)
std::cout << "1 " <<systemCommand << std::endl;
systemCommand = "mkdir " + currentSerieWriteDir;
system( systemCommand.c_str());
if (verbose)
std::cout << "1 " <<systemCommand << std::endl;
std::cout << "Split the 'Single SerieUID' FileSet :["
<< serieUID
<< "] " << nbFiles << " long" << std::endl;
std::cout << "-----------------------------------" << std::endl;
std::cout << "Split the 'Single SerieUID' FileSet :["
<< serieUID
<< "] " << nbFiles << " long" << std::endl;
std::cout << "-----------------------------------" << std::endl;
xCoherentWriteDir = currentSerieWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR+ xCoherentName;
// if ( ! GDCM_NAME_SPACE::DirList::IsDirectory(xCoherentWriteDir) )
xCoherentWriteDir = currentSerieWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR+ xCoherentName;
// if ( ! GDCM_NAME_SPACE::DirList::IsDirectory(xCoherentWriteDir) )
std::cout << "Tag (" << std::hex << groupelem[0]
<< "|" << groupelem[1] << ") value : ";
std::cout << "[" << (*i).first << "]" << std::endl;
std::cout << "Tag (" << std::hex << groupelem[0]
<< "|" << groupelem[1] << ") value : ";
std::cout << "[" << (*i).first << "]" << std::endl;
// Within a 'just to see' program,
// OrderFileList() causes trouble, since some files
// (eg: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
s->OrderFileList((*i).second); // sort the XCoherent Fileset
std::cout << "ZSpacing for the file set " << s->GetZSpacing()
<< std::endl;
s->OrderFileList((*i).second); // sort the XCoherent Fileset
std::cout << "ZSpacing for the file set " << s->GetZSpacing()
<< std::endl;