changeset 1595:621e4e11783d

doxygen target, more consistent ORTHANC_STONE_ROOT
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 26 Oct 2020 17:42:13 +0100
parents 74ed691f9c64
children 4fb8fdf03314
files Applications/Platforms/Sdl/OrthancStoneSdlConfiguration.cmake Applications/Platforms/WebAssembly/OrthancStoneWebAssemblyConfiguration.cmake Applications/Platforms/WebAssembly/SharedLibrary/CMakeLists.txt Applications/Samples/Sdl/CMakeLists.txt OrthancStone/Resources/CMake/OrthancStoneConfiguration.cmake OrthancStone/Resources/CMake/OrthancStoneParameters.cmake OrthancStone/Resources/OrthancStone.doxygen UnitTestsSources/CMakeLists.txt
diffstat 8 files changed, 307 insertions(+), 287 deletions(-) [+]
line wrap: on
line diff
--- a/Applications/Platforms/Sdl/OrthancStoneSdlConfiguration.cmake	Mon Oct 26 15:52:11 2020 +0100
+++ b/Applications/Platforms/Sdl/OrthancStoneSdlConfiguration.cmake	Mon Oct 26 17:42:13 2020 +0100
@@ -22,7 +22,7 @@
 ## Sanity check of the configuration
 #####################################################################
 
-include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+include(${ORTHANC_STONE_ROOT}/../Resources/CMake/OrthancStoneConfiguration.cmake)
 
 if (ORTHANC_SANDBOXED)
   message(FATAL_ERROR "Cannot enable SDL in sandboxed environments")
--- a/Applications/Platforms/WebAssembly/OrthancStoneWebAssemblyConfiguration.cmake	Mon Oct 26 15:52:11 2020 +0100
+++ b/Applications/Platforms/WebAssembly/OrthancStoneWebAssemblyConfiguration.cmake	Mon Oct 26 17:42:13 2020 +0100
@@ -23,7 +23,7 @@
 #####################################################################
 
 set(ENABLE_WEB_CLIENT OFF)
-include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+include(${ORTHANC_STONE_ROOT}/../Resources/CMake/OrthancStoneConfiguration.cmake)
 
 if (NOT ORTHANC_SANDBOXED)
   message(FATAL_ERROR "WebAssembly target must me configured as sandboxed")
--- a/Applications/Platforms/WebAssembly/SharedLibrary/CMakeLists.txt	Mon Oct 26 15:52:11 2020 +0100
+++ b/Applications/Platforms/WebAssembly/SharedLibrary/CMakeLists.txt	Mon Oct 26 17:42:13 2020 +0100
@@ -91,7 +91,7 @@
   )
 
 configure_file(
-  ${ORTHANC_STONE_ROOT}/SharedLibrary/OrthancStone.h.in
+  ${ORTHANC_STONE_ROOT}/../SharedLibrary/OrthancStone.h.in
   ${CMAKE_CURRENT_BINARY_DIR}/Include/orthanc-stone/OrthancStone.h
   )
 
--- a/Applications/Samples/Sdl/CMakeLists.txt	Mon Oct 26 15:52:11 2020 +0100
+++ b/Applications/Samples/Sdl/CMakeLists.txt	Mon Oct 26 17:42:13 2020 +0100
@@ -30,8 +30,8 @@
   set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
   set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
   mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
-  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/DownloadPackage.cmake)
-  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
+  include(${ORTHANC_STONE_ROOT}/../Resources/Orthanc/CMake/DownloadPackage.cmake)
+  include(${ORTHANC_STONE_ROOT}/../Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
 
 else()
   set(ENABLE_GOOGLE_TEST ON)
--- a/OrthancStone/Resources/CMake/OrthancStoneConfiguration.cmake	Mon Oct 26 15:52:11 2020 +0100
+++ b/OrthancStone/Resources/CMake/OrthancStoneConfiguration.cmake	Mon Oct 26 17:42:13 2020 +0100
@@ -79,7 +79,7 @@
 
 if (ENABLE_WEB_CLIENT)
   list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OrthancDatasets/OrthancHttpConnection.cpp
     )
 endif()
 
