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