Program Listing for File vtkMRMLLayerDMPipelineI.h

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

#pragma once

#include "vtkSlicerLayerDMModuleMRMLDisplayableManagerExport.h"

// Slicer includes
#include <vtkMRMLAbstractViewNode.h>

// VTK includes
#include <vtkCommand.h>
#include <vtkObject.h>

class vtkCamera;
class vtkMRMLAbstractViewNode;
class vtkMRMLInteractionEventData;
class vtkMRMLLayerDMPipelineI;
class vtkMRMLLayerDMPipelineManager;
class vtkMRMLNode;
class vtkMRMLScene;
class vtkMRMLLayerDMObjectEventObserver;
class vtkRenderer;

class VTK_SLICER_LAYERDM_MODULE_MRMLDISPLAYABLEMANAGER_EXPORT vtkMRMLLayerDMPipelineI : public vtkObject
{
public:
  static vtkMRMLLayerDMPipelineI* New();
  vtkTypeMacro(vtkMRMLLayerDMPipelineI, vtkObject);

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

  virtual vtkCamera* GetCustomCamera() const;

  virtual int GetMouseCursor() const;

  virtual unsigned int GetRenderOrder() const;

  virtual int GetWidgetState() const;

  virtual void LoseFocus(vtkMRMLInteractionEventData* eventData);

  virtual void OnDefaultCameraModified(vtkCamera* camera);

  virtual void OnReferenceToDisplayNodeAdded(vtkMRMLNode* fromNode, const std::string& role);
  virtual void OnReferenceToDisplayNodeRemoved(vtkMRMLNode* fromNode, const std::string& role);

  virtual void OnRendererAdded(vtkRenderer* renderer);

  virtual void OnRendererRemoved(vtkRenderer* renderer);

  virtual bool ProcessInteractionEvent(vtkMRMLInteractionEventData* eventData);

  virtual void SetDisplayNode(vtkMRMLNode* displayNode);

  virtual void SetPipelineManager(vtkMRMLLayerDMPipelineManager* pipelineManager);

  virtual void SetScene(vtkMRMLScene* scene);

  virtual void SetViewNode(vtkMRMLAbstractViewNode* viewNode);

  virtual void UpdatePipeline();

  bool BlockResetDisplay(bool isBlocked);

  vtkMRMLNode* GetDisplayNode() const;

  vtkMRMLLayerDMPipelineI* GetNodePipeline(vtkMRMLNode* node) const;

  vtkMRMLLayerDMPipelineManager* GetPipelineManager() const;

  vtkRenderer* GetRenderer() const;

  vtkMRMLScene* GetScene() const;

  vtkMRMLAbstractViewNode* GetViewNode() const;

  bool UpdateObserver(vtkObject* prevObj, vtkObject* obj, const std::vector<unsigned long>& events) const;
  bool UpdateObserver(vtkObject* prevObj, vtkObject* obj, unsigned long event = vtkCommand::ModifiedEvent) const;

  void RemoveObserver(vtkObject* prevObj) const;

  void RequestRender() const;

  void ResetDisplay();

  void SetRenderer(vtkRenderer* renderer);

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

  virtual void OnUpdate(vtkObject* obj, unsigned long eventId, void* callData);

private:
  vtkWeakPointer<vtkMRMLAbstractViewNode> m_viewNode;
  vtkWeakPointer<vtkMRMLNode> m_displayNode;
  vtkWeakPointer<vtkRenderer> m_renderer;
  bool m_isResetDisplayBlocked;
  vtkSmartPointer<vtkMRMLLayerDMObjectEventObserver> m_obs;
  vtkWeakPointer<vtkMRMLLayerDMPipelineManager> m_pipelineManager;
  vtkWeakPointer<vtkMRMLScene> m_scene;
};