13 #ifndef mitkToolFactoryMacro_h
14 #define mitkToolFactoryMacro_h
36 #define MITK_TOOL_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
37 class EXPORT_SPEC CLASS_NAME##Factory : public ::itk::ObjectFactoryBase \
41 typedef CLASS_NAME##Factory Self; \
42 typedef itk::ObjectFactoryBase Superclass; \
43 typedef itk::SmartPointer<Self> Pointer; \
44 typedef itk::SmartPointer<const Self> ConstPointer; \
47 virtual const char *GetITKSourceVersion() const override { return ITK_SOURCE_VERSION; } \
48 virtual const char *GetDescription() const override { return DESCRIPTION; } \
50 itkFactorylessNewMacro(Self); \
53 itkTypeMacro(CLASS_NAME##Factory, itkObjectFactoryBase); \
56 CLASS_NAME##Factory() \
58 itk::ObjectFactoryBase::RegisterOverride( \
59 "mitkTool", #CLASS_NAME, DESCRIPTION, 1, itk::CreateObjectFunction<CLASS_NAME>::New()); \
62 ~CLASS_NAME##Factory() \
64 itk::ObjectFactoryBase::UnRegisterFactory(this); \
67 CLASS_NAME##Factory(const Self &);
\
68 void operator=(const Self &); \
71 class CLASS_NAME##RegistrationMethod \
74 CLASS_NAME##RegistrationMethod() \
77 m_Factory = CLASS_NAME##Factory::New(); \
78 itk::ObjectFactoryBase::RegisterFactory(m_Factory); \
81 ~CLASS_NAME##RegistrationMethod() \
84 itk::ObjectFactoryBase::UnRegisterFactory(m_Factory); \
88 CLASS_NAME##Factory::Pointer m_Factory; \
91 static CLASS_NAME##RegistrationMethod somestaticinitializer_##CLASS_NAME;
104 #define MITK_DERIVED_SM_TOOL_MACRO(EXPORT_SPEC, BASE_CLASS, CLASS_NAME, DESCRIPTION) \
105 class EXPORT_SPEC CLASS_NAME##Tool : public BASE_CLASS \
108 typedef CLASS_NAME##Tool Self; \
109 typedef BASE_CLASS Superclass; \
110 typedef itk::SmartPointer<Self> Pointer; \
111 typedef itk::SmartPointer<const Self> ConstPointer; \
113 itkFactorylessNewMacro(Self); \
114 itkCloneMacro(Self); \
120 m_SegmentationGenerator = CLASS_NAME::New(); \
123 void RegisterProgressObserver() \
125 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::Pointer command = \
126 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::New(); \
127 command->SetCallbackFunction(this, &CLASS_NAME##Tool::OnProgressEvent); \
128 m_SegmentationGenerator->AddSegmentationProgressObserver<CLASS_NAME##Tool>(command); \
131 void RegisterFinishedSegmentationObserver() \
133 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::Pointer command = \
134 itk::ReceptorMemberCommand<CLASS_NAME##Tool>::New(); \
135 command->SetCallbackFunction(this, &CLASS_NAME##Tool::OnSegmentationFinished); \
136 m_SegmentationGenerator->AddSegmentationFinishedObserver<CLASS_NAME##Tool>(command); \
139 ~CLASS_NAME##Tool() {} \
142 MITK_TOOL_MACRO(EXPORT_SPEC, CLASS_NAME##Tool, DESCRIPTION);
156 #define MITK_TOOL_GUI_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
157 class EXPORT_SPEC CLASS_NAME##Factory : public ::itk::ObjectFactoryBase \
161 typedef CLASS_NAME##Factory Self; \
162 typedef itk::ObjectFactoryBase Superclass; \
163 typedef itk::SmartPointer<Self> Pointer; \
164 typedef itk::SmartPointer<const Self> ConstPointer; \
167 virtual const char *GetITKSourceVersion() const override { return ITK_SOURCE_VERSION; } \
168 virtual const char *GetDescription() const override { return DESCRIPTION; } \
170 itkFactorylessNewMacro(Self); \
173 itkTypeMacro(CLASS_NAME##Factory, itkObjectFactoryBase); \
176 CLASS_NAME##Factory() \
178 itk::ObjectFactoryBase::RegisterOverride( \
179 #CLASS_NAME, #CLASS_NAME, DESCRIPTION, 1, itk::CreateObjectFunction<CLASS_NAME>::New()); \
182 ~CLASS_NAME##Factory() \
184 itk::ObjectFactoryBase::UnRegisterFactory(this); \
187 CLASS_NAME##Factory(const Self &); \
188 void operator=(const Self &); \
191 class CLASS_NAME##RegistrationMethod \
194 CLASS_NAME##RegistrationMethod() \
197 m_Factory = CLASS_NAME##Factory::New(); \
198 itk::ObjectFactoryBase::RegisterFactory(m_Factory); \
201 ~CLASS_NAME##RegistrationMethod() \
204 itk::ObjectFactoryBase::UnRegisterFactory(m_Factory); \
208 CLASS_NAME##Factory::Pointer m_Factory; \
211 static CLASS_NAME##RegistrationMethod somestaticinitializer_##CLASS_NAME;
223 #define MITK_EXTERNAL_TOOL_GUI_HEADER_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
226 EXPORT_SPEC itk::ObjectFactoryBase* itkLoad(); \
239 #define MITK_EXTERNAL_TOOL_GUI_CPP_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
240 MITK_TOOL_GUI_MACRO(EXPORT_SPEC, CLASS_NAME, DESCRIPTION) \
243 EXPORT_SPEC itk::ObjectFactoryBase* itkLoad() \
245 static CLASS_NAME##Factory::Pointer p = CLASS_NAME##Factory::New(); \