@@ -168,273 +168,273 @@
 
 if (ENABLE_DCMTK)
   list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Sources/Oracle/ParseDicomSuccessMessage.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ParsedDicomCache.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ParsedDicomDataset.cpp
+    ${ORTHANC_STONE_ROOT}/Oracle/ParseDicomSuccessMessage.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OrthancDatasets/SimplifiedOrthancDataset.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/ParsedDicomCache.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/ParsedDicomDataset.cpp
     )
 endif()
 
 
 if (NOT ORTHANC_SANDBOXED AND ENABLE_THREADS AND ENABLE_WEB_CLIENT)
   list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Sources/Loaders/GenericLoadersContext.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Loaders/GenericLoadersContext.h
-    ${ORTHANC_STONE_ROOT}/Sources/Oracle/GenericOracleRunner.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Oracle/ThreadedOracle.cpp
+    ${ORTHANC_STONE_ROOT}/Loaders/GenericLoadersContext.cpp
+    ${ORTHANC_STONE_ROOT}/Loaders/GenericLoadersContext.h
+    ${ORTHANC_STONE_ROOT}/Oracle/GenericOracleRunner.cpp
+    ${ORTHANC_STONE_ROOT}/Oracle/ThreadedOracle.cpp
     )
 endif()
 
 
 if (ENABLE_PUGIXML)
   list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/AngleAnnotation.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/Annotation.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/ArrayValue.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/CollectionOfAnnotations.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/DictionaryValue.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/IValue.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/LineAnnotation.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/StringValue.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OsiriX/TextAnnotation.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/AngleAnnotation.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/Annotation.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/ArrayValue.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/CollectionOfAnnotations.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/DictionaryValue.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/IValue.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/LineAnnotation.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/StringValue.cpp
