Program: gdcm
Module: $RCSfile: gdcmSerieHeader.cxx,v $
Language: C++
- Date: $Date: 2005/01/11 00:21:48 $
- Version: $Revision: 1.5 $
+ Date: $Date: 2005/01/14 21:03:54 $
+ Version: $Revision: 1.6 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmSerieHeader.h"
#include "gdcmDirList.h"
#include "gdcmHeader.h"
+#include "gdcmDebug.h"
#include <math.h>
#include <algorithm>
SerieHeader::SerieHeader()
{
CoherentGdcmFileList.clear();
+ // Later will contains: 0020 000e UI REL Series Instance UID
+ CurrentSerieUID = "";
}
SerieHeader::~SerieHeader()
*/
void SerieHeader::AddFileName(std::string const &filename)
{
- Header *header = new Header( filename );
- CoherentGdcmFileList.push_back( header );
+ //directly use string and not const char*:
+ Header *header = new Header( filename );
+ if( header->IsReadable() )
+ {
+ // 0020 000e UI REL Series Instance UID
+ std::string uid = header->GetEntry (0x0020, 0x000e);
+ if( CurrentSerieUID == "" )
+ {
+ // Set the current one
+ CurrentSerieUID = uid;
+ }
+ if( CurrentSerieUID == uid )
+ {
+ // Current Serie UID and DICOM header seems to match add the file:
+ CoherentGdcmFileList.push_back( header );
+ }
+ else
+ {
+ gdcmVerboseMacro("Wrong Serie Instance UID should be:" << CurrentSerieUID );
+ }
+ }
+ else
+ {
+ gdcmVerboseMacro("Could not read file: " << filename );
+ delete header;
+ }
}
/**
*/
void SerieHeader::AddGdcmFile(Header *file)
{
- CoherentGdcmFileList.push_back( file );
+ if( file->IsReadable() )
+ {
+ CoherentGdcmFileList.push_back( file );
+ }
+ else
+ {
+ gdcmVerboseMacro("Could not add file: " << file->GetFileName() );
+ }
}
/**
for( DirList::const_iterator it = filenames_list.begin();
it != filenames_list.end(); ++it)
{
- //directly use string and not const char*:
- Header *header = new Header( *it );
- if( header->IsReadable() )
- {
- CoherentGdcmFileList.push_back( header );
- }
- else
- {
- delete header;
- }
+ AddFileName( *it );
}
}
//based on Jolinda's algorithm
{
//iop is calculated based on the file file
- float *cosines = new float[6];
+ float cosines[6];
float normal[3];
float ipp[3];
float dist;
if( dist == 0 )
{
- delete[] cosines;
return false;
}
if( dist == 0 )
{
- delete[] cosines;
return false;
}
distlist.clear();
CoherentGdcmFileVector.clear();
- delete[] cosines;
return true;
}
Program: gdcm
Module: $RCSfile: gdcmSerieHeader.h,v $
Language: C++
- Date: $Date: 2005/01/11 15:15:38 $
- Version: $Revision: 1.4 $
+ Date: $Date: 2005/01/14 21:03:55 $
+ Version: $Revision: 1.5 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
class GDCM_EXPORT SerieHeader
{
public:
+ typedef std::list<Header* > GdcmHeaderList;
+
SerieHeader();
~SerieHeader();
/// Assumes the list is not empty.
Header *GetGdcmHeader() { return CoherentGdcmFileList.front(); }
- typedef std::list<Header* > GdcmHeaderList;
-
/// \brief Gets the *coherent* File List
/// @return the *coherent* File List
const GdcmHeaderList &GetGdcmFileList() { return CoherentGdcmFileList; }
bool FileNameOrdering();
GdcmHeaderList CoherentGdcmFileList;
+ /// Ref to the current Serie Instance UID to avoid mixing two series
+ /// within the same directory
+ std::string CurrentSerieUID;
};
} // end namespace gdcm