13 #ifndef mitkToolFactoryMacro_h
14 #define mitkToolFactoryMacro_h
16 #define MITK_TOOL_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
17 class EXPORT_SPEC CLASS_NAME##Factory : public ::itk::ObjectFactoryBase \
21 typedef CLASS_NAME##Factory Self; \
22 typedef itk::ObjectFactoryBase Superclass; \
23 typedef itk::SmartPointer<Self> Pointer; \
24 typedef itk::SmartPointer<const Self> ConstPointer; \
27 virtual const char *GetITKSourceVersion() const override { return ITK_SOURCE_VERSION; } \
28 virtual const char *GetDescription() const override { return DESCRIPTION; } \
30 itkFactorylessNewMacro(Self); \
33 itkTypeMacro(CLASS_NAME##Factory, itkObjectFactoryBase); \
36 CLASS_NAME##Factory() \
38 itk::ObjectFactoryBase::RegisterOverride( \
39 "mitkTool", #CLASS_NAME, DESCRIPTION, 1, itk::CreateObjectFunction<CLASS_NAME>::New()); \
42 ~CLASS_NAME##Factory() \
44 itk::ObjectFactoryBase::UnRegisterFactory(this); \
47 CLASS_NAME##Factory(const Self &);
\
48 void operator=(const Self &); \
51 class CLASS_NAME##RegistrationMethod \
54 CLASS_NAME##RegistrationMethod() \
57 m_Factory = CLASS_NAME##Factory::New(); \
58 itk::ObjectFactoryBase::RegisterFactory(m_Factory); \
61 ~CLASS_NAME##RegistrationMethod() \
64 itk::ObjectFactoryBase::UnRegisterFactory(m_Factory); \
68 CLASS_NAME##Factory::Pointer m_Factory; \
71 static CLASS_NAME##RegistrationMethod somestaticinitializer_##CLASS_NAME;
73 #define MITK_DERIVED_SM_TOOL_MACRO(EXPORT_SPEC, BASE_CLASS, CLASS_NAME, DESCRIPTION) \
74 class EXPORT_SPEC CLASS_NAME##Tool : public BASE_CLASS \
77 typedef CLASS_NAME##Tool Self; \
78 typedef BASE_CLASS Superclass; \
79 typedef itk::SmartPointer<Self> Pointer; \
80 typedef itk::SmartPointer<const Self> ConstPointer; \
82 itkFactorylessNewMacro(Self); \
83 itkCloneMacro(Self); \
89 m_SegmentationGenerator = CLASS_NAME::New(); \
92 void RegisterProgressObserver() \
94 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::Pointer command = \
95 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::New(); \
96 command->SetCallbackFunction(this, &CLASS_NAME##Tool::OnProgressEvent); \
97 m_SegmentationGenerator->AddSegmentationProgressObserver<CLASS_NAME##Tool>(command); \
100 void RegisterFinishedSegmentationObserver() \
102 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::Pointer command = \
103 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::New(); \
104 command->SetCallbackFunction(this, &CLASS_NAME##Tool::OnSegmentationFinished); \
105 m_SegmentationGenerator->AddSegmentationFinishedObserver<CLASS_NAME##Tool>(command); \
108 ~CLASS_NAME##Tool() {} \
111 MITK_TOOL_MACRO(EXPORT_SPEC, CLASS_NAME##Tool, DESCRIPTION);
115 #define MITK_TOOL_GUI_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
116 class EXPORT_SPEC CLASS_NAME##Factory : public ::itk::ObjectFactoryBase \
120 typedef CLASS_NAME##Factory Self; \
121 typedef itk::ObjectFactoryBase Superclass; \
122 typedef itk::SmartPointer<Self> Pointer; \
123 typedef itk::SmartPointer<const Self> ConstPointer; \
126 virtual const char *GetITKSourceVersion() const override { return ITK_SOURCE_VERSION; } \
127 virtual const char *GetDescription() const override { return DESCRIPTION; } \
129 itkFactorylessNewMacro(Self); \
132 itkTypeMacro(CLASS_NAME##Factory, itkObjectFactoryBase); \
135 CLASS_NAME##Factory() \
137 itk::ObjectFactoryBase::RegisterOverride( \
138 #CLASS_NAME, #CLASS_NAME, DESCRIPTION, 1, itk::CreateObjectFunction<CLASS_NAME>::New()); \
141 ~CLASS_NAME##Factory() \
143 itk::ObjectFactoryBase::UnRegisterFactory(this); \
146 CLASS_NAME##Factory(const Self &); \
147 void operator=(const Self &); \
150 class CLASS_NAME##RegistrationMethod \
153 CLASS_NAME##RegistrationMethod() \
156 m_Factory = CLASS_NAME##Factory::New(); \
157 itk::ObjectFactoryBase::RegisterFactory(m_Factory); \
160 ~CLASS_NAME##RegistrationMethod() \
163 itk::ObjectFactoryBase::UnRegisterFactory(m_Factory); \
167 CLASS_NAME##Factory::Pointer m_Factory; \
170 static CLASS_NAME##RegistrationMethod somestaticinitializer_##CLASS_NAME;
172 #define MITK_EXTERNAL_TOOL_GUI_HEADER_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
175 EXPORT_SPEC itk::ObjectFactoryBase* itkLoad(); \
178 #define MITK_EXTERNAL_TOOL_GUI_CPP_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
179 MITK_TOOL_GUI_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
182 EXPORT_SPEC itk::ObjectFactoryBase* itkLoad() \
184 static CLASS_NAME##Factory::Pointer p = CLASS_NAME##Factory::New(); \