Computer Assited Medical Intervention Tool Kit
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DicomComponentExtension.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * $CAMITK_LICENCE_BEGIN$
3  *
4  * CamiTK - Computer Assisted Medical Intervention ToolKit
5  * (c) 2001-2013 UJF-Grenoble 1, CNRS, TIMC-IMAG UMR 5525 (GMCAO)
6  *
7  * Visit http://camitk.imag.fr for more information
8  *
9  * This file is part of CamiTK.
10  *
11  * CamiTK is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * CamiTK is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License version 3 for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22  *
23  * $CAMITK_LICENCE_END$
24  ****************************************************************************/
25 
26 #ifndef DICOM_COMPONENT_PLUGIN_H
27 #define DICOM_COMPONENT_PLUGIN_H
28 
29 #include <map>
30 #include <QObject>
31 #include <QCheckBox>
32 #include <itkGDCMSeriesFileNames.h>
33 
35 
36 using namespace camitk;
42 typedef itk::GDCMSeriesFileNames NamesGeneratorType;
43 
44 typedef std::vector<std::string> FileNamesContainerType;
45 
46 typedef struct
47 {
49  QString modality;
51  QString protocolName;
56 
58  QString rows;
59  QString columns;
60  QString slices;
62 
74  QString bitsAllocated;
76  QString highBit;
77 
79  QCheckBox * openIt;
81  QCheckBox * desInterlace;
82 
84 
85 typedef struct
86 {
87  bool operator()(const SomeDicomInfo i1, const SomeDicomInfo i2) const
88  {
89  int nb1 = i1.numberOfTemporalPositions.toInt();
90  int nb2 = i2.numberOfTemporalPositions.toInt();
91 
92  return nb1 < nb2;
93  }
94 
96 
98  Q_OBJECT
99  Q_INTERFACES(camitk::ComponentExtension);
100 
101  public:
104 
106  virtual QString getName() const;
107 
109  virtual QString getDescription() const;
110 
112  virtual QStringList getFileExtensions() const;
113 
115  virtual bool hasDataDirectory() const;
116 
118  virtual Component * open(const QString &) throw (AbortException);
119 
120  protected:
122  virtual ~DicomComponentExtension() {};
123 
125  bool findAllDicomSeries(const QString &);
126 
128  bool chooseDicomSeriesIds() throw (AbortException);
129 
130 
131  // Map storing series
132  // For each series, it contains:
133  // - Key: some infos read in the dicom headers (SomeDicomInfo)
134  // - Data: set of filenames needed to build the 3D Volume
135  std::map<SomeDicomInfo *, FileNamesContainerType> theSeries;
136 
137 };
138 
139 #endif // DICOM_COMPONENT_PLUGIN_H