Difference between revisions of "AHM2012-Slicer-Architecture"

From NAMIC Wiki
Jump to: navigation, search
Line 19: Line 19:
 
** Currently, there are two type of DisplayableManager: '''ThreeD''' and '''Slice''' '''DisplayableManager''' - Similar API.
 
** Currently, there are two type of DisplayableManager: '''ThreeD''' and '''Slice''' '''DisplayableManager''' - Similar API.
 
** Both derive from [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLAbstractDisplayableManager.h vtkMRMLAbstractDisplayableManager].
 
** Both derive from [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLAbstractDisplayableManager.h vtkMRMLAbstractDisplayableManager].
** '''ThreeDDisplayableManager''': deals with [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/Core/vtkMRMLViewNode.h MRMLViewNode] / [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkThreeDViewInteractorStyle.h ThreeDInteractorStyle]
+
** '''ThreeDDisplayableManager [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLAbstractThreeDViewDisplayableManager.h]''': deals with [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/Core/vtkMRMLViewNode.h MRMLViewNode] / [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkThreeDViewInteractorStyle.h ThreeDInteractorStyle]
** '''SliceDisplayableManager''': deals with [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/Core/vtkMRMLSliceNode.h MRMLSliceNode] / [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkSliceViewInteractorStyle.h SliceInteractorStyle]
+
** '''SliceDisplayableManager [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLAbstractSliceViewDisplayableManager.h]''': deals with [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/Core/vtkMRMLSliceNode.h MRMLSliceNode] / [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkSliceViewInteractorStyle.h SliceInteractorStyle]
  
 
* '''Factories''':
 
* '''Factories''':
 
** [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLThreeDViewDisplayableManagerFactory.h vtkMRMLThreeDViewDisplayableManagerFactory]
 
** [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLThreeDViewDisplayableManagerFactory.h vtkMRMLThreeDViewDisplayableManagerFactory]
 
** [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLSliceViewDisplayableManagerFactory.h vtkMRMLSliceViewDisplayableManagerFactory]
 
** [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLSliceViewDisplayableManagerFactory.h vtkMRMLSliceViewDisplayableManagerFactory]
 +
 +
* '''DisplayableManager within Module'''
 +
** Module can also register DisplayableManager. See [https://github.com/Slicer/Slicer/blob/master/Modules/Loadable/Annotations/qSlicerAnnotationsModule.cxx#L65 qSlicerAnnotationsModule.cxx#L65]
 +
 +
* '''DisplayableManager and Python'''
 +
** Mechanism to load python based DisplayableManager
 +
** Achieved using [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/DisplayableManager/vtkMRMLScriptedDisplayableManager.h vtkMRMLScriptedDisplayableManager]
  
 
== Views and Layouts ==
 
== Views and Layouts ==

Revision as of 08:01, 10 January 2012

Home < AHM2012-Slicer-Architecture

Modularization Object Specialization

  • Slicer is build on top re-usable and tested libraries.

Displayable Managers

  • Displayable manager: Specialized logic handling both RenderWindow <-> MRML and RenderWindow <-> Logic interactions.
  • Motivation: Have a well-designed mechanism to ...
    • ...represent MRML node within a Renderer/RenderWindow.
    • ... handle mouse/keyboard interaction.
    • ... synchronize widget across different views.
  • Overview:
    • Each time a viewer is instantiated, it asks a factory to provide him with a DisplayableManagerGroup.
    • DisplayableManagerGroup contain a list of DisplayableManager
    • Each DisplayableManager is associated with Renderer + InteractorStyle

Views and Layouts