13 #ifndef mitkNonBlockingAlgorithm_h
14 #define mitkNonBlockingAlgorithm_h
19 #include <itkObjectFactory.h>
38 #define mitkAlgorithmNewMacro(classname) \
43 classname *rawPtr = new classname(); \
44 Pointer smartPtr = rawPtr; \
45 rawPtr->UnRegister(); \
46 rawPtr->Initialize(); \
51 virtual::itk::LightObject::Pointer \
52 CreateAnother(void) const override \
55 Pointer smartPtr = classname::New(); \
56 ::itk::LightObject::Pointer lightPtr = smartPtr.GetPointer(); \
57 smartPtr->Initialize(this); \
104 m_ParameterListMutex.lock();
106 m_ParameterListMutex.unlock();
117 template <
typename TPixel,
unsigned int VImageDimension>
125 SetPointerParameter(parameter, mitkImage);
129 template <
typename TPixel,
unsigned int VImageDimension>
138 SetPointerParameter(parameter, mitkImage);
143 template <
typename T>
158 std::string error(
"There is no parameter \"");
161 throw std::invalid_argument(error);
164 template <
typename T>
184 std::string error(
"There is no parameter \"");
187 throw std::invalid_argument(error);
225 typedef std::map<std::string, unsigned long> MapTypeStringUInt;
227 MapTypeStringUInt m_TriggerPropertyConnections;
229 std::mutex m_ParameterListMutex;
231 int m_UpdateRequests;
232 std::thread m_Thread;
#define MITKALGORITHMSEXT_EXPORT
Base of all data objects.
Abstract base class for properties.
Data management class that handles 'was created by' relations.
virtual T GetValue() const
void GetParameter(const char *parameter, T &value) const
virtual bool ReadyToRun()
~NonBlockingAlgorithm() override
WeakPointer< DataStorage > m_DataStorage
virtual void ThreadedUpdateSuccessful()
PropertyList::Pointer m_Parameters
void SetItkImageAsMITKImagePointerParameter(const char *parameter, const itk::SmartPointer< itk::Image< TPixel, VImageDimension >> &itkImage)
For any kind of ITK images (smartpointers)
virtual void Initialize(const NonBlockingAlgorithm *other=nullptr)
void DefineTriggerParameter(const char *)
void SetPointerParameter(const char *parameter, BaseData *value)
For any kind of BaseData, like Image, Surface, etc. Will be stored inside some SmartPointerProperty.
void GetPointerParameter(const char *parameter, itk::SmartPointer< T > &value) const
virtual void ThreadedUpdateFailed()
void ThreadedUpdateFailed(const itk::EventObject &)
void StartBlockingAlgorithm()
DataStorage * GetDataStorage()
virtual bool ThreadedUpdateFunction()
void SetPointerParameter(const char *parameter, const itk::SmartPointer< T > &value)
For any kind of smart pointers.
void UnDefineTriggerParameter(const char *)
void SetParameter(const char *parameter, const T &value)
For any kind of normal types.
void SetDataStorage(DataStorage &storage)
void ThreadedUpdateSuccessful(const itk::EventObject &)
mitkClassMacroItkParent(NonBlockingAlgorithm, itk::Object)
void SetItkImageAsMITKImagePointerParameter(const char *parameter, itk::Image< TPixel, VImageDimension > *itkImage)
For any kind of ITK images (C pointers)
void TriggerParameterModified(const itk::EventObject &)
Property containing a smart-pointer.
itk::Object::Pointer GetSmartPointer() const
Image::Pointer ImportItkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, const BaseGeometry *geometry=nullptr, bool update=true)
Imports an itk::Image (with a specific type) as an mitk::Image.
Find image slices visible on a given plane.