(core): reorganize libs and modules
Description
Sight uses way too many libraries and modules. Over time, we end up with too many targets. Often, we encounter modules with only one service inside. For newcomers, this is very confusing. Moreover, target names and grouping of libraries and services are not relevant.
Proposal
Propose a clear file tree hierarchy, i.e. :
- calibration
- core
- filter
- segmentation*
- geometry
- registration*
- io
- reader/writers
- network*
- navigation
- tracker*
- simulation
- ui
- visualization
- visu*
- video*
Group existing libraries and modules as much as possible.
Break the existing 1-1 stupid link between a module and its library. Libraries are there to share code.
Each library will have a README.md to briefly describe its content.
Each module will have a README.md to describe the list of services/activities.
Libraries
-
calibration
- calibration3d
-
core
- arData -> fwData
arDataCamp- arPreferences -> fwPreferences
- arServices -> fwServices
- fwActivities
- fwAtomConversion
- fwAtoms
- fwAtomsFilter -> fwAtoms/filter
- fwAtomsPatch -> fwAtoms/patch
- fwCamp
- fwCom -> fwCore
- fwCommand
- fwCore
- fwData
fwDataCamp- fwDataIO -> io folder
- fwDataTools -> fwData/tools
- fwDicomTools
- fwGui -> UI folder
- fwGuiQml -> UI folder
- fwGuiQt -> UI folder
- fwIO -> io folder
- fwJobs -> fwCore/jobs ?
- fwLog -> fwCore/log
- fwMath
- fwMedData -> fwData/medical
fwMedDataCamp- fwMedDataTools -> fwData/medical/tools
- fwMemory -> fwCore/memory
- fwPreferences
- fwQt -> fwGuiQt ??
- fwRender -> visu folder ?
- fwRuntime
- fwServices
- fwTest
- fwThread -> fwCore/thread
- fwTools -> fwCore/tools
- fwZip -> io folder ?
- arMDSemanticPatch -> io folder
- arStructuralPatch -> io folder
- fwMDSemanticPatch -> io folder
- fwStructuralPatch -> io folder
- pch/pchCamp
- pch/pchCore
- pch/pchData
- pch/pchServices
- pch/pchServicesOmp
-
filter
- imageFilterOp - imageFilters
- depthMapOp -> imageFilters ?
- colourImageMasking -> imageFilters ?
-
geometry
- eigenTools
- itkRegistrationOp -> itkRegistration
-
io
- cvIO
- fwAtomsBoostIO
- fwDataIO
- fwDcmtkIO
- fwDicomIOFilter
- fwGdcmIO
- fwItkIO
- fwNetworkIO
- fwPacsIO -> fwDcmtkIO/pacs
- fwVtkIO
- fwZip
- openvslamIO
- igtlNetwork
- igtlProtocol -> igtlNetwork/protocol
-
navigation
- tracker*
-
simulation
-
ui
- fwQml -> fwGuiQml ?
- fwGui
- fwGuiQml
- fwGuiQt
- fwDicomIOFilterQt
-
visualization
- fwRenderOgre
- fwRenderQt
- fwRenderQt3D
fwRenderVTKfwVTKQml- fwVideoQt
Modules
-
calibration
- calibrationActivity
- toolCalibrationActivity
- trackingCalibration
- videoCalibration
- videoCharucoCalibration
-
core
- activities
- appXml
arDataRegdataReg- gui -> ui folder
- memory
- preferences
- servicesReg
- ctrlCamera -> utils ?
- ctrlCamp -> utils ?
- ctrlCom -> utils ?
- ctrlHistory -> utils ?
- ctrlMemory -> utils ?
- ctrlPicking -> utils ?
- ctrlSelection -> utils ?
- ctrlTF -> utils ?
- monitor -> utils ?
- syncTimeline
-
filter
- opDepthMap
- opImageFilter
- opItkRegistration
- opUltrasound
- opVTKMesh
- opVTKSlicer
- colourSegmentation -> cvSegmentation
- cvSegmentation
- depthSegmentation -> cvSegmentation (realsense optional ?)
-
geometry
- registrationActivity
- trackedCameraRegistrationActivity
- maths
- basicRegistration
- registrationCV
-
io
- dicomAppConfig
- dicomFilteringActivity -> dicomActivities
- dicomPacsReaderActivity -> dicomActivities
- dicomPacsWriterActivity -> dicomActivities
- DicomWebReaderActivity -> dicomActivities
- dicomWebWriterActivity -> dicomActivities
- ioActivity
- ioARActivity
- validators
- filterUnknownSeries
- ioAtoms
- ioCalibration -> ioData/calibration
- ioData
- ioDcmtk
- ioDicom -> ioDcmtk and new module in UI ?
- ioDicomWeb -> ioDcmtk/web
- ioGdcm
- ioIGTL
- ioITK
- ioNetwork
- ioPacs -> ioDcmtl/pacs and new module in UI ?
- ioQt
- ioTimeline -> ioData
- ioVTK
- arPatchMedicalData
- patchMedicalData
-
navigation
- openvslamTracker
- trackerAruco
-
simulation
echoEdSimu
-
ui
- gui
- arMedia -> media
- flatIcon -> media/flatIcon ?
- media
- console
- guiQml
- guiQt
- monitorQt
- style -> guiQt/style
- styleQml -> guiQml/styleQml
- uiActivitiesQml
- uiActivitiesQt
- uiCalibration
- uiGenericQt
- uiHandEye
- uiImageQml
- uiImageQt
- uiIO
- uiMeasurement
- uiMeasurementQt
- uiMedDataQml
- uiMedDataQt
- uiPreferences
- uiReconstructionQml
- uiReconstructionQt
- uiTF
- uiTools
- uiVisu
- uiVisuOgre
- uiVisuQt
-
visualization
- 2DVisualizationActivity -> visualisationActivities (+ passage à Ogre)
- 3DVisualizationActivity -> visualisationActivities (+ passage à Ogre)
- volumeRenderingActivity -> visualisationActivities (+ passage à Ogre)
- imageConfig
- ogreConfig
- qtSceneConfig
- videoFilter -> videoOpenCV/filter ?
- videoOpenCV
- videoOpenni
- videoPCL
- videoQt
- videoRealSense
- videoTools -> videoOpenCV/tools ?
- scene2D
- visuBasic
- visuOgre
- visuOgreAdaptor
- visuOgreQt
- visuQt3DAdaptor
- visuQt3DQt
visuVTKvisuVTKAdaptorvisuVTKARAdaptorvisuVTKQmlvisuVTKQtvisuVTKVRAdaptorvtkSimpleMeshvtkSimpleNegato
Outcomes
Fewer libraries and modules -> clearer, easier for newcomers, faster configure time.
Links / references
(Any references)