Skip to content
Commits on Source (2)
......@@ -6,6 +6,8 @@ stages:
.linux_template: &linux_job
image: ${DOCKER_ENVDEV_MINT19}
variables:
FW_IGNORE_SLOW_TESTS: 1
before_script:
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_COMPILERCHECK=content
......@@ -24,6 +26,7 @@ stages:
.macos_template: &macos_job
variables:
CONAN_USER_HOME: $CI_PROJECT_DIR/conan
FW_IGNORE_SLOW_TESTS: 1
before_script:
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_COMPILERCHECK=content
......@@ -41,6 +44,7 @@ stages:
.windows_template: &windows_job
variables:
CONAN_USER_HOME: $CI_PROJECT_DIR/conan
FW_IGNORE_SLOW_TESTS: 1
before_script:
- conan config set storage.path="C:\cache\conan"
- if not exist "%CI_PROJECT_DIR%/install" md "%CI_PROJECT_DIR%/install"
......@@ -80,11 +84,11 @@ build:debug-linux:
- >
cmake $CI_PROJECT_DIR
-G Ninja
-DUSE_CONAN=ON
-DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/install
-DCMAKE_BUILD_TYPE=Debug
-DBUILD_TESTS=ON
-DBUILD_DOCUMENTATION=OFF
-DSPYLOG_LEVEL=trace
-DENABLE_PCH=OFF
- find . -type f -iname '*.?pp' -exec touch -f -a -m -t 197001010000 {} \;
- ninja
......@@ -94,8 +98,7 @@ build:debug-linux:
-s https://gitlab-ci-token:${CI_JOB_TOKEN}@git.ircad.fr/Sight/sight-data/-/archive/dev/sight-data-dev.tar.gz |
tar xfz - > /dev/null
- export FWTEST_DATA_DIR=$CI_PROJECT_DIR/build/sight-data-dev
- export FW_IGNORE_SLOW_TESTS=1
- ctest --timeout 240 --output-on-failure -O ctest.log
- ctest --timeout 240 --output-on-failure -O ctest.log -j4
artifacts:
when: always
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
......@@ -112,7 +115,6 @@ build:release-linux:
- >
cmake $CI_PROJECT_DIR
-G Ninja
-DUSE_CONAN=ON
-DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/install
-DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTS=ON
......@@ -126,8 +128,7 @@ build:release-linux:
-s https://gitlab-ci-token:${CI_JOB_TOKEN}@git.ircad.fr/Sight/sight-data/-/archive/dev/sight-data-dev.tar.gz |
tar xfz - > /dev/null
- export FWTEST_DATA_DIR=$CI_PROJECT_DIR/build/sight-data-dev
- export FW_IGNORE_SLOW_TESTS=0
- ctest --timeout 120 --output-on-failure -O ctest.log
- ctest --timeout 120 --output-on-failure -O ctest.log -j4
artifacts:
when: always
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
......@@ -145,19 +146,18 @@ build:debug-windows:
- >
cmake %CI_PROJECT_DIR%
-G Ninja
-DUSE_CONAN=ON
-DCMAKE_INSTALL_PREFIX=%CI_PROJECT_DIR%/install
-DCMAKE_BUILD_TYPE=Debug
-DBUILD_TESTS=ON
-DBUILD_DOCUMENTATION=OFF
-DSPYLOG_LEVEL=trace
- ninja
- >
curl --retry 3 --location --insecure --location-trusted
-s https://gitlab-ci-token:${CI_JOB_TOKEN}@git.ircad.fr/Sight/sight-data/-/archive/dev/sight-data-dev.zip
--output sight-data-dev.zip && unzip -qq sight-data-dev.zip
- set FWTEST_DATA_DIR=%CI_PROJECT_DIR%\build\sight-data-dev
- set FW_IGNORE_SLOW_TESTS=1
- ctest --timeout 240 --output-on-failure -O ctest.log -E fwRenderOgreTest
- ctest --timeout 240 --output-on-failure -O ctest.log -E fwRenderOgreTest -j4
artifacts:
when: always
name: "%CI_JOB_NAME%-%CI_COMMIT_REF_SLUG%"
......@@ -176,7 +176,6 @@ build:release-windows:
- >
cmake %CI_PROJECT_DIR%
-G Ninja
-DUSE_CONAN=ON
-DCMAKE_INSTALL_PREFIX=%CI_PROJECT_DIR%/install
-DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTS=ON
......@@ -187,8 +186,7 @@ build:release-windows:
-s https://gitlab-ci-token:${CI_JOB_TOKEN}@git.ircad.fr/Sight/sight-data/-/archive/dev/sight-data-dev.zip
--output sight-data-dev.zip && unzip -qq sight-data-dev.zip
- set FWTEST_DATA_DIR=%CI_PROJECT_DIR%\build\sight-data-dev
- set FW_IGNORE_SLOW_TESTS=0
- ctest --timeout 120 --output-on-failure -O ctest.log -E fwRenderOgreTest
- ctest --timeout 120 --output-on-failure -O ctest.log -E fwRenderOgreTest -j4
artifacts:
when: always
name: "%CI_JOB_NAME%-%CI_COMMIT_REF_SLUG%"
......@@ -206,11 +204,11 @@ build:debug-macos:
- >
cmake $CI_PROJECT_DIR
-G Ninja
-DUSE_CONAN=ON
-DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/install
-DCMAKE_BUILD_TYPE=Debug
-DBUILD_TESTS=ON
-DBUILD_DOCUMENTATION=OFF
-DSPYLOG_LEVEL=trace
-DENABLE_PCH=OFF
- ninja
- ccache -s
......@@ -219,8 +217,7 @@ build:debug-macos:
-s https://gitlab-ci-token:${CI_JOB_TOKEN}@git.ircad.fr/Sight/sight-data/-/archive/dev/sight-data-dev.tar.gz |
tar xfz - > /dev/null
- export FWTEST_DATA_DIR=$CI_PROJECT_DIR/build/sight-data-dev
- export FW_IGNORE_SLOW_TESTS=1
- ctest --timeout 240 --output-on-failure -O ctest.log
- ctest --timeout 240 --output-on-failure -O ctest.log -j4
artifacts:
when: always
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
......@@ -237,7 +234,6 @@ build:release-macos:
- >
cmake $CI_PROJECT_DIR
-G Ninja
-DUSE_CONAN=ON
-DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/install
-DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTS=ON
......@@ -250,8 +246,7 @@ build:release-macos:
-s https://gitlab-ci-token:${CI_JOB_TOKEN}@git.ircad.fr/Sight/sight-data/-/archive/dev/sight-data-dev.tar.gz |
tar xfz - > /dev/null
- export FWTEST_DATA_DIR=$CI_PROJECT_DIR/build/sight-data-dev
- export FW_IGNORE_SLOW_TESTS=0
- ctest --timeout 120 --output-on-failure -O ctest.log
- ctest --timeout 120 --output-on-failure -O ctest.log -j4
artifacts:
when: always
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
......@@ -267,7 +262,6 @@ doxygen:
- >
cmake $CI_PROJECT_DIR
-G Ninja
-DUSE_CONAN=ON
-DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/install
-DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTS=OFF
......@@ -290,3 +284,57 @@ pages:
- public
only:
- dev
build:sdk-release-linux:
<<: *linux_job
stage: build
when : manual
dependencies: []
script:
- mkdir -p /home/sight/sdk/install /home/sight/sdk/build
- cd /home/sight/sdk/build
- ccache -s
- >
cmake $CI_PROJECT_DIR
-G Ninja
-DCMAKE_INSTALL_PREFIX=/home/sight/sdk/install
-DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTS=OFF
-DBUILD_DOCUMENTATION=OFF
-DENABLE_PCH=OFF
-DBUILD_SDK=ON
- find . -type f -iname '*.?pp' -exec touch -f -a -m -t 197001010000 {} \;
- ninja
- ninja install
- ninja package
- ccache -s
- export SDK_FILE_PATH=$(find /home/sight/sdk/build -maxdepth 1 -iname '*.tar.gz' -type f -print -quit)
- export SDK_FILE_NAME=$(basename -s .tar.gz ${SDK_FILE_PATH}).tar.gz
- curl -u${CONAN_USERNAME}:${CONAN_PASSWORD} -T ${SDK_FILE_PATH} "https://conan.ircad.fr/artifactory/data/sdk/${SDK_FILE_NAME}"
build:sdk-debug-linux:
<<: *linux_job
stage: build
when : manual
dependencies: []
script:
- mkdir -p /home/sight/sdk/install /home/sight/sdk/build
- cd /home/sight/sdk/build
- ccache -s
- >
cmake $CI_PROJECT_DIR
-G Ninja
-DCMAKE_INSTALL_PREFIX=/home/sight/sdk/install
-DCMAKE_BUILD_TYPE=Debug
-DBUILD_TESTS=OFF
-DBUILD_DOCUMENTATION=OFF
-DENABLE_PCH=OFF
-DBUILD_SDK=ON
- find . -type f -iname '*.?pp' -exec touch -f -a -m -t 197001010000 {} \;
- ninja
- ninja install
- ninja package
- ccache -s
- export SDK_FILE_PATH=$(find /home/sight/sdk/build -maxdepth 1 -iname '*.tar.gz' -type f -print -quit)
- export SDK_FILE_NAME=$(basename -s .tar.gz ${SDK_FILE_PATH}).tar.gz
- curl -u${CONAN_USERNAME}:${CONAN_PASSWORD} -T ${SDK_FILE_PATH} "https://conan.ircad.fr/artifactory/data/sdk/${SDK_FILE_NAME}"
......@@ -25,6 +25,8 @@
- Issues
- Fixes repo#number
- [ ] depends on repo#number
- Merge requests
- repo!number
- See also repo!number
- [ ] depends on repo!number
......@@ -37,6 +37,7 @@ set( REQUIREMENTS
uiImageQt
videoQt
ctrlCamp
uiMeasurement
# Generic Scene
fwRenderOgre
......
......@@ -287,13 +287,8 @@
<!-- ******************************* Connections ***************************************** -->
<connect>
<signal>defaultPickerAdp/pointAdded</signal>
<slot>pointListModifierSrv/addPoint</slot>
</connect>
<connect>
<signal>defaultPickerAdp/pointRemoved</signal>
<slot>pointListModifierSrv/removePoint</slot>
<signal>defaultPickerAdp/picked</signal>
<slot>pointListModifierSrv/pick</slot>
</connect>
<connect channel="${COMPOSITOR_CHANEL}">
......
......@@ -21,22 +21,40 @@
<view proportion="1" />
<view proportion="0" />
</layout>
<toolBar/>
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<toolBar sid="toolBarView" start="yes" />
<view sid="genericSceneSrv" start="yes" />
<view sid="2DNegatoSlicerSrv" start="yes" />
</registry>
</service>
<service uid="toolBarView" type="::gui::aspect::SDefaultToolBar">
<gui>
<layout>
<menuItem name="Add distance" icon="media-0.1/icons/distance.png" />
<menuItem name="Remove distance" icon="media-0.1/icons/RemoveDistance.png" />
<menuItem name="Hide distance" icon="media-0.1/icons/HideDistance.png" style="check" />
</layout>
</gui>
<registry>
<menuItem sid="addDistanceAct" start="yes" />
<menuItem sid="removeDistanceAct" start="yes" />
<menuItem sid="hideDistanceAct" start="yes" />
</registry>
</service>
<!-- ******************************* Begin Generic Scene ******************************* -->
<service uid="genericSceneSrv" type="::fwRenderOgre::SRender">
<scene>
<background topColor="#DDDDDD" bottomColor="#43958D" topScale="0.7" bottomScale="1.0" />
<background topColor="#000000" bottomColor="#000000" topScale="0.7" bottomScale="1.0" />
<layer id="default" depth="1" />
<adaptor uid="defaultInteractorAdp" />
<adaptor uid="2DNegatoAdp" />
<adaptor uid="multiDistancesAdp" />
</scene>
</service>
......@@ -47,9 +65,28 @@
<service uid="2DNegatoAdp" type="::visuOgreAdaptor::SNegato2D">
<inout key="image" uid="${image}" autoConnect="yes" />
<inout key="tf" uid="${volumeTF}" optional="yes" />
<config layer="default" sliceIndex="sagittal" />
</service>
<service uid="multiDistancesAdp" type="::visuOgreAdaptor::SImageMultiDistances" autoConnect="yes">
<inout key="image" uid="${image}" />
<config layer="default" />
</service>
<!-- ******************************* Actions ****************************************** -->
<service uid="addDistanceAct" type="::uiMeasurement::action::AddDistance">
<inout key="image" uid="${image}" />
</service>
<service uid="removeDistanceAct" type="::uiMeasurement::action::RemoveDistance">
<inout key="image" uid="${image}" />
</service>
<service uid="hideDistanceAct" type="::uiMeasurement::action::ShowDistance" autoConnect="yes" >
<inout key="image" uid="${image}" />
</service>
<!-- ************************************* Services ************************************ -->
<service uid="2DNegatoSlicerSrv" type="::uiImageQt::SliceIndexPositionEditor" autoConnect="yes">
......@@ -62,6 +99,6 @@
<start uid="mainView" />
<start uid="defaultInteractorAdp" />
<start uid="2DNegatoAdp" />
<start uid="multiDistancesAdp" />
</config>
</extension>
......@@ -18,7 +18,6 @@
<layout type="::fwGui::CardinalLayoutManager">
<view caption="Information" align="center" minWidth="200" />
<view caption="Preview" align="bottom" minHeight="200" />
<view caption="Activity creator" align="bottom" minHeight="400" visible="no" />
</layout>
<toolBar />
</gui>
......@@ -27,7 +26,6 @@
<toolBar sid="toolBar" start="yes" />
<view sid="selector" start="yes" />
<view wid="preview" />
<view sid="activityCreator" start="yes" />
</registry>
</service>
......@@ -36,12 +34,11 @@
<layout>
<menuItem name="Import" icon="media-0.1/icons/Import.svg" />
<menuItem name="Export" icon="media-0.1/icons/Export.svg" />
<menuItem name="Launch activity" icon="media-0.1/icons/Launch_activity.svg" />
<menuItem name="Create a new activity" icon="media-0.1/icons/CreateActivity.svg" />
<separator />
<menuItem name="2D visualization" icon="media-0.1/icons/icon-2D.png" />
<menuItem name="3D visualization" icon="media-0.1/icons/icon-3D.png" />
<menuItem name="Volume rendering" icon="media-0.1/icons/icon-VR.png" />
<menuItem name="Blend" icon="media-0.1/icons/icon-blend.png" />
<separator />
<menuItem name="DICOM PACS Reader" icon="media-0.1/icons/Pull.svg" />
<menuItem name="DICOM PACS Writer" icon="media-0.1/icons/Push.svg" />
......@@ -53,11 +50,10 @@
<registry>
<menuItem sid="action_import" start="yes" />
<menuItem sid="action_exportSeries" start="yes" />
<menuItem sid="action_newActivity" start="yes" />
<menuItem sid="action_createActivity" start="yes" />
<menuItem sid="action_2DVisualization" start="yes" />
<menuItem sid="action_3DVisualization" start="yes" />
<menuItem sid="action_volumeRendering" start="yes" />
<menuItem sid="action_blend" start="yes" />
<menuItem sid="action_dicomPacsReader" start="yes" />
<menuItem sid="action_dicomPacsWriter" start="yes" />
<menuItem sid="action_dicomFiltering" start="yes" />
......@@ -75,16 +71,6 @@
<inout key="selection" uid="selections" />
</service>
<service uid="activityCreator" type="::uiMedDataQt::editor::SActivityWizard">
<inout key="seriesDB" uid="${SERIESDB}" />
<ioSelectorConfig>SDBReaderIOSelectorConfig</ioSelectorConfig>
<sdbIoSelectorConfig>FullSDBReaderIOSelectorConfig</sdbIoSelectorConfig>
<icons>
<icon type="::fwMedData::ImageSeries" icon="media-0.1/icons/ImageSeries.svg" />
<icon type="::fwMedData::ModelSeries" icon="media-0.1/icons/ModelSeries.svg" />
</icons>
</service>
<service uid="seriesViewer" type="::uiMedDataQt::SSeriesViewer" autoConnect="yes">
<in key="series" uid="selections" />
<parentView wid="preview" />
......@@ -93,17 +79,17 @@
<extract path="@image" pattern="imageID" />
</config>
<config id="3DSimpleConfig2" type="::fwMedData::ModelSeries" />
<config id="ActivityCreatorConfig" type="::fwMedData::ActivitySeries">
<parameter replace="SERIESDB" by="${SERIESDB}" />
</config>
</configs>
</service>
<service uid="action_newActivity" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
<parameters>
<parameter replace="SERIESDB" by="${SERIESDB}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
<parameter replace="APP_NAME" by="VRRender" />
<parameter replace="PROGRESS_CHANNEL" by="${PROGRESS_CHANNEL}" />
</parameters>
<filter>
<mode>exclude</mode>
......@@ -157,7 +143,21 @@
</config>
</service>
<service uid="action_dicomPacsReader" type="::activities::action::SActivityLauncher">
<service uid="action_blend" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
<parameters>
<parameter replace="SERIESDB" by="${SERIESDB}" />
<parameter replace="ICON_PATH" by="${ICON_PATH}" />
</parameters>
<filter>
<mode>include</mode>
<id>Blend</id>
</filter>
</config>
</service>
<service uid="action_dicomPacsReader" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
<parameters>
......@@ -172,7 +172,7 @@
</config>
</service>
<service uid="action_dicomPacsWriter" type="::activities::action::SActivityLauncher">
<service uid="action_dicomPacsWriter" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
<parameters>
......@@ -187,7 +187,7 @@
</config>
</service>
<service uid="action_dicomFiltering" type="::activities::action::SActivityLauncher">
<service uid="action_dicomFiltering" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
<parameters>
......@@ -202,7 +202,7 @@
</config>
</service>
<service uid="action_dicomWebReader" type="::activities::action::SActivityLauncher">
<service uid="action_dicomWebReader" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
<parameters>
......@@ -217,7 +217,7 @@
</config>
</service>
<service uid="action_dicomWebWriter" type="::activities::action::SActivityLauncher">
<service uid="action_dicomWebWriter" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
<parameters>
......@@ -232,16 +232,6 @@
</config>
</service>
<service uid="action_createActivity" type="::activities::action::SCreateActivity">
<in key="series" uid="selections" />
<filter>
<mode>exclude</mode>
<id>ImageSeriesExport</id>
<id>ModelSeriesExport</id>
<id>SDBVRRender</id>
</filter>
</service>
<service uid="action_exportSeries" type="::activities::action::SActivityLauncher" autoConnect="yes">
<in key="series" uid="selections" />
<config>
......@@ -262,24 +252,6 @@
<slot>action_newActivity/launchSeries</slot>
</connect>
<connect channel="hide_activity_creator_channel">
<signal>activityCreator/activityCreated</signal>
<signal>activityCreator/activityUpdated</signal>
<slot>activityCreator/hide</slot>
</connect>
<connect channel="create_activity_channel">
<signal>action_createActivity/activityIDSelected</signal>
<slot>activityCreator/show</slot>
<slot>activityCreator/createActivity</slot>
</connect>
<connect channel="update_activity_channel">
<signal>action_createActivity/activitySelected</signal>
<slot>activityCreator/show</slot>
<slot>activityCreator/updateActivity</slot>
</connect>
<connect channel="${PROGRESS_CHANNEL}">
<signal>action_import/jobCreated</signal>
</connect>
......@@ -289,6 +261,7 @@
<signal>action_2DVisualization/activityLaunched</signal>
<signal>action_3DVisualization/activityLaunched</signal>
<signal>action_volumeRendering/activityLaunched</signal>
<signal>action_blend/activityLaunched</signal>
<signal>action_dicomPacsReader/activityLaunched</signal>
<signal>action_dicomPacsWriter/activityLaunched</signal>
<signal>action_dicomFiltering/activityLaunched</signal>
......@@ -296,13 +269,9 @@
<signal>action_dicomWebWriter/activityLaunched</signal>
</connect>
<connect>
<signal>activityCreator/canceled</signal>
<slot>activityCreator/hide</slot>
</connect>
<start uid="mainview" />
<start uid="seriesViewer" />
<start uid="action_newActivity" />
</config>
</extension>
......@@ -35,6 +35,7 @@ set( REQUIREMENTS
videoCharucoCalibration
videoOpenCV
videoOpenni
videoRealSense
videoQt
videoTools
......
<extension implements="::fwServices::registry::AppConfig">
<id>calCameraView</id>
<parameters>
<param name="WID_PARENT" />
<param name="camera" />
<param name="timeLine" />
</parameters>
<config>
<!-- ******************************* Objects declaration ****************************** -->
<object uid="${timeLine}" type="::arData::FrameTL" src="ref" />
<object uid="${camera}" type="::arData::Camera" src="ref" />
<object uid="frame" type="::fwData::Image" />
<!-- ******************************* UI declaration *********************************** -->
<service uid="cameraView" type="::gui::view::SDefaultView">
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="vertical" />
<view proportion="0" />
<view proportion="0" />
</layout>
<toolBar/>
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<toolBar sid="toolBar" start="yes" />
<view sid="camera" start="yes" />
<view sid="VideoSlider" start="yes" />
</registry>
</service>
<service uid="toolBar" type="::gui::aspect::SDefaultToolBar">
<gui>
<layout>
<editor/>
<menuItem name="Start camera" icon="arMedia-0.1/icons/start-cam.svg" />
<menuItem name="Stop camera" icon="arMedia-0.1/icons/stop-cam.svg" />
<menuItem name="Pause video" icon="arMedia-0.1/icons/pause-cam.svg" />
<menuItem name="Loop video" icon="arMedia-0.1/icons/loop-cam.svg" style="check" />
</layout>
</gui>
<registry>
<editor sid="CameraSelector" start="yes" />
<menuItem sid="ActionStartCamera" start="yes" />
<menuItem sid="ActionStopCamera" start="yes" />
<menuItem sid="PauseVideo" start="yes" />
<menuItem sid="LoopVideo" start="yes" />
</registry>
</service>
<!-- ******************************* Actions ****************************************** -->
<service uid="ActionStartCamera" type="::gui::action::SSlotCaller">
<slots>
<slot>VideoGrabber/startCamera</slot>
</slots>
</service>
<service uid="ActionStopCamera" type="::gui::action::SSlotCaller">
<slots>
<slot>VideoGrabber/stopCamera</slot>
</slots>
</service>
<service uid="PauseVideo" type="::gui::action::SSlotCaller">
<slots>
<slot>VideoGrabber/pauseCamera</slot>
</slots>
</service>
<service uid="LoopVideo" type="::gui::action::SSlotCaller">
<slots>
<slot>VideoGrabber/loopVideo</slot>
</slots>
</service>
<service uid="VideoSlider" type="::videoQt::editor::SSlider" />
<!-- ******************************* Services ***************************************** -->
<!-- *************************** Begin generic scene *************************** -->
<service uid="camera" type="::fwRenderVTK::SRender" >
<scene renderMode="timer">
<renderer id="default" background="0.0" />
<adaptor uid="videoAdapter" />
<adaptor uid="interactorStyle" />
</scene>
</service>
<service uid="videoAdapter" type="::visuVTKARAdaptor::SVideo" autoConnect="yes">
<in key="frame" uid="frame" />
<config renderer="default" />
</service>
<service uid="interactorStyle" type="::visuVTKAdaptor::SInteractorStyle">
<config renderer="default" style="InteractorStyle2DForNegato" />
</service>
<!-- *************************** End generic scene *************************** -->
<service uid="VideoGrabber" type="::videoTools::SGrabberProxy">
<in key="camera" uid="${camera}" />
<inout key="frameTL" uid="${timeLine}" />
</service>
<service uid="FrameUpdater" type="::videoTools::SFrameUpdater">
<in key="frameTL" uid="${timeLine}" autoConnect="yes" />
<inout key="frame" uid="frame" />
</service>
<service uid="CameraSelector" type="::videoQt::editor::SCamera">
<inout key="camera" uid="${camera}" />
<videoSupport>yes</videoSupport>
</service>
<!-- ******************************* Connections ************************************** -->
<connect>
<signal>${camera}/idModified</signal>
<slot>VideoGrabber/stopCamera</slot>
</connect>
<connect>
<signal>VideoSlider/positionChanged</signal>
<slot>VideoGrabber/setPositionVideo</slot>
</connect>
<connect>
<signal>VideoGrabber/positionModified</signal>
<slot>VideoSlider/setPositionSlider</slot>
</connect>
<connect>
<signal>VideoGrabber/durationModified</signal>
<slot>VideoSlider/setDurationSlider</slot>
</connect>
<connect>
<signal>CameraSelector/configuredCameras</signal>
<slot>VideoGrabber/reconfigure</slot>
</connect>
<start uid="cameraView" />
<start uid="VideoGrabber" />
<start uid="FrameUpdater" />
<!-- VTK scene 'camera' -->
<start uid="videoAdapter" />
<start uid="interactorStyle" />
</config>
</extension>
......@@ -10,49 +10,101 @@
<!-- ******************************* Objects declaration ****************************** -->
<object uid="${calibrationInfo}" type="::arData::CalibrationInfo" src="ref" />
<object uid="${camera}" type="::arData::Camera" src="ref" />
<object uid="FrameTL" type="::arData::FrameTL" />
<object uid="frameTL" type="::arData::FrameTL" />
<object uid="detectionFrame" type="::fwData::Image" />
<object uid="videoFrame" type="::fwData::Image" />
<!-- ******************************* UI declaration *********************************** -->
<service uid="intrinsicCameraView" type="::gui::view::SDefaultView">
<gui>
<layout type="::fwGui::CardinalLayoutManager">
<view align="center" />
<view align="bottom" caption="Calibration" />
<view align="bottom" caption="Information" />
<layout type="::fwGui::LineLayoutManager">
<orientation value="horizontal" />
<view proportion="2" />
<view proportion="7" />
</layout>
</gui>
<registry>
<parent wid="${WID_PARENT}" />
<view wid="cameraView" />
<view sid="CalibrationInfoView" start="yes" />
<view sid="cameraInfoView" start="yes" />
<view sid="leftPanelView" start="yes" />
<view sid="cameraView" start="yes" />
</registry>
</service>
<service uid="CalibrationInfoView" type="::gui::view::SDefaultView">
<service uid="leftPanelView" type="::gui::view::SDefaultView" >
<gui>
<layout type="::fwGui::CardinalLayoutManager">
<view align="center" />
<layout type="::fwGui::LineLayoutManager">
<orientation value="vertical" />
<view proportion="1" />
<view proportion="0" />
</layout>
<toolBar align="left">
</gui>
<registry>
<view sid="toolboxView" start="yes" />
<view sid="errorLabel" start="yes" />
</registry>
</service>
<service uid="cameraView" type="::gui::view::SDefaultView" >
<gui>
<layout type="::fwGui::LineLayoutManager">
<orientation value="vertical" />
<view proportion="1" />
<view proportion="0" />
</layout>
</gui>
<registry>
<view sid="cameraScene" start="yes" />
<view sid="videoSlider" start="yes" />
</registry>
</service>
<service uid="toolboxView" type="::gui::view::SDefaultView" >
<gui>
<toolBar/>
<layout type="::fwGui::ToolboxLayoutManager">
<orientation value="vertical" />
<view proportion="3" caption="Calibration input" expanded="true" />
<view proportion="1" caption="Calibration result" expanded="true" />
</layout>
</gui>
<registry>
<toolBar sid="videoToolbar" start="yes" />
<view sid="calibrationDataView" start="yes" />
<view sid="cameraInfo" start="yes" />
</registry>
</service>
<service uid="calibrationDataView" type="::gui::view::SDefaultView">
<gui>
<toolBar>
<toolBitmapSize height="24" width="24" />
</toolBar>
<layout type="::fwGui::LineLayoutManager">
<orientation value="vertical" />
<view proportion="1" />
</layout>
</gui>
<registry>
<toolBar sid="intrinsicCamera" start="yes" />
<view sid="CalibrationInfoEditor" start="yes" />
<view sid="calibrationInfoEditor" start="yes" />
</registry>
</service>
<service uid="cameraInfoView" type="::gui::view::SDefaultView">
<service uid="videoToolbar" type="::gui::aspect::SDefaultToolBar">
<gui>
<layout type="::fwGui::CardinalLayoutManager">
<view align="center" />
<view align="bottom" />
<layout>
<editor/>
<menuItem name="Start camera" icon="arMedia-0.1/icons/start-cam.svg" />
<menuItem name="Stop camera" icon="arMedia-0.1/icons/stop-cam.svg" />
<menuItem name="Pause video" icon="arMedia-0.1/icons/pause-cam.svg" style="check" />
<menuItem name="Loop video" icon="arMedia-0.1/icons/loop-cam.svg" style="check" />
</layout>
</gui>
<registry>
<view sid="cameraInfo" start="yes" />
<view sid="errorLabel" start="yes" />
<editor sid="cameraSelector" start="yes" />
<menuItem sid="actionStartCamera" start="yes" />
<menuItem sid="actionStopCamera" start="yes" />
<menuItem sid="actionPauseVideo" start="yes" />
<menuItem sid="actionLoopVideo" start="yes" />
</registry>
</service>
......@@ -60,72 +112,106 @@
<gui>
<layout>
<editor/>
<menuItem name="Add" icon="media-0.1/icons/Import.svg" />
<menuItem name="Add" icon="media-0.1/icons/Import.svg" shortcut="A" />
<menuItem name="Remove" icon="arMedia-0.1/icons/remove.svg" />
<menuItem name="Reset" icon="arMedia-0.1/icons/reset.svg" />
<menuItem name="Calibrate with openCV" icon="arMedia-0.1/icons/CheckButton.svg" />
<menuItem name="Calibrate with openCV" icon="arMedia-0.1/icons/CheckButton.svg" shortcut="Enter"/>
<menuItem name="Draw" icon="media-0.1/icons/Preview.svg" />
<menuItem name="Edit" icon="arMedia-0.1/icons/configuration.svg" />
<menuItem name="Save calibration images" icon="arMedia-0.1/icons/save.svg" />
</layout>
</gui>
<registry>
<editor sid="Status" start="yes" />
<menuItem sid="ActionAdd" start="yes" />
<menuItem sid="ActionRemove" start="yes" />
<menuItem sid="ActionReset" start="yes" />
<menuItem sid="ActionGoOpenCV" start="yes" />
<menuItem sid="ActionDisplayImage" start="yes" />
<menuItem sid="ActionEdition" start="yes" />
<editor sid="detectionStatus" start="yes" />
<menuItem sid="actionAdd" start="yes" />
<menuItem sid="actionRemove" start="yes" />
<menuItem sid="actionReset" start="yes" />
<menuItem sid="actionGoOpenCV" start="yes" />
<menuItem sid="actionDisplayImage" start="yes" />
<menuItem sid="actionEdition" start="yes" />
<menuItem sid="actionSaveInputs" start="yes" />
</registry>
</service>
<!-- ******************************* Actions ****************************************** -->
<service uid="ActionAdd" type="::gui::action::SSlotCaller">
<!-- ******************************* actions ****************************************** -->
<service uid="actionStartCamera" type="::gui::action::SSlotCaller">
<slots>
<slot>videoGrabber/startCamera</slot>
<slot>actionStartCamera/hide</slot>
<slot>actionStopCamera/show</slot>
</slots>
</service>
<service uid="actionStopCamera" type="::gui::action::SSlotCaller">
<state visible="false" />
<slots>
<slot>videoGrabber/stopCamera</slot>
<slot>actionStopCamera/hide</slot>
<slot>actionStartCamera/show</slot>
</slots>
</service>
<service uid="actionPauseVideo" type="::gui::action::SSlotCaller">
<slots>
<slot>videoGrabber/pauseCamera</slot>
</slots>
</service>
<service uid="actionLoopVideo" type="::gui::action::SSlotCaller">
<slots>
<slot>videoGrabber/loopVideo</slot>
</slots>
</service>
<service uid="actionAdd" type="::gui::action::SSlotCaller">
<slots>
<slot>ChessboardDetector/detectPoints</slot>
<slot>chessboardDetector/recordPoints</slot>
</slots>
</service>
<service uid="ActionReset" type="::gui::action::SSlotCaller">
<service uid="actionReset" type="::gui::action::SSlotCaller">
<slots>
<slot>CalibrationInfoEditor/reset</slot>
<slot>calibrationInfoEditor/reset</slot>
</slots>
</service>
<service uid="ActionRemove" type="::gui::action::SSlotCaller">
<service uid="actionRemove" type="::gui::action::SSlotCaller">
<slots>
<slot>CalibrationInfoEditor/remove</slot>
<slot>calibrationInfoEditor/remove</slot>
</slots>
</service>
<service uid="ActionEdition" type="::gui::action::SSlotCaller">
<service uid="actionEdition" type="::gui::action::SSlotCaller">
<slots>
<slot>intrinsicEdition/update</slot>
</slots>
</service>
<service uid="ActionGoOpenCV" type="::gui::action::SSlotCaller">
<service uid="actionGoOpenCV" type="::gui::action::SSlotCaller">
<slots>
<slot>OpenCVIntrinsicCal/update</slot>
<slot>Status/changeToOrange</slot>
<slot>intrinsicCalibration/update</slot>
<slot>detectionStatus/changeToOrange</slot>
</slots>
</service>
<service uid="ActionDisplayImage" type="::gui::action::SSlotCaller">
<service uid="actionDisplayImage" type="::gui::action::SSlotCaller">
<slots>
<slot>CalibrationInfoEditor/getSelection</slot>
<slot>calibrationInfoEditor/getSelection</slot>
</slots>
</service>
<!-- ******************************* Services ***************************************** -->
<service uid="cameraLauncher" type="::fwServices::SConfigController">
<appConfig id="calCameraView" />
<inout key="camera" uid="${camera}" />
<inout key="timeLine" uid="FrameTL" />
<parameter replace="WID_PARENT" uid="cameraView" />
<service uid="actionSaveInputs" type="::gui::action::SSlotCaller">
<sync>true</sync>
<slots>
<slot>calibrationDataWriter/configureWithIHM</slot>
<slot>calibrationDataWriter/update</slot>
</slots>
</service>
<service uid="Status" type="::uiTools::editor::SStatus">
<service uid="videoSlider" type="::videoQt::editor::SSlider" />
<!-- ******************************* Services ***************************************** -->
<service uid="detectionStatus" type="::uiTools::editor::SStatus">
<green>Point are visible</green>
<orange>Calibration in progress</orange>
<red>Points are NOT visible</red>
......@@ -135,9 +221,14 @@
<label>Reprojection Error (RMSE)</label>
</service>
<service uid="ChessboardDetector" type="::videoCalibration::SChessBoardDetector" worker="intr_chess_checker">
<in group="timeline">
<key uid="FrameTL" />
<service uid="detectionFrameUpdater" type="::videoTools::SFrameUpdater" worker="intr_chess_checker">
<in key="frameTL" uid="frameTL" autoConnect="yes" />
<inout key="frame" uid="detectionFrame" />
</service>
<service uid="chessboardDetector" type="::videoCalibration::SChessBoardDetector" worker="intr_chess_checker">
<in group="image" autoConnect="yes" >
<key uid="detectionFrame" />
</in>
<inout group="calInfo">
<key uid="${calibrationInfo}" />
......@@ -145,15 +236,15 @@
<board width="CHESSBOARD_WIDTH" height="CHESSBOARD_HEIGHT" />
</service>
<service uid="DisplayCalibrationInfo" type="::uiCalibration::SDisplayCalibrationInfo">
<service uid="displayCalibrationInfo" type="::uiCalibration::SDisplayCalibrationInfo">
<in key="calInfo1" uid="${calibrationInfo}" />
</service>
<service uid="CalibrationInfoEditor" type="::uiCalibration::SCalibrationInfoEditor" autoConnect="yes">
<service uid="calibrationInfoEditor" type="::uiCalibration::SCalibrationInfoEditor" autoConnect="yes">
<inout key="calInfo1" uid="${calibrationInfo}" />
</service>
<service uid="OpenCVIntrinsicCal" type="::videoCalibration::SOpenCVIntrinsic" worker="intr_chess_checker">
<service uid="intrinsicCalibration" type="::videoCalibration::SOpenCVIntrinsic" worker="intr_chess_checker">
<in key="calibrationInfo" uid="${calibrationInfo}" />
<inout key="camera" uid="${camera}" />
<board width="CHESSBOARD_WIDTH" height="CHESSBOARD_HEIGHT" squareSize="CHESSBOARD_SQUARE_SIZE" />
......@@ -167,49 +258,113 @@
<inout key="camera" uid="${camera}" />
</service>
<service uid="calibrationDataWriter" type="::ioCalibration::SCalibrationImagesWriter">
<in key="data" uid="${calibrationInfo}" />
<format>.tiff</format>
</service>
<service uid="videoGrabber" type="::videoTools::SGrabberProxy">
<in key="camera" uid="${camera}" />
<inout key="frameTL" uid="frameTL" />
</service>
<service uid="videoFrameUpdater" type="::videoTools::SFrameUpdater">
<in key="frameTL" uid="frameTL" autoConnect="yes" />
<inout key="frame" uid="videoFrame" />
</service>
<service uid="cameraSelector" type="::videoQt::editor::SCamera">
<inout key="camera" uid="${camera}" />
<videoSupport>yes</videoSupport>
</service>
<!-- *************************** Begin generic scene *************************** -->
<service uid="cameraScene" type="::fwRenderVTK::SRender" >
<scene renderMode="timer">
<renderer id="default" background="0.0" />
<adaptor uid="videoAdaptor" />
<adaptor uid="interactorStyle" />
</scene>
</service>
<service uid="videoAdaptor" type="::visuVTKARAdaptor::SVideo" autoConnect="yes">
<in key="frame" uid="videoFrame" />
<config renderer="default" />
</service>
<service uid="interactorStyle" type="::visuVTKAdaptor::SInteractorStyle">
<config renderer="default" style="InteractorStyle2DForNegato" />
</service>
<!-- *************************** End generic scene *************************** -->
<!-- ******************************* Connections ************************************** -->
<connect>
<signal>FrameTL/objectPushed</signal>
<slot>ChessboardDetector/checkPoints</slot>
<signal>${camera}/idModified</signal>
<slot>videoGrabber/stopCamera</slot>
</connect>
<connect>
<signal>ChessboardDetector/chessboardDetected</signal>
<slot>Status/changeToGreen</slot>
<signal>videoSlider/positionChanged</signal>
<slot>videoGrabber/setPositionVideo</slot>
</connect>
<connect>
<signal>ChessboardDetector/chessboardNotDetected</signal>
<slot>Status/changeToRed</slot>
<signal>videoGrabber/positionModified</signal>
<slot>videoSlider/setPositionSlider</slot>
</connect>
<connect>
<signal>videoGrabber/durationModified</signal>
<slot>videoSlider/setDurationSlider</slot>
</connect>
<connect>
<signal>cameraSelector/configuredCameras</signal>
<slot>videoGrabber/reconfigure</slot>
</connect>
<connect>
<signal>chessboardDetector/chessboardDetected</signal>
<slot>detectionStatus/toggleGreenRed</slot>
</connect>
<connect>
<signal>${calibrationInfo}/getRecord</signal>
<slot>DisplayCalibrationInfo/displayImage</slot>
<slot>displayCalibrationInfo/displayImage</slot>
</connect>
<connect>
<signal>${calibrationInfo}/addedRecord</signal>
<signal>${calibrationInfo}/removedRecord</signal>
<signal>${calibrationInfo}/resetRecord</signal>
<slot>CalibrationInfoEditor/update</slot>
<slot>calibrationInfoEditor/update</slot>
</connect>
<connect>
<signal>OpenCVIntrinsicCal/errorComputed</signal>
<signal>intrinsicCalibration/errorComputed</signal>
<slot>errorLabel/setDoubleParameter</slot>
</connect>
<connect channel="${preferencesModifiedProxy}">
<slot>OpenCVIntrinsicCal/updateChessboardSize</slot>
<slot>ChessboardDetector/updateChessboardSize</slot>
<slot>intrinsicCalibration/updateChessboardSize</slot>
<slot>chessboardDetector/updateChessboardSize</slot>
</connect>
<start uid="intrinsicCameraView" />
<start uid="OpenCVIntrinsicCal" />
<start uid="ChessboardDetector" />
<start uid="DisplayCalibrationInfo" />
<start uid="cameraLauncher" />
<start uid="intrinsicCalibration" />
<start uid="chessboardDetector" />
<start uid="displayCalibrationInfo" />
<start uid="intrinsicEdition" />
<start uid="calibrationDataWriter" />
<start uid="videoGrabber" />
<start uid="videoFrameUpdater" />
<start uid="detectionFrameUpdater" />
<!-- VTK scene 'camera' -->
<start uid="videoAdaptor" />
<start uid="interactorStyle" />
</config>
</extension>
......@@ -6,7 +6,6 @@
<xi:include href="configurations/calibration.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/calIntrinsicView.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/calExtrinsicView.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/calCameraView.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/displayImageConfig.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/displayTwoImagesConfig.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
<xi:include href="configurations/calibrationEdition.xml" xmlns:xi="http://www.w3.org/2003/XInclude" />
......@@ -85,5 +84,15 @@
</appConfig>
</extension>
<!-- Service config used grab infrared frames from RealSense camera without the IR emitter -->
<extension implements="::fwServices::registry::ServiceConfig">
<id>InfraredRealsenseGrabberConfig</id>
<service>::videoRealSense::SScan</service>
<desc>Infrared grabber without IR emitter </desc>
<config>
<config fps="30" colorW="1280" colorH="720" depthW="1280" depthH="720" switchToIR="true" IREmitter="false" />
</config>
</extension>
</plugin>
fwLoadProperties()
target_compile_definitions(${FWPROJECT_NAME} PRIVATE "-DCAMP_COMPILATION")
set( NAME filterVRRender )
set( VERSION 0.1 )
set( TYPE BUNDLE )
set( DEPENDENCIES
fwCore
fwAtoms
fwAtomsFilter
fwAtomsPatch
fwRuntime
)
set( REQUIREMENTS )
set( USE_PCH_FROM_TARGET fwAtomConversion )
/************************************************************************
*
* Copyright (C) 2009-2015 IRCAD France
* Copyright (C) 2012-2015 IHU Strasbourg
*
* This file is part of Sight.
*
* Sight is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sight. If not, see <https://www.gnu.org/licenses/>.
*
***********************************************************************/
#ifndef __FILTERVRRENDER_MEDICALDATAV1_HPP__
#define __FILTERVRRENDER_MEDICALDATAV1_HPP__
#include <fwAtomsFilter/IFilter.hpp>
#include <fwCore/macros.hpp>
#include "filterVRRender/config.hpp"
namespace fwAtoms
{
class Object;
}
namespace filterVRRender
{
/**
* @class MedicalDataV1
* @brief Filter associated to context "MedicalData" version "V1" in VR-Render.
*
* This filter clears "processingDB" and "planningDB" keys from a "MedicalWorkspace" composite.
*/
class FILTERVRRENDER_CLASS_API MedicalDataV1 : public ::fwAtomsFilter::IFilter
{
public:
/// Constructor.
MedicalDataV1(::fwAtomsFilter::IFilter::Key key);
/// Destructor.
~MedicalDataV1();
/// Apply filter onto given atom object.
FILTERVRRENDER_API virtual void apply(const SPTR(::fwAtoms::Object)& atom);
};
} // namespace filterVRRender
#endif // __FILTERVRRENDER_MEDICALDATAV1_HPP__
/************************************************************************
*
* Copyright (C) 2009-2015 IRCAD France
* Copyright (C) 2012-2015 IHU Strasbourg
*
* This file is part of Sight.
*
* Sight is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sight. If not, see <https://www.gnu.org/licenses/>.
*
***********************************************************************/
#ifndef __FILTERVRRENDER_MEDICALDATAV2_HPP__
#define __FILTERVRRENDER_MEDICALDATAV2_HPP__
#include <fwAtomsFilter/IFilter.hpp>
#include <fwCore/macros.hpp>
#include "filterVRRender/config.hpp"
namespace fwAtoms
{
class Object;
}
namespace filterVRRender
{
/**
* @class MedicalDataV2
* @brief Filter associated to context "MedicalData" version "V2" in VR-Render.
*
*/
class FILTERVRRENDER_CLASS_API MedicalDataV2 : public ::fwAtomsFilter::IFilter
{
public:
/// Constructor.
MedicalDataV2(::fwAtomsFilter::IFilter::Key key);
/// Destructor.
~MedicalDataV2();
/// Apply filter onto given atom object.
FILTERVRRENDER_API virtual void apply(const SPTR(::fwAtoms::Object)& atom);
};
} // namespace filterVRRender
#endif // __FILTERVRRENDER_MEDICALDATAV2_HPP__
/************************************************************************
*
* Copyright (C) 2009-2015 IRCAD France
* Copyright (C) 2012-2015 IHU Strasbourg
*
* This file is part of Sight.
*
* Sight is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sight. If not, see <https://www.gnu.org/licenses/>.
*
***********************************************************************/
#ifndef __FILTERVRRENDER_PLUGIN_HPP__
#define __FILTERVRRENDER_PLUGIN_HPP__
#include <fwRuntime/Plugin.hpp>
namespace filterVRRender
{
class Plugin : public ::fwRuntime::Plugin
{
public:
//! @brief Destructor.
~Plugin() noexcept;
/**
* @brief Start method.
*
* This method is used by runtime in order to initialize the bundle.
*
* @exception ::fwRuntime::RuntimeException
*/
void start();
/**
* @brief Stop method.
*
* This method is used by runtime in order to close the bundle.
*/
void stop() noexcept;
};
} // namespace filterVRRender
#endif //__FILTERVRRENDER_PLUGIN_HPP__
<plugin id="filterVRRender" class="::filterVRRender::Plugin" version="@PROJECT_VERSION@" >
<library name="filterVRRender" />
</plugin>
/************************************************************************
*
* Copyright (C) 2009-2019 IRCAD France
* Copyright (C) 2012-2019 IHU Strasbourg
*
* This file is part of Sight.
*
* Sight is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sight. If not, see <https://www.gnu.org/licenses/>.
*
***********************************************************************/
#include "filterVRRender/MedicalDataV2.hpp"
#include <fwAtoms/Base.hpp>
#include <fwAtoms/Object.hpp>
#include <fwAtoms/Object.hxx>
#include <fwAtoms/Sequence.hpp>
#include <fwAtomsFilter/functions.hpp>
#include <fwAtomsFilter/registry/macros.hpp>
#include <fwAtomsPatch/helper/functions.hpp>
#include <fwCore/spyLog.hpp>
namespace filterVRRender
{
fwAtomsFilterRegisterMacro( ::filterVRRender::MedicalDataV2, "VRRenderMedicalDataV2" );
MedicalDataV2::MedicalDataV2(::fwAtomsFilter::IFilter::Key key)
{
FW_DEPRECATED("filterVRRender", "filterUnknownSeries", "19.0");
FW_DEPRECATED("MedicalDataV2", "FilterUnknownActivities", "19.0");
FW_DEPRECATED("VRRenderMedicalDataV2", "FilterUnknownActivities", "19.0");
}
MedicalDataV2::~MedicalDataV2()
{
}
//------------------------------------------------------------------------------
void MedicalDataV2::apply(const SPTR(::fwAtoms::Object)& atom)
{
SLM_TRACE_FUNC();
SLM_ASSERT("Unable to filter atom : invalid object", atom);
const std::string expName = "::fwMedData::SeriesDB"; // expected classname
const std::string& classname = ::fwAtomsPatch::helper::getClassname(atom);
FW_RAISE_IF("Unable to filter atom of class '" << classname << "'. Expected class is '" + expName + "'",
classname != expName);
::fwAtoms::Sequence::sptr series = atom->getAttribute< ::fwAtoms::Sequence >("values");
SLM_ASSERT("Failed to retrieve 'values' attribute as ::fwAtoms::Sequence", series);
::fwAtoms::Sequence::sptr knownSeries = ::fwAtoms::Sequence::New();
for(::fwAtoms::Base::sptr serie : series->getValue())
{
::fwAtoms::Object::sptr obj = ::fwAtoms::Object::dynamicCast(serie);
SLM_ASSERT("Failed to cast sequence element as ::fwAtoms::Object", obj);
if(::fwAtomsFilter::isSeriesKnown(obj))
{
knownSeries->push_back(serie);
}
}
series->clear();
for(::fwAtoms::Base::sptr serie : knownSeries->getValue())
{
series->push_back(serie);
}
}
} // namespace filterVRRender
set( NAME filterVRRenderTest )
set( VERSION )
set( TYPE TEST )
set( DEPENDENCIES
fwAtoms
fwAtomsFilter
fwAtomsPatch
fwTools
fwCore
fwRuntime
fwTest
)
set( REQUIREMENTS filterVRRender dataReg servicesReg)
<profile name="MedicalDataV1Test" version="0.1">
<activate id="dataReg" version="0.1" />
<activate id="servicesReg" version="0.1" />
<activate id="filterVRRender" version="0.1" />
<start id="filterVRRender" />
</profile>