Program Listing for File vtkMRMLLayerDMCameraSynchronizer.h

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

#pragma once

#include "vtkSlicerLayerDMModuleMRMLDisplayableManagerExport.h"

// VTK includes
#include <vtkObject.h>
#include <vtkSmartPointer.h>
#include <vtkWeakPointer.h>

// STL includes
#include <memory>

class vtkCamera;
class vtkRenderer;
class CameraSynchronizeStrategy;
class vtkMRMLAbstractViewNode;

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

  void SetViewNode(vtkMRMLAbstractViewNode* viewNode);

  void SetDefaultCamera(const vtkSmartPointer<vtkCamera>& camera);

  void SetRenderer(vtkRenderer* renderer);

  bool BlockModified(bool isBlocked);

protected:
  vtkMRMLLayerDMCameraSynchronizer();
  ~vtkMRMLLayerDMCameraSynchronizer() override;

private:
  void UpdateStrategy();

  vtkSmartPointer<vtkCamera> m_defaultCamera;
  vtkWeakPointer<vtkRenderer> m_renderer;
  vtkWeakPointer<vtkMRMLAbstractViewNode> m_viewNode;
  std::unique_ptr<CameraSynchronizeStrategy> m_syncStrategy;
  bool m_isBlocked{ false };
};