X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmSerieHelper.cxx;h=c049e8b45c4807550742db86d83746835c17330b;hb=664f8e416ecf1edcf4c29cf27be36e21810fa278;hp=19f82fe3e6588ab1784657cad76111030b296bd8;hpb=a08cf53dc69fa5e4b9e2dd4fbbfc3d476b963aa0;p=gdcm.git diff --git a/src/gdcmSerieHelper.cxx b/src/gdcmSerieHelper.cxx index 19f82fe3..c049e8b4 100644 --- a/src/gdcmSerieHelper.cxx +++ b/src/gdcmSerieHelper.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmSerieHelper.cxx,v $ Language: C++ - Date: $Date: 2005/07/30 18:13:24 $ - Version: $Revision: 1.17 $ + Date: $Date: 2005/08/31 16:24:19 $ + Version: $Revision: 1.20 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -29,6 +29,7 @@ namespace gdcm { +//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // Constructor / Destructor @@ -37,6 +38,8 @@ namespace gdcm */ SerieHelper::SerieHelper() { + UserLessThanFunction = 0; + // For all the File lists that may already exist within the gdcm::Serie FileList *l = GetFirstCoherentFileList(); while (l) @@ -226,6 +229,10 @@ void SerieHelper::AddGdcmFile(File *header) * directory which would have a particular EchoTime==4.0. * This method is a user level, value is not required to be formatted as a DICOM * string + * @param group Group number of the target tag. + * @param elem Element number of the target tag. + * @param value value to be checked to exclude File + * @param op operator we want to use to check */ void SerieHelper::AddRestriction(uint16_t group, uint16_t elem, std::string const &value, int op) @@ -245,6 +252,9 @@ void SerieHelper::AddRestriction(uint16_t group, uint16_t elem, * directory which would have a particular EchoTime==4.0. * This method is a user level, value is not required to be formatted as a DICOM * string + * @param group Group number of the target tag. + * @param elem Element number of the target tag. + * @param value value to be checked to exclude File * @deprecated use : AddRestriction(uint16_t group, uint16_t elem, * std::string const &value, int op); */ @@ -282,7 +292,13 @@ void SerieHelper::SetDirectory(std::string const &dir, bool recursive) */ void SerieHelper::OrderFileList(FileList *coherentFileList) { - if ( ImagePositionPatientOrdering( coherentFileList ) ) + + if ( SerieHelper::UserLessThanFunction ) + { + UserOrdering( coherentFileList ); + return; + } + else if ( ImagePositionPatientOrdering( coherentFileList ) ) { return ; } @@ -562,12 +578,12 @@ bool SerieHelper::ImageNumberOrdering(FileList *fileList) bool SerieHelper::FileNameLessThan(File *file1, File *file2) { - return file1->GetFileName() < file2->GetFileName(); + return file1->GetFileName() < file2->GetFileName(); } bool SerieHelper::FileNameGreaterThan(File *file1, File *file2) { - return file1->GetFileName() > file2->GetFileName(); + return file1->GetFileName() > file2->GetFileName(); } /** * \brief sorts the images, according to their File Name @@ -584,6 +600,21 @@ bool SerieHelper::FileNameOrdering(FileList *fileList) return true; } +/** + * \brief sorts the images, according to user supplied function + * @param fileList Coherent File list (same Serie UID) to sort + * @return false only if the header is bugged ! + */ +bool SerieHelper::UserOrdering(FileList *fileList) +{ + std::sort(fileList->begin(), fileList->end(), SerieHelper::UserLessThanFunction); + if (!DirectOrder) + { + std::reverse(fileList->begin(), fileList->end()); + } + return true; +} + //----------------------------------------------------------------------------- // Print /**