Difference between revisions of "AHM2012-Slicer-Architecture"
From NAMIC Wiki
Line 43: | Line 43: | ||
== Views and Layouts == | == Views and Layouts == | ||
+ | |||
+ | * '''Existing layouts''' | ||
+ | ** conventionalView | ||
+ | ** fourUpView | ||
+ | ** oneUp3DView | ||
+ | ** oneUpRedView | ||
+ | ** oneUpYellowView | ||
+ | ** oneUpGreenView | ||
+ | ** tabbed3DView | ||
+ | ** tabbedSliceView | ||
+ | ** dual3DView | ||
+ | ** triple3DView | ||
+ | ** conventionalWidescreenView | ||
+ | ** threeOverThreeView | ||
+ | ** fourOverFourView | ||
+ | ** compareView | ||
+ | |||
+ | * Management of '''Layout''' and their associated '''View''' have been revisited. | ||
+ | * Layout are new described using a simple XML description. See [https://github.com/Slicer/Slicer/blob/master/Libs/MRML/Logic/vtkMRMLLayoutLogic.cxx vtkMRMLLayoutLogic] | ||
+ | |||
+ | <pre> | ||
+ | const char* triple3DEndoscopyView = | ||
+ | "<layout type=\"vertical\" split=\"true\" >" | ||
+ | " <item>" | ||
+ | " <view class=\"vtkMRMLViewNode\">" | ||
+ | " <property name=\"viewlabel\" action=\"default\">1</property>" | ||
+ | " </view>" | ||
+ | " </item>" | ||
+ | " <item>" | ||
+ | " <layout type=\"horizontal\">" | ||
+ | " <item>" | ||
+ | " <view class=\"vtkMRMLViewNode\" type=\"secondary\">" | ||
+ | " <property name=\"viewlabel\" action=\"default\">2</property>" | ||
+ | " </view>" | ||
+ | " </item>" | ||
+ | " <item>" | ||
+ | " <view class=\"vtkMRMLViewNode\" type=\"endoscopy\">" | ||
+ | " <property name=\"viewlabel\" action=\"default\">3</property>" | ||
+ | " </view>" | ||
+ | " </item>" | ||
+ | " </layout>" | ||
+ | " </item>" | ||
+ | "</layout>"; | ||
+ | </pre> |
Revision as of 08:36, 10 January 2012
Home < AHM2012-Slicer-ArchitectureModularization 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
- DisplayableManager
- Currently, there are two type of DisplayableManager: ThreeD and Slice DisplayableManager - Similar API.
- Both derive from vtkMRMLAbstractDisplayableManager.
- ThreeDDisplayableManager [1]: deals with MRMLViewNode / ThreeDInteractorStyle
- SliceDisplayableManager [2]: deals with MRMLSliceNode / SliceInteractorStyle
- DisplayableManager within Module
- Module can also register DisplayableManager. See qSlicerAnnotationsModule.cxx#L65
- DisplayableManager and Python
- Mechanism to load python based DisplayableManager
- Achieved using vtkMRMLScriptedDisplayableManager
- List of DisplayableManager (available in Libs/MRML/DisplayableManager directory)
Views and Layouts
- Existing layouts
- conventionalView
- fourUpView
- oneUp3DView
- oneUpRedView
- oneUpYellowView
- oneUpGreenView
- tabbed3DView
- tabbedSliceView
- dual3DView
- triple3DView
- conventionalWidescreenView
- threeOverThreeView
- fourOverFourView
- compareView
- Management of Layout and their associated View have been revisited.
- Layout are new described using a simple XML description. See vtkMRMLLayoutLogic
const char* triple3DEndoscopyView = "<layout type=\"vertical\" split=\"true\" >" " <item>" " <view class=\"vtkMRMLViewNode\">" " <property name=\"viewlabel\" action=\"default\">1</property>" " </view>" " </item>" " <item>" " <layout type=\"horizontal\">" " <item>" " <view class=\"vtkMRMLViewNode\" type=\"secondary\">" " <property name=\"viewlabel\" action=\"default\">2</property>" " </view>" " </item>" " <item>" " <view class=\"vtkMRMLViewNode\" type=\"endoscopy\">" " <property name=\"viewlabel\" action=\"default\">3</property>" " </view>" " </item>" " </layout>" " </item>" "</layout>";