3DSlicer17:Logics
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                3DSlicer17:Logics
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                1.Logics綜述
Logic是算法的集合,主要處理場景中的MRML節點。 Logic可以是:- Active(主動):觀測場景和節點,當接收事件改變時進行響應
- Passive(被動):實用函數的集合用來簡化節點的處理
- a mix of both:不理想...
2.Logic的類型
在Slicer中存在5種Logics。他們功能通常由他們的依賴庫決定。不同Logic類型之間的繼承關系可以方便我們去理解他們之間的關系。
 
2.1 MRML Logics
- 位置:Slicer/Libs/MRML/Logics
- 依賴項:MRML core、no graphical dependency、no Slicer dependency
- 功能:包含了邏輯基本類,如vtkMRMLAbstractLogic、vtkMRMLApplicationLogic,以及助手類;MRML Logics無法訪問應用程序,所以不需要包含任何特定的Slicer代碼
- 示例: - factories:對于MRML節點,VTKMRMLColorLogic創建默認的vtkMRMLColor* Node
- helpers:vtkMRMLModelHierarchyLogic
 
2.2 Slicer Logic
- 位置:Slicer/Base/Logics
- 依賴項:MRML Logic
- 功能:用于Slicer應用程序的特殊化的MRML Logic
- 示例:vtkSlicerColorLogic了解應用程序默認的LUT IDs 和 自定義應用程序的LUT文件
2.3 Application logic
- 位置:Slicer/Libs/MRML/Logics/vtkMRMLApplicationLogic.[h|cxx] 和 Slicer/Base/Logics/vtkSlicerApplicationLogic.[h|cxx]
- 依賴項:vtkMRMLApplicationLogic不依賴Slicer,但是vtkSlicerApplicationLogic依賴
- 功能:包含了應用程序的特定信息。vtkMRMLApplicationLogic是一個使用MRML為應用程序專門設計的抽象類。vtkSlicerApplicationLogic是為Slicer專門設計的。
2.4 Module Logic
- 位置:Slicer/Modules/Loadable/XYZ/Logic/vtkSlicerXXXLogic
- 依賴項:Slicer logics, XYZ nodes 和 可供選擇的其他模塊邏輯
- 功能:模塊邏輯就是模塊的公共程序接口API。模塊可以訪問其他模塊的Logic,例如?qSlicerCoreApplication::moduleManager()->module("Volumes")->logic())。每個模塊中至多存在一個模塊邏輯。然而,這并不影響模塊邏輯使用幫助邏輯,例如:vtkSlicerModelsLogic可以初始化/使用 vtkMRMLModelHierarchyLogic
2.5 Displayable Manager
- 位置:Slicer/Libs/MRML/DisplayableManager
- 依賴項:MRML Logic 和 vtkRendering
- 功能:在VTK渲染器中呈現節點,并處理與視口的用戶交互。
3.總結
一個類,如Logic、Widget,應該在他的API中顯示說明所需要的邏輯。
例如:qMRMLColorPickerwidget::setColorLogic(vtkMRMLColorLogic*)
而不是通過直接使用應用程序邏輯隱藏這個需求:
例如:this->GetApplicationLogic()->GetModelHierarchyLogic()? 類實例器的作用是將需要的邏輯傳遞給創建的類,例如模塊插件將模塊邏輯傳遞給模塊部件。對于依賴其他模塊邏輯而言的模塊邏輯,通過函數qSlicer*Module::setup()可以解決。qSlicer*Modules可以訪問所有的模塊和他們的邏輯,例如qSlicerCoreApplication::moduleManager()->module("Volumes")->logic()。在API中顯示所需要的邏輯可以使得代碼更具有模塊化,也更容易測試。
總結
以上是生活随笔為你收集整理的3DSlicer17:Logics的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 3DSlicer16:数据类型MRML
- 下一篇: 水滴石穿C语言之extern声明辨析
