Program Listing for File vtkMRMLLayerDisplayableManager.h

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

#pragma once

#include "vtkSlicerLayerDMModuleMRMLDisplayableManagerExport.h"

// Slicer includes
#include <vtkMRMLAbstractDisplayableManager.h>

// VTK includes
#include <vtkSmartPointer.h>

class vtkImageData;
class vtkMRMLDisplayableManagerFactory;
class vtkMRMLLayerDMPipelineI;
class vtkMRMLLayerDMPipelineManager;
class vtkRenderWindow;

class VTK_SLICER_LAYERDM_MODULE_MRMLDISPLAYABLEMANAGER_EXPORT vtkMRMLLayerDisplayableManager : public vtkMRMLAbstractDisplayableManager
{
public:
  static vtkMRMLLayerDisplayableManager* New();
  vtkTypeMacro(vtkMRMLLayerDisplayableManager, vtkMRMLAbstractDisplayableManager);

  bool CanProcessInteractionEvent(vtkMRMLInteractionEventData* eventData, double& distance2) override;
  bool ProcessInteractionEvent(vtkMRMLInteractionEventData* eventData) override;

  static void RegisterInDefaultViews();

  static void RegisterInFactory(vtkMRMLDisplayableManagerFactory* factory);

  static bool IsRegisteredInFactory(vtkMRMLDisplayableManagerFactory* factory);

  vtkSmartPointer<vtkMRMLLayerDMPipelineI> GetNodePipeline(vtkMRMLNode* node) const;

  static vtkSmartPointer<vtkImageData> RenderWindowBufferToImage(vtkRenderWindow* window);
  static void RenderWindowBufferToImage(vtkRenderWindow* window, const vtkSmartPointer<vtkImageData>& imageData);

protected:
  vtkMRMLLayerDisplayableManager();
  ~vtkMRMLLayerDisplayableManager() override = default;
  vtkMRMLLayerDisplayableManager(const vtkMRMLLayerDisplayableManager&) = delete;
  void operator=(const vtkMRMLLayerDisplayableManager&) = delete;

  void Create() override;
  void SetRenderer(vtkRenderer* newRenderer) override;

  void OnMRMLDisplayableNodeModifiedEvent(vtkObject* caller) override;
  void OnMRMLSceneStartBatchProcess() override;
  void OnMRMLSceneEndBatchProcess() override;
  void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
  void OnMRMLSceneNodeRemoved(vtkMRMLNode* node) override;
  void UnobserveMRMLScene() override;
  void UpdateFromMRML() override;

  int GetMouseCursor() override;
  void SetHasFocus(bool hasFocus, vtkMRMLInteractionEventData* eventData) override;

private:
  vtkSmartPointer<vtkMRMLLayerDMPipelineManager> m_pipelineManager;
};