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
=========================================================================*/
-#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 <vector>
#include <iostream>
#include <map>
-namespace gdcm
+namespace GDCM_NAME_SPACE
{
class File;
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<std::string, FileList *> SingleSerieUIDFileSetmap;
/// \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(); }
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();
/// 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);
/// 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);
* @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; }
/// 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