]> Creatis software - clitk.git/blob - common/clitkEsrfHstXMLFileReader.cxx
Add code to write dicom sequence tag in gateSimulation2Dicom
[clitk.git] / common / clitkEsrfHstXMLFileReader.cxx
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to:
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://www.centreleonberard.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
18
19 #include "clitkEsrfHstXMLFileReader.h"
20 #include "itkMacro.h"
21
22 #include <itksys/SystemTools.hxx>
23 #include <itkMetaDataObject.h>
24
25 namespace clitk
26 {
27
28 int
29 EsrfHstXMLFileReader::
30 CanReadFile(const char *name)
31 {
32   if(!itksys::SystemTools::FileExists(name) ||
33       itksys::SystemTools::FileIsDirectory(name) ||
34       itksys::SystemTools::FileLength(name) == 0)
35     return 0;
36   return 1;
37 }
38
39 void
40 EsrfHstXMLFileReader::
41 StartElement(const char * itkNotUsed(name),const char ** itkNotUsed(atts))
42 {
43   m_CurCharacterData = "";
44 }
45
46 void
47 EsrfHstXMLFileReader::
48 EndElement(const char *name)
49 {
50 #define ENCAPLULATE_META_DATA_DOUBLE(metaName) \
51   if(itksys::SystemTools::Strucmp(name, metaName) == 0) { \
52     double d = atof(m_CurCharacterData.c_str() ); \
53     itk::EncapsulateMetaData<double>(m_Dictionary, metaName, d); \
54     }
55
56 #define ENCAPLULATE_META_DATA_INT(metaName) \
57   if(itksys::SystemTools::Strucmp(name, metaName) == 0) { \
58     double d = atof(m_CurCharacterData.c_str() ); \
59     itk::EncapsulateMetaData<int>(m_Dictionary, metaName, d); \
60     }
61
62 #define ENCAPLULATE_META_DATA_STRING(metaName) \
63   if(itksys::SystemTools::Strucmp(name, metaName) == 0) { \
64     itk::EncapsulateMetaData<std::string>(m_Dictionary, metaName, m_CurCharacterData); \
65     }
66
67   ENCAPLULATE_META_DATA_INT("idAc");
68   ENCAPLULATE_META_DATA_STRING("SUBVOLUME_NAME");
69   ENCAPLULATE_META_DATA_INT("SIZEX");
70   ENCAPLULATE_META_DATA_INT("SIZEY");
71   ENCAPLULATE_META_DATA_INT("SIZEZ");
72   ENCAPLULATE_META_DATA_INT("ORIGINX");
73   ENCAPLULATE_META_DATA_INT("ORIGINY");
74   ENCAPLULATE_META_DATA_INT("ORIGINZ");
75   ENCAPLULATE_META_DATA_INT("DIM_REC");
76   ENCAPLULATE_META_DATA_DOUBLE("voxelsize");
77   ENCAPLULATE_META_DATA_STRING("BYTE_ORDER");
78 }
79
80 void
81 EsrfHstXMLFileReader::
82 CharacterDataHandler(const char *inData, int inLength)
83 {
84   for(int i = 0; i < inLength; i++)
85     m_CurCharacterData = m_CurCharacterData + inData[i];
86 }
87
88 }