.. _program_listing_file_MRMLDM_vtkMRMLLayerDMPipelineFactory.h: Program Listing for File vtkMRMLLayerDMPipelineFactory.h ======================================================== |exhale_lsh| :ref:`Return to documentation for file ` (``MRMLDM/vtkMRMLLayerDMPipelineFactory.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "vtkSlicerLayerDMModuleMRMLDisplayableManagerExport.h" // VTK includes #include #include #include #include // STL includes #include #include class vtkMRMLAbstractViewNode; class vtkMRMLLayerDMObjectEventObserver; class vtkMRMLLayerDMPipelineCreatorI; class vtkMRMLLayerDMPipelineI; class vtkMRMLNode; class VTK_SLICER_LAYERDM_MODULE_MRMLDISPLAYABLEMANAGER_EXPORT vtkMRMLLayerDMPipelineFactory : public vtkObject { public: enum Events { // Triggered when the factory creates a non-empty pipeline PipelineAboutToBeCreatedEvent = vtkCommand::UserEvent + 1 }; static vtkMRMLLayerDMPipelineFactory* New(); vtkTypeMacro(vtkMRMLLayerDMPipelineFactory, vtkObject); static vtkSmartPointer GetInstance(); void AddPipelineCreator(const vtkSmartPointer& creator); vtkSmartPointer AddPipelineCreator( const std::function(vtkMRMLAbstractViewNode*, vtkMRMLNode*)>& creatorCallBack, int priority = 0); void RemovePipelineCreator(const vtkSmartPointer& creator); bool ContainsPipelineCreator(const vtkSmartPointer& creator) const; vtkSmartPointer CreatePipeline(vtkMRMLAbstractViewNode* viewNode, vtkMRMLNode* node); vtkMRMLAbstractViewNode* GetLastViewNode() const; vtkMRMLNode* GetLastNode() const; vtkMRMLLayerDMPipelineI* GetLastPipeline() const; protected: vtkMRMLLayerDMPipelineFactory(); ~vtkMRMLLayerDMPipelineFactory() override = default; private: void SortPipelineCreators(); std::vector> m_pipelineCreators; vtkSmartPointer m_obs; vtkWeakPointer m_lastView; vtkWeakPointer m_lastNode; vtkWeakPointer m_lastPipeline; };