OpenWalnut  1.5.0dev
WMWriteNIfTI.h
1 //---------------------------------------------------------------------------
2 //
3 // Project: OpenWalnut ( http://www.openwalnut.org )
4 //
5 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6 // For more information see http://www.openwalnut.org/copying
7 //
8 // This file is part of OpenWalnut.
9 //
10 // OpenWalnut is free software: you can redistribute it and/or modify
11 // it under the terms of the GNU Lesser General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // OpenWalnut 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 for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public License
21 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22 //
23 //---------------------------------------------------------------------------
24 
25 #ifndef WMWRITENIFTI_H
26 #define WMWRITENIFTI_H
27 
28 #include <map>
29 #include <memory>
30 #include <string>
31 #include <vector>
32 
33 #include <osg/Geode>
34 #include <osg/Node>
35 #include <osg/Uniform>
36 
37 #include "core/dataHandler/WDataSetScalar.h"
38 #include "core/kernel/WModule.h"
39 #include "core/kernel/WModuleInputData.h"
40 
41 class WPickHandler;
42 
43 /**
44  * Write the input dataset to a NIfTI file
45  * \problem It works only on uint8_t values sets so far.
46  * \problem Might crash OpenWalnut
47  *
48  * \ingroup modules
49  */
50 class WMWriteNIfTI : public WModule
51 {
52 public:
53  /**
54  * Standard constructor.
55  */
56  WMWriteNIfTI();
57 
58  /**
59  * Destructor.
60  */
61  ~WMWriteNIfTI();
62 
63  /**
64  * Gives back the name of this module.
65  * \return the module's name.
66  */
67  virtual const std::string getName() const;
68 
69  /**
70  * Gives back a description of this module.
71  * \return description of module.
72  */
73  virtual const std::string getDescription() const;
74 
75  /**
76  * Due to the prototype design pattern used to build modules, this method returns a new instance of this method. NOTE: it
77  * should never be initialized or modified in some other way. A simple new instance is required.
78  *
79  * \return the prototype used to create every module in OpenWalnut.
80  */
81  virtual std::shared_ptr< WModule > factory() const;
82 
83  /**
84  * Get the icon for this module in XPM format.
85  * \return The icon.
86  */
87  virtual const char** getXPMIcon() const;
88 
89 
90 protected:
91  /**
92  * Entry point after loading the module. Runs in separate thread.
93  */
94  virtual void moduleMain();
95 
96  /**
97  * Initialize the connectors this module is using.
98  */
99  virtual void connectors();
100 
101  /**
102  * Initialize the properties for this module.
103  */
104  virtual void properties();
105 
106 private:
107  /**
108  * Allows one to get a void* out of WValueSet.
109  * \param returnData the casted data will be returned through this pointer.
110  */
111  template< typename T > void castData( void*& returnData );
112 
113  /**
114  * This performs all work necessary to actually write the data to the file
115  */
116  void writeToFile();
117 
118  /**
119  * The filename property -> where to write the nifty file
120  */
121  WPropFilename m_filename;
122  WPropTrigger m_saveTriggerProp; //!< This property triggers the actual writing,
123 
124  std::shared_ptr< WModuleInputData< WDataSetSingle > > m_input; //!< Input connector required by this module.
125  std::shared_ptr< WDataSetSingle > m_dataSet; //!< Pointer providing access to the treated data set in the whole module.
126 };
127 #endif // WMWRITENIFTI_H
Write the input dataset to a NIfTI file.
Definition: WMWriteNIfTI.h:51
~WMWriteNIfTI()
Destructor.
virtual const std::string getName() const
Gives back the name of this module.
std::shared_ptr< WModuleInputData< WDataSetSingle > > m_input
Input connector required by this module.
Definition: WMWriteNIfTI.h:124
void castData(void *&returnData)
Allows one to get a void* out of WValueSet.
virtual void moduleMain()
Entry point after loading the module.
WMWriteNIfTI()
Standard constructor.
WPropTrigger m_saveTriggerProp
This property triggers the actual writing,.
Definition: WMWriteNIfTI.h:122
WPropFilename m_filename
The filename property -> where to write the nifty file.
Definition: WMWriteNIfTI.h:121
virtual void properties()
Initialize the properties for this module.
virtual std::shared_ptr< WModule > factory() const
Due to the prototype design pattern used to build modules, this method returns a new instance of this...
std::shared_ptr< WDataSetSingle > m_dataSet
Pointer providing access to the treated data set in the whole module.
Definition: WMWriteNIfTI.h:125
virtual const char ** getXPMIcon() const
Get the icon for this module in XPM format.
virtual const std::string getDescription() const
Gives back a description of this module.
virtual void connectors()
Initialize the connectors this module is using.
void writeToFile()
This performs all work necessary to actually write the data to the file.
Class representing a single module of OpenWalnut.
Definition: WModule.h:72
Class to handle events with a pick.
Definition: WPickHandler.h:44