+    ${ORTHANC_STONE_ROOT}/Toolbox/OsiriX/TextAnnotation.cpp
     )
 endif()
 
 
 list(APPEND ORTHANC_STONE_SOURCES
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/DicomDatasetReader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/DicomPath.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/FullOrthancDataset.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/OrthancDatasets/IOrthancConnection.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/OrthancDatasets/DicomDatasetReader.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/OrthancDatasets/DicomPath.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/OrthancDatasets/FullOrthancDataset.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/OrthancDatasets/IOrthancConnection.cpp
 
-  ${ORTHANC_STONE_ROOT}/Sources/Fonts/FontRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Fonts/Glyph.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Fonts/GlyphAlphabet.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Fonts/GlyphBitmapAlphabet.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Fonts/GlyphTextureAlphabet.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Fonts/TextBoundingBox.cpp
+  ${ORTHANC_STONE_ROOT}/Fonts/FontRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Fonts/Glyph.cpp
+  ${ORTHANC_STONE_ROOT}/Fonts/GlyphAlphabet.cpp
+  ${ORTHANC_STONE_ROOT}/Fonts/GlyphBitmapAlphabet.cpp
+  ${ORTHANC_STONE_ROOT}/Fonts/GlyphTextureAlphabet.cpp
+  ${ORTHANC_STONE_ROOT}/Fonts/TextBoundingBox.cpp
 
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingItemsSorter.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingItemsSorter.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingStrategy.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/BasicFetchingStrategy.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomResourcesLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomSource.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomStructureSetLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomStructureSetLoader.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/DicomVolumeLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/IFetchingItemsSorter.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/IFetchingStrategy.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoadedDicomResources.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoaderStateMachine.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/LoaderStateMachine.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancMultiframeVolumeLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancMultiframeVolumeLoader.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OracleScheduler.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/OrthancSeriesVolumeProgressiveLoader.h
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesFramesLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesMetadataLoader.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesOrderedFrames.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Loaders/SeriesThumbnailsLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/BasicFetchingItemsSorter.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/BasicFetchingItemsSorter.h
+  ${ORTHANC_STONE_ROOT}/Loaders/BasicFetchingStrategy.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/BasicFetchingStrategy.h
+  ${ORTHANC_STONE_ROOT}/Loaders/DicomResourcesLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/DicomSource.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/DicomStructureSetLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/DicomStructureSetLoader.h
+  ${ORTHANC_STONE_ROOT}/Loaders/DicomVolumeLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/IFetchingItemsSorter.h
+  ${ORTHANC_STONE_ROOT}/Loaders/IFetchingStrategy.h
+  ${ORTHANC_STONE_ROOT}/Loaders/LoadedDicomResources.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/LoaderStateMachine.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/LoaderStateMachine.h
+  ${ORTHANC_STONE_ROOT}/Loaders/OrthancMultiframeVolumeLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/OrthancMultiframeVolumeLoader.h
+  ${ORTHANC_STONE_ROOT}/Loaders/OracleScheduler.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/OrthancSeriesVolumeProgressiveLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/OrthancSeriesVolumeProgressiveLoader.h
+  ${ORTHANC_STONE_ROOT}/Loaders/SeriesFramesLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/SeriesMetadataLoader.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/SeriesOrderedFrames.cpp
+  ${ORTHANC_STONE_ROOT}/Loaders/SeriesThumbnailsLoader.cpp
 
-  ${ORTHANC_STONE_ROOT}/Sources/Messages/ICallable.h
-  ${ORTHANC_STONE_ROOT}/Sources/Messages/IMessage.h
-  ${ORTHANC_STONE_ROOT}/Sources/Messages/IMessageEmitter.h
-  ${ORTHANC_STONE_ROOT}/Sources/Messages/IObservable.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Messages/IObservable.h
-  ${ORTHANC_STONE_ROOT}/Sources/Messages/IObserver.h
-  ${ORTHANC_STONE_ROOT}/Sources/Messages/ObserverBase.h
+  ${ORTHANC_STONE_ROOT}/Messages/ICallable.h
+  ${ORTHANC_STONE_ROOT}/Messages/IMessage.h
+  ${ORTHANC_STONE_ROOT}/Messages/IMessageEmitter.h
+  ${ORTHANC_STONE_ROOT}/Messages/IObservable.cpp
+  ${ORTHANC_STONE_ROOT}/Messages/IObservable.h
+  ${ORTHANC_STONE_ROOT}/Messages/IObserver.h
+  ${ORTHANC_STONE_ROOT}/Messages/ObserverBase.h
 
-  ${ORTHANC_STONE_ROOT}/Sources/Oracle/GetOrthancImageCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Oracle/GetOrthancWebViewerJpegCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Oracle/HttpCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Oracle/OracleCommandBase.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Oracle/OrthancRestApiCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Oracle/ParseDicomFromFileCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Oracle/ParseDicomFromWadoCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Oracle/GetOrthancImageCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Oracle/GetOrthancWebViewerJpegCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Oracle/HttpCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Oracle/OracleCommandBase.cpp
+  ${ORTHANC_STONE_ROOT}/Oracle/OrthancRestApiCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Oracle/ParseDicomFromFileCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Oracle/ParseDicomFromWadoCommand.cpp
 
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/CairoCompositor.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/CairoCompositor.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Color.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ColorSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ColorTextureSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ColorTextureSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/FloatTextureSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/FloatTextureSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/GrayscaleStyleConfigurator.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/GrayscaleStyleConfigurator.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/GrayscaleWindowingSceneTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/GrayscaleWindowingSceneTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ICompositor.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ILayerStyleConfigurator.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ISceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/InfoPanelSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/InfoPanelSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableStyleConfigurator.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableStyleConfigurator.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableTextureSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/LookupTableTextureSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/NullLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PanSceneTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PanSceneTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PointerEvent.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PointerEvent.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PolylineSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/PolylineSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/RotateSceneTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/RotateSceneTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Scene2D.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Scene2D.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ScenePoint2D.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextureBaseSceneLayer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/TextureBaseSceneLayer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ZoomSceneTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/ZoomSceneTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/CairoCompositor.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/CairoCompositor.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Color.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/ColorSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/ColorTextureSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/ColorTextureSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/FloatTextureSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/FloatTextureSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/GrayscaleStyleConfigurator.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/GrayscaleStyleConfigurator.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/GrayscaleWindowingSceneTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/GrayscaleWindowingSceneTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/ICompositor.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/ILayerStyleConfigurator.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/ISceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/InfoPanelSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/InfoPanelSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/LookupTableStyleConfigurator.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/LookupTableStyleConfigurator.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/LookupTableTextureSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/LookupTableTextureSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/NullLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/PanSceneTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/PanSceneTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/PointerEvent.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/PointerEvent.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/PolylineSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/PolylineSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/RotateSceneTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/RotateSceneTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Scene2D.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Scene2D.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/ScenePoint2D.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/TextSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/TextSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/TextureBaseSceneLayer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/TextureBaseSceneLayer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/ZoomSceneTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/ZoomSceneTracker.h
 
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoBaseRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoColorTextureRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoColorTextureRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoFloatTextureRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoFloatTextureRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoInfoPanelRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoInfoPanelRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoPolylineRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoPolylineRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoTextRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CairoTextRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CompositorHelper.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/CompositorHelper.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/FixedPointAligner.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/FixedPointAligner.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/ICairoContextProvider.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoBaseRenderer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoColorTextureRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoColorTextureRenderer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoFloatTextureRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoFloatTextureRenderer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoInfoPanelRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoInfoPanelRenderer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoLookupTableTextureRenderer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoPolylineRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoPolylineRenderer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoTextRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CairoTextRenderer.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CompositorHelper.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/CompositorHelper.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/FixedPointAligner.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/FixedPointAligner.h
+  ${ORTHANC_STONE_ROOT}/Scene2D/Internals/ICairoContextProvider.h
   
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/AngleMeasureTool.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/AngleMeasureTool.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateAngleMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateCircleMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateCircleMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateLineMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/CreateMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditAngleMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureCommand.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureCommand.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/EditLineMeasureTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/IFlexiblePointerTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LayerHolder.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LayerHolder.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LineMeasureTool.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/LineMeasureTool.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureCommands.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureCommands.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTool.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTool.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureToolsToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureToolsToolbox.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTrackers.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/MeasureTrackers.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/OneGesturePointerTracker.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/OneGesturePointerTracker.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/PredeclaredTypes.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/UndoStack.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/UndoStack.h
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/ViewportController.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Scene2DViewport/ViewportController.h
-  ${ORTHANC_STONE_ROOT}/Sources/StoneEnumerations.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/StoneException.h
-  ${ORTHANC_STONE_ROOT}/Sources/StoneInitialization.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/AngleMeasureTool.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/AngleMeasureTool.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateAngleMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateAngleMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateAngleMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateAngleMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateCircleMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateCircleMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateLineMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateLineMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateLineMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateLineMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/CreateMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditAngleMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditAngleMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditAngleMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditAngleMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditLineMeasureCommand.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditLineMeasureCommand.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditLineMeasureTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/EditLineMeasureTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/IFlexiblePointerTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/LayerHolder.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/LayerHolder.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/LineMeasureTool.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/LineMeasureTool.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureCommands.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureCommands.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureTool.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureTool.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureToolsToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureToolsToolbox.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureTrackers.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/MeasureTrackers.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/OneGesturePointerTracker.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/OneGesturePointerTracker.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/PredeclaredTypes.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/UndoStack.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/UndoStack.h
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/ViewportController.cpp
+  ${ORTHANC_STONE_ROOT}/Scene2DViewport/ViewportController.h
+  ${ORTHANC_STONE_ROOT}/StoneEnumerations.cpp
+  ${ORTHANC_STONE_ROOT}/StoneException.h
+  ${ORTHANC_STONE_ROOT}/StoneInitialization.cpp
 
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/AffineTransform2D.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/AffineTransform2D.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/CoordinateSystem3D.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/CoordinateSystem3D.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomInstanceParameters.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomInstanceParameters.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructure2.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructure2.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructurePolygon2.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructurePolygon2.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet2.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSet2.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSetUtils.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DicomStructureSetUtils.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DisjointDataSet.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DynamicBitmap.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/DynamicBitmap.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/Extent2D.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/Extent2D.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/FiniteProjectiveCamera.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/FiniteProjectiveCamera.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GenericToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GenericToolbox.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GeometryToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/GeometryToolbox.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageGeometry.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageGeometry.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageToolbox.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ImageToolbox.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/LinearAlgebra.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/LinearAlgebra.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/PixelTestPatterns.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ShearWarpProjectiveTransform.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/ShearWarpProjectiveTransform.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SlicesSorter.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SlicesSorter.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SortedFrames.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SortedFrames.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SubpixelReader.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/SubvoxelReader.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/TextRenderer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/TextRenderer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/UndoRedoStack.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Toolbox/UndoRedoStack.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/AffineTransform2D.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/AffineTransform2D.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/CoordinateSystem3D.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/CoordinateSystem3D.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomInstanceParameters.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomInstanceParameters.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructure2.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructure2.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructurePolygon2.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructurePolygon2.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructureSet.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructureSet.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructureSet2.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructureSet2.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructureSetUtils.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/DicomStructureSetUtils.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DisjointDataSet.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/DynamicBitmap.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/DynamicBitmap.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/Extent2D.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/Extent2D.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/FiniteProjectiveCamera.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/FiniteProjectiveCamera.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/GenericToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/GenericToolbox.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/GeometryToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/GeometryToolbox.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/ImageGeometry.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/ImageGeometry.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/ImageToolbox.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/ImageToolbox.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/LinearAlgebra.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/LinearAlgebra.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/PixelTestPatterns.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/ShearWarpProjectiveTransform.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/ShearWarpProjectiveTransform.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/SlicesSorter.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/SlicesSorter.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/SortedFrames.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/SortedFrames.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/SubpixelReader.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/SubvoxelReader.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/TextRenderer.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/TextRenderer.h
+  ${ORTHANC_STONE_ROOT}/Toolbox/UndoRedoStack.cpp
+  ${ORTHANC_STONE_ROOT}/Toolbox/UndoRedoStack.h
   
-  ${ORTHANC_STONE_ROOT}/Sources/Viewport/IViewport.h
-  ${ORTHANC_STONE_ROOT}/Sources/Viewport/DefaultViewportInteractor.cpp
+  ${ORTHANC_STONE_ROOT}/Viewport/IViewport.h
+  ${ORTHANC_STONE_ROOT}/Viewport/DefaultViewportInteractor.cpp
   
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/IGeometryProvider.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/IVolumeSlicer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/IVolumeSlicer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/OrientedVolumeBoundingBox.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/OrientedVolumeBoundingBox.h
+  ${ORTHANC_STONE_ROOT}/Volumes/IGeometryProvider.h
+  ${ORTHANC_STONE_ROOT}/Volumes/IVolumeSlicer.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/IVolumeSlicer.h
+  ${ORTHANC_STONE_ROOT}/Volumes/OrientedVolumeBoundingBox.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/OrientedVolumeBoundingBox.h
 
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeImageGeometry.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeImageGeometry.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeReslicer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeReslicer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeSceneLayerSource.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/VolumeSceneLayerSource.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomStructureSetSlicer2.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomStructureSetSlicer2.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImage.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImage.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImage.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageMPRSlicer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageMPRSlicer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageReslicer.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/DicomVolumeImageReslicer.h
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/ImageBuffer3D.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Volumes/ImageBuffer3D.h
+  ${ORTHANC_STONE_ROOT}/Volumes/VolumeImageGeometry.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/VolumeImageGeometry.h
+  ${ORTHANC_STONE_ROOT}/Volumes/VolumeReslicer.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/VolumeReslicer.h
+  ${ORTHANC_STONE_ROOT}/Volumes/VolumeSceneLayerSource.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/VolumeSceneLayerSource.h
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomStructureSetSlicer2.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomStructureSetSlicer2.h
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomVolumeImage.h
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomVolumeImage.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomVolumeImage.h
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomVolumeImageMPRSlicer.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomVolumeImageMPRSlicer.h
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomVolumeImageReslicer.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/DicomVolumeImageReslicer.h
+  ${ORTHANC_STONE_ROOT}/Volumes/ImageBuffer3D.cpp
+  ${ORTHANC_STONE_ROOT}/Volumes/ImageBuffer3D.h
 
-  ${ORTHANC_STONE_ROOT}/Sources/Wrappers/CairoContext.cpp
-  ${ORTHANC_STONE_ROOT}/Sources/Wrappers/CairoSurface.cpp
+  ${ORTHANC_STONE_ROOT}/Wrappers/CairoContext.cpp
+  ${ORTHANC_STONE_ROOT}/Wrappers/CairoSurface.cpp
 
   ${PLATFORM_SOURCES}
   ${APPLICATIONS_SOURCES}
@@ -453,42 +453,42 @@
 
 if (ENABLE_OPENGL)
   list(APPEND ORTHANC_STONE_SOURCES
-    ${ORTHANC_STONE_ROOT}/Sources/Fonts/OpenGLTextCoordinates.h
-    ${ORTHANC_STONE_ROOT}/Sources/Fonts/OpenGLTextCoordinates.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLProgram.h
-    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLShader.h
-    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLShader.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLTexture.h
-    ${ORTHANC_STONE_ROOT}/Sources/OpenGL/OpenGLTexture.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/OpenGLCompositor.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/OpenGLCompositor.cpp
+    ${ORTHANC_STONE_ROOT}/Fonts/OpenGLTextCoordinates.h
+    ${ORTHANC_STONE_ROOT}/Fonts/OpenGLTextCoordinates.cpp
+    ${ORTHANC_STONE_ROOT}/OpenGL/OpenGLProgram.h
+    ${ORTHANC_STONE_ROOT}/OpenGL/OpenGLProgram.cpp
+    ${ORTHANC_STONE_ROOT}/OpenGL/OpenGLShader.h
+    ${ORTHANC_STONE_ROOT}/OpenGL/OpenGLShader.cpp
+    ${ORTHANC_STONE_ROOT}/OpenGL/OpenGLTexture.h
+    ${ORTHANC_STONE_ROOT}/OpenGL/OpenGLTexture.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/OpenGLCompositor.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/OpenGLCompositor.cpp
 
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLBasicPolylineRenderer.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureProgram.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLColorTextureRenderer.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureProgram.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLFloatTextureRenderer.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLInfoPanelRenderer.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLinesProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLinesProgram.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLShaderVersionDirective.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextProgram.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextRenderer.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextRenderer.h
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextureProgram.cpp
-    ${ORTHANC_STONE_ROOT}/Sources/Scene2D/Internals/OpenGLTextureProgram.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLAdvancedPolylineRenderer.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLBasicPolylineRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLBasicPolylineRenderer.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLColorTextureProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLColorTextureProgram.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLColorTextureRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLColorTextureRenderer.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLFloatTextureProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLFloatTextureProgram.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLFloatTextureRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLFloatTextureRenderer.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLInfoPanelRenderer.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLLinesProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLLinesProgram.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLLookupTableTextureRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLLookupTableTextureRenderer.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLShaderVersionDirective.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLTextProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLTextProgram.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLTextRenderer.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLTextRenderer.h
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLTextureProgram.cpp
+    ${ORTHANC_STONE_ROOT}/Scene2D/Internals/OpenGLTextureProgram.h
     )
 endif()
 
--- a/OrthancStone/Resources/CMake/OrthancStoneParameters.cmake	Mon Oct 26 15:52:11 2020 +0100
+++ b/OrthancStone/Resources/CMake/OrthancStoneParameters.cmake	Mon Oct 26 17:42:13 2020 +0100
@@ -22,7 +22,7 @@
 ## Select the location of the Orthanc framework
 #####################################################################
 
-set(ORTHANC_STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
+set(ORTHANC_STONE_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../Sources)
 
 include(${CMAKE_CURRENT_LIST_DIR}/Version.cmake)
 
--- a/OrthancStone/Resources/OrthancStone.doxygen	Mon Oct 26 15:52:11 2020 +0100
+++ b/OrthancStone/Resources/OrthancStone.doxygen	Mon Oct 26 17:42:13 2020 +0100
@@ -45,7 +45,7 @@
 # exceed 55 pixels and the maximum width should not exceed 200 pixels.
 # Doxygen will copy the logo to the output directory.
 
-PROJECT_LOGO           = @ORTHANC_STONE_ROOT@/Resources/OrthancLogoDocumentation.png
+PROJECT_LOGO           = @ORTHANC_STONE_ROOT@/../Resources/OrthancLogoDocumentation.png
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
 # base path where the generated documentation will be put.
@@ -655,8 +655,8 @@
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = @ORTHANC_STONE_ROOT@/Framework \
-                         @ORTHANC_STONE_ROOT@/Platforms
+INPUT                  = @ORTHANC_STONE_ROOT@/ \
+                         @ORTHANC_STONE_ROOT@/../../Applications/Platforms/
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -688,7 +688,7 @@
 # Note that relative paths are relative to the directory from which doxygen is
 # run.
 
-EXCLUDE                = @ORTHANC_STONE_ROOT@/Framework/Orthanc/Resources/
+EXCLUDE                = @ORTHANC_STONE_ROOT@/../../Applications/Platforms/WebAssembly/SharedLibrary/
 
 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
 # directories that are symbolic links (a Unix file system feature) are excluded
--- a/UnitTestsSources/CMakeLists.txt	Mon Oct 26 15:52:11 2020 +0100
+++ b/UnitTestsSources/CMakeLists.txt	Mon Oct 26 17:42:13 2020 +0100
@@ -29,8 +29,8 @@
   set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
   set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
   mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
-  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/DownloadPackage.cmake)
-  include(${ORTHANC_STONE_ROOT}/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
+  include(${ORTHANC_STONE_ROOT}/../Resources/Orthanc/CMake/DownloadPackage.cmake)
+  include(${ORTHANC_STONE_ROOT}/../Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
 
 else()
   set(ENABLE_GOOGLE_TEST ON)
@@ -39,7 +39,7 @@
 set(ENABLE_OPENGL OFF)
 set(ENABLE_PUGIXML ON)
 
-include(${ORTHANC_STONE_ROOT}/Resources/CMake/OrthancStoneConfiguration.cmake)
+include(${ORTHANC_STONE_ROOT}/../Resources/CMake/OrthancStoneConfiguration.cmake)
 
 add_executable(UnitTests
   ${CMAKE_SOURCE_DIR}/GenericToolboxTests.cpp
@@ -58,3 +58,23 @@
   )
 
 target_link_libraries(UnitTests ${DCMTK_LIBRARIES})
+
+
+#####################################################################
+## Generate the documentation if Doxygen is present
+#####################################################################
+
+find_package(Doxygen)
+if (DOXYGEN_FOUND)
+  configure_file(
+    ${ORTHANC_STONE_ROOT}/../Resources/OrthancStone.doxygen
+    ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
+    @ONLY)
+
+  add_custom_target(doc
+    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancStone.doxygen
+    COMMENT "Generating documentation with Doxygen" VERBATIM
+    )
+else()
+  message("Doxygen not found. The documentation will not be built.")
+endif()