X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src%2FgdcmSerieHelper.h;h=3a912474eb48c77f0e4985087adf048d22da4573;hb=21d241b3fdcf675d8d91a6daf6dfd6f448b68195;hp=ef9036b8f63d9464a32b2d8a1b0cde4aeb13449f;hpb=eeb624df6a1661e969566c200505f3dac84f4cd6;p=gdcm.git diff --git a/src/gdcmSerieHelper.h b/src/gdcmSerieHelper.h index ef9036b8..3a912474 100644 --- a/src/gdcmSerieHelper.h +++ b/src/gdcmSerieHelper.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmSerieHelper.h,v $ Language: C++ - Date: $Date: 2005/07/21 05:00:30 $ - Version: $Revision: 1.14 $ + Date: $Date: 2005/09/06 16:48:24 $ + Version: $Revision: 1.22 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -31,6 +31,8 @@ namespace gdcm class File; typedef std::vector FileList; +typedef bool (*BOOL_FUNCTION_PFILE_PFILE_POINTER)(File *, File *); + //----------------------------------------------------------------------------- /** * \brief @@ -54,6 +56,7 @@ public: void AddGdcmFile(File *header); void SetDirectory(std::string const &dir, bool recursive=false); + bool IsCoherent(FileList *coherentFileList); void OrderFileList(FileList *coherentFileList); /// \brief Gets the FIRST *coherent* File List. @@ -74,22 +77,34 @@ public: /** * \brief Sets the LoadMode as a boolean string. - * NO_SEQ, NO_SHADOW, NO_SHADOWSEQ - ... (nothing more, right now) - * WARNING : before using NO_SHADOW, be sure *all* your files + * LD_NOSEQ, LD_NOSHADOW, LD_NOSHADOWSEQ + * ... (nothing more, right now) + * WARNING : before using LD_NOSHADOW, be sure *all* your files * contain accurate values in the 0x0000 element (if any) * of *each* Shadow Group. The parser will fail if the size is wrong ! * @param mode Load mode to be used */ void SetLoadMode (int mode) { LoadMode = mode; } +/// Brief User wants the files to be sorted Direct Order (default value) + void SetSortOrderToDirect() { DirectOrder = true; } + +/// Brief User wants the files to be sorted Reverse Order + void SetSortOrderToReverse() { DirectOrder = false; } + + /// to allow user to give is own comparison function + void SetUserLessThanFunction( BOOL_FUNCTION_PFILE_PFILE_POINTER userFunc ) + { UserLessThanFunction = userFunc; } private: + bool UserOrdering(FileList *coherentFileList); bool ImagePositionPatientOrdering(FileList *coherentFileList); bool ImageNumberOrdering(FileList *coherentFileList); bool FileNameOrdering(FileList *coherentFileList); static bool ImageNumberLessThan(File *file1, File *file2); + static bool ImageNumberGreaterThan(File *file1, File *file2); static bool FileNameLessThan(File *file1, File *file2); + static bool FileNameGreaterThan(File *file1, File *file2); //Attributes: CoherentFileListmap CoherentFileListHT; @@ -114,6 +129,15 @@ private: /// Bit 1 : Skip Shadow Groups if possible /// Probabely, some more to add int LoadMode; + + /// \brief whether we want to sort in direct order or not (reverse order). + /// To be used by aware user only + bool DirectOrder; + + /// \brief If user knows more about his images than gdcm does, + /// he may supply his own comparison function. + BOOL_FUNCTION_PFILE_PFILE_POINTER UserLessThanFunction; + }; } // end namespace gdcm