X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmSerieHelper.h;h=b3d4b61942365dd8e7a3e0ee2c052118c3112fc0;hb=4249e0d6fb6942a1b221a74f42bff4acd773105d;hp=d04d005e8ba88a22f4382464719b0a9d656cd9ed;hpb=906464b1c71b1b623f8202a693e75a358a5bd965;p=gdcm.git diff --git a/src/gdcmSerieHelper.h b/src/gdcmSerieHelper.h index d04d005e..b3d4b619 100644 --- a/src/gdcmSerieHelper.h +++ b/src/gdcmSerieHelper.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmSerieHelper.h,v $ Language: C++ - Date: $Date: 2006/02/16 20:06:15 $ - Version: $Revision: 1.37 $ + Date: $Date: 2007/08/22 16:14:04 $ + Version: $Revision: 1.44 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -16,18 +16,20 @@ =========================================================================*/ -#ifndef GDCMSERIEHELPER_H -#define GDCMSERIEHELPER_H +#ifndef _GDCMSERIEHELPER_H_ +#define _GDCMSERIEHELPER_H_ #include "gdcmRefCounter.h" #include "gdcmTagKey.h" #include "gdcmDebug.h" // for LEGACY + +#include "gdcmDicomDirSerie.h" #include #include #include -namespace gdcm +namespace GDCM_NAME_SPACE { class File; @@ -64,7 +66,7 @@ class GDCM_EXPORT SerieHelper : public RefCounter public: /// SingleSerieUIDFileSetmap replaces the former CoherentFileListmap - /// ( List were actually std::vectors, and wher no coherent at all : + /// ( List were actually std::vectors, and where no coherent at all : /// They were only Single SeriesInstanceUID File sets) typedef std::map SingleSerieUIDFileSetmap; @@ -79,11 +81,11 @@ public: /// \todo should return bool or throw error ? void AddFileName(std::string const &filename); bool AddFile(File *header); -#ifndef GDCM_LEGACY_REMOVE - bool AddGdcmFile(File* header) { return AddFile(header); } -#endif + // GDCM_LEGACY(bool AddGdcmFile(File* header)) void SetDirectory(std::string const &dir, bool recursive=false); + void SetDicomDirSerie(DicomDirSerie *se); + bool IsCoherent(FileList *fileSet); void OrderFileList(FileList *fileSet); void Clear() { ClearAll(); } @@ -95,9 +97,9 @@ public: const FileList &GetFileList() { return *SingleSerieUIDFileSetHT.begin()->second; } - GDCM_LEGACY( FileList *GetFirstCoherentFileList() ); - GDCM_LEGACY( FileList *GetNextCoherentFileList() ); - GDCM_LEGACY( FileList *GetCoherentFileList(std::string serieUID) ); + // GDCM_LEGACY( FileList *GetFirstCoherentFileList() ) + // GDCM_LEGACY( FileList *GetNextCoherentFileList() ) + // GDCM_LEGACY( FileList *GetCoherentFileList(std::string serieUID) ) FileList *GetFirstSingleSerieUIDFileSet(); FileList *GetNextSingleSerieUIDFileSet(); @@ -105,9 +107,17 @@ public: /// brief returns the 'Series Instance UID' Single SerieUID FileSet std::string GetCurrentSerieUIDFileSetUID() { return (*ItFileSetHt).first; } + + /// \brief returns the distance between the 2 first -adjacent- slices, + /// along the slice normal; -1.0 if process failed + /// Computed during ImagePositionPatientOrdering() process. + /// To be use *immediately after* ImagePositionPatientOrdering() + /// (it's a member of the FileHelper, *not* of the FileList !) + double GetZSpacing() { return ZSpacing; } + /// All the following allow user to restrict DICOM file to be part /// of a particular serie - /// \todo : find a trick to allow user to say the retrictetons are ored + /// \todo : find a trick to allow user to say the restrictions are ored /// (not only anded) /// ex : keep the images whose SerieNumber is 101 or 102 or 103. void AddRestriction(TagKey const &key); @@ -133,7 +143,7 @@ public: /// 0018 0024 Sequence Name /// 0018 0050 Slice Thickness /// 0028 0010 Rows - /// 0028 0011 Columns + /// 0028 0011 Columns void CreateDefaultUniqueSeriesIdentifier(); void AddSeriesDetail(uint16_t group, uint16_t elem, bool convert); @@ -155,6 +165,12 @@ public: * @param mode Load mode to be used */ void SetLoadMode (int mode) { LoadMode = mode; } + +/** + * \brief Sets the DropDuplicatePositions as a boolean. + * @param drop DropDuplicatePositions mode to be used + */ + void SetDropDuplicatePositions (bool drop) { DropDuplicatePositions = drop; } /// Brief User wants the files to be sorted Direct Order (default value) void SetSortOrderToDirect() { DirectOrder = true; } @@ -230,9 +246,17 @@ private: /// he may supply his own comparison function. BOOL_FUNCTION_PFILE_PFILE_POINTER UserLessThanFunction; + bool DropDuplicatePositions; + void Sort(FileList *fileList, bool (*pt2Func)( File *file1, File *file2) ); bool m_UseSeriesDetails; + /// \brief distance between the 2 first -adjancent- slices, along the slice normal + /// Computed during ImagePositionPatientOrdering() process. + /// (we need to sort the whole image set to do that) + /// To be used *immediately after* ImagePositionPatientOrdering() + /// (it's a member of the FileHelper, *not* of the FileList !) + double ZSpacing; }; } // end namespace gdcm