Program Listing for File vtkMRMLLayerDMPipelineCallbackCreator.h

Return to documentation for file (MRMLDM/vtkMRMLLayerDMPipelineCallbackCreator.h)

#pragma once

#include "vtkSlicerLayerDMModuleMRMLDisplayableManagerExport.h"

#include "vtkMRMLLayerDMPipelineCreatorI.h"

// STL includes
#include <functional>

class VTK_SLICER_LAYERDM_MODULE_MRMLDISPLAYABLEMANAGER_EXPORT vtkMRMLLayerDMPipelineCallbackCreator : public vtkMRMLLayerDMPipelineCreatorI
{
public:
  static vtkMRMLLayerDMPipelineCallbackCreator* New();
  vtkTypeMacro(vtkMRMLLayerDMPipelineCallbackCreator, vtkMRMLLayerDMPipelineCreatorI);

  vtkSmartPointer<vtkMRMLLayerDMPipelineI> CreatePipeline(vtkMRMLAbstractViewNode* viewNode, vtkMRMLNode* node) const override;
  void SetCallback(const std::function<vtkSmartPointer<vtkMRMLLayerDMPipelineI>(vtkMRMLAbstractViewNode*, vtkMRMLNode*)>& callback);

protected:
  vtkMRMLLayerDMPipelineCallbackCreator();
  ~vtkMRMLLayerDMPipelineCallbackCreator() override = default;

private:
  std::function<vtkSmartPointer<vtkMRMLLayerDMPipelineI>(vtkMRMLAbstractViewNode*, vtkMRMLNode*)> m_callback;
};