diff --git a/Modules/Annotation/include/mitkStdAnnotationDataProviders.h b/Modules/Annotation/include/mitkStdAnnotationDataProviders.h new file mode 100644 index 0000000000..0c428933f7 --- /dev/null +++ b/Modules/Annotation/include/mitkStdAnnotationDataProviders.h @@ -0,0 +1,21 @@ +#pragma once +#include "mitkDataProvider.h" + +namespace mitk +{ + class AnnotationDataProviderFactory + { + public: + static DataProvider::OnEventAction StdSliceAction(); + static DataProvider::OnEventAction StdTimeAction(); + + static mitk::DataProvider::Pointer DefaultSliceNumberProvider(std::string providerName = "SliceNumberProviderAxial", + const std::string &rendererId = "stdmulti.widget1"); + static mitk::DataProvider::Pointer DefaultTimeStepProvider(std::string providerName = "TimeStepProviderAxial", + const std::string &rendererId = "stdmulti.widget1"); + static mitk::DataProvider::Pointer DefaultDataNodeProvider(std::string providerName, + itk::Object::Pointer selectionListener, + const itk::EventObject *event, + DataProvider::OnEventAction selectionChangedAction); + }; +} // namespace mitk diff --git a/Modules/Annotation/src/mitkStdAnnotationDataProviders.cpp b/Modules/Annotation/src/mitkStdAnnotationDataProviders.cpp new file mode 100644 index 0000000000..f04af619f6 --- /dev/null +++ b/Modules/Annotation/src/mitkStdAnnotationDataProviders.cpp @@ -0,0 +1,52 @@ +#include "mitkStdAnnotationDataProviders.h" + +mitk::DataProvider::OnEventAction mitk::AnnotationDataProviderFactory::StdSliceAction() +{ + return [](const itk::Object *caller, const itk::EventObject &event) { + const auto sliceEvent = dynamic_cast(&event); + if (sliceEvent) + { + return sliceEvent->GetPos(); + } + return static_cast(0); + }; +} + +mitk::DataProvider::OnEventAction mitk::AnnotationDataProviderFactory::StdTimeAction() +{ + return [](const itk::Object *caller, const itk::EventObject &event) { + const auto sliceEvent = dynamic_cast(&event); + if (sliceEvent) + { + return sliceEvent->GetPos(); + } + return static_cast(0); + }; +} + +mitk::DataProvider::Pointer mitk::AnnotationDataProviderFactory::DefaultSliceNumberProvider( + std::string providerName, const std::string &rendererId) +{ + return DataProvider::New(std::move(providerName), + BaseRenderer::GetByName(rendererId)->GetSliceNavigationController(), + SliceNavigationController::GeometrySliceEvent(nullptr, 0).MakeObject(), + StdSliceAction()); +} + +mitk::DataProvider::Pointer mitk::AnnotationDataProviderFactory::DefaultTimeStepProvider(std::string providerName, + const std::string &rendererId) +{ + return DataProvider::New(std::move(providerName), + BaseRenderer::GetByName(rendererId)->GetSliceNavigationController(), + SliceNavigationController::TimeGeometryEvent(nullptr, 0).MakeObject(), + StdTimeAction()); +} + +mitk::DataProvider::Pointer mitk::AnnotationDataProviderFactory::DefaultDataNodeProvider( + std::string providerName, + itk::Object::Pointer selectionListener, + const itk::EventObject *event, + DataProvider::OnEventAction selectionChangedAction) +{ + return DataProvider::New(std::move(providerName), selectionListener, event, selectionChangedAction); +} \ No newline at end of file