From 50592f127921959b6005d6d86a25fd2aa73a378d Mon Sep 17 00:00:00 2001 From: CGoGN Date: Fri, 30 Aug 2013 11:56:22 +0200 Subject: [PATCH] delete old SCHNApps version --- SCHNApps_old/CMakeLists.txt | 149 -- SCHNApps_old/Debug/CMakeLists.txt | 44 - SCHNApps_old/Plugins/CMakeLists.txt | 13 - .../differentialProperties/CMakeLists.txt | 33 - .../forms/computeCurvatureDialog.ui | 354 ---- .../forms/computeNormalDialog.ui | 143 -- .../include/computeCurvatureDialog.h | 37 - .../include/computeNormalDialog.h | 37 - .../include/differentialProperties.h | 114 -- .../src/computeCurvatureDialog.cpp | 153 -- .../src/computeNormalDialog.cpp | 109 -- .../src/differentialProperties.cpp | 285 --- .../Plugins/importSurface/CMakeLists.txt | 31 - .../importSurface/include/importSurface.h | 51 - .../importSurface/src/importSurface.cpp | 75 - .../Plugins/importVolume/CMakeLists.txt | 31 - .../importVolume/include/importVolume.h | 51 - .../Plugins/importVolume/src/importVolume.cpp | 75 - SCHNApps_old/Plugins/plugins_cmake.txt | 52 - SCHNApps_old/Plugins/render/CMakeLists.txt | 32 - SCHNApps_old/Plugins/render/forms/render.ui | 145 -- SCHNApps_old/Plugins/render/include/render.h | 124 -- .../Plugins/render/include/renderDockTab.h | 50 - SCHNApps_old/Plugins/render/src/render.cpp | 349 ---- .../Plugins/render/src/renderDockTab.cpp | 188 -- .../Plugins/renderExplod/CMakeLists.txt | 32 - .../renderExplod/forms/renderExplod.ui | 147 -- .../renderExplod/include/renderExplod.h | 110 -- .../include/renderExplodDockTab.h | 47 - .../Plugins/renderExplod/src/renderExplod.cpp | 383 ---- .../renderExplod/src/renderExplodDockTab.cpp | 177 -- .../Plugins/renderScalar/CMakeLists.txt | 32 - .../renderScalar/forms/renderScalar.ui | 119 -- .../renderScalar/include/renderScalar.h | 106 - .../include/renderScalarDockTab.h | 47 - .../Plugins/renderScalar/src/renderScalar.cpp | 294 --- .../renderScalar/src/renderScalarDockTab.cpp | 160 -- .../Plugins/renderTopoSurface/CMakeLists.txt | 32 - .../forms/renderTopoSurface.ui | 134 -- .../include/renderTopoSurface.h | 112 -- .../include/renderTopoSurfaceDockTab.h | 50 - .../src/renderTopoSurface.cpp | 380 ---- .../src/renderTopoSurfaceDockTab.cpp | 208 -- .../Plugins/renderVector/CMakeLists.txt | 32 - .../renderVector/forms/renderVector.ui | 89 - .../renderVector/include/renderVector.h | 95 - .../include/renderVectorDockTab.h | 46 - .../Plugins/renderVector/src/renderVector.cpp | 236 --- .../renderVector/src/renderVectorDockTab.cpp | 136 -- .../Plugins/subdivideSurface/CMakeLists.txt | 32 - .../forms/subdivideSurfaceDialog.ui | 95 - .../include/subdivideSurface.h | 66 - .../include/subdivideSurfaceDialog.h | 37 - .../subdivideSurface/src/subdivideSurface.cpp | 128 -- .../src/subdivideSurfaceDialog.cpp | 97 - .../Plugins/surfaceDeformation/CMakeLists.txt | 32 - .../forms/surfaceDeformation.ui | 88 - .../include/surfaceDeformation.h | 154 -- .../include/surfaceDeformationDockTab.h | 45 - .../src/surfaceDeformation.cpp | 682 ------- .../src/surfaceDeformationDockTab.cpp | 129 -- SCHNApps_old/Release/CMakeLists.txt | 44 - SCHNApps_old/bin/schnappsInit.py | 2 - SCHNApps_old/build/.gitignore | 0 SCHNApps_old/doc/Doxyfile.in | 1716 ----------------- SCHNApps_old/doc/LaTeX/images/callBacks.png | Bin 79305 -> 0 bytes SCHNApps_old/doc/LaTeX/images/callBacks.svg | 507 ----- SCHNApps_old/doc/LaTeX/images/plugins.png | Bin 11276 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot1.png | Bin 15157 -> 0 bytes .../doc/LaTeX/images/screenshot10.png | Bin 17675 -> 0 bytes .../doc/LaTeX/images/screenshot11.png | Bin 14885 -> 0 bytes .../doc/LaTeX/images/screenshot12.png | Bin 30102 -> 0 bytes .../doc/LaTeX/images/screenshot13.png | Bin 13443 -> 0 bytes .../doc/LaTeX/images/screenshot14.png | Bin 10605 -> 0 bytes .../doc/LaTeX/images/screenshot15.png | Bin 20024 -> 0 bytes .../doc/LaTeX/images/screenshot16.png | Bin 9670 -> 0 bytes .../doc/LaTeX/images/screenshot17.png | Bin 12758 -> 0 bytes .../doc/LaTeX/images/screenshot18.png | Bin 75321 -> 0 bytes .../doc/LaTeX/images/screenshot19.png | Bin 113725 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot2.png | Bin 12802 -> 0 bytes .../doc/LaTeX/images/screenshot20.png | Bin 18039 -> 0 bytes .../doc/LaTeX/images/screenshot21.png | Bin 12304 -> 0 bytes .../doc/LaTeX/images/screenshot22.png | Bin 4605 -> 0 bytes .../doc/LaTeX/images/screenshot23.png | Bin 93573 -> 0 bytes .../doc/LaTeX/images/screenshot24.png | Bin 54687 -> 0 bytes .../doc/LaTeX/images/screenshot25.png | Bin 20359 -> 0 bytes .../doc/LaTeX/images/screenshot26.png | Bin 18896 -> 0 bytes .../doc/LaTeX/images/screenshot28.png | Bin 20601 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot3.png | Bin 75229 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot4.png | Bin 13550 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot5.png | Bin 19390 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot6.png | Bin 21064 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot7.png | Bin 4981 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot8.png | Bin 17286 -> 0 bytes SCHNApps_old/doc/LaTeX/images/screenshot9.png | Bin 6343 -> 0 bytes SCHNApps_old/doc/LaTeX/images/systemMap1.png | Bin 9713 -> 0 bytes SCHNApps_old/doc/LaTeX/images/systemMap2.png | Bin 16235 -> 0 bytes SCHNApps_old/doc/LaTeX/overview.aux | 119 -- SCHNApps_old/doc/LaTeX/overview.fdb_latexmk | 96 - SCHNApps_old/doc/LaTeX/overview.log | 959 --------- SCHNApps_old/doc/LaTeX/overview.out | 26 - SCHNApps_old/doc/LaTeX/overview.pdf | Bin 989590 -> 0 bytes SCHNApps_old/doc/LaTeX/overview.synctex.gz | Bin 301914 -> 0 bytes SCHNApps_old/doc/LaTeX/overview.tex | 1489 -------------- SCHNApps_old/doc/LaTeX/overview.toc | 56 - .../doc/Video/cameraQuickPathDemo.webm | Bin 9234659 -> 0 bytes SCHNApps_old/forms/cameraViewDialog.ui | 52 - SCHNApps_old/forms/camerasDialog.ui | 87 - SCHNApps_old/forms/mapsDialog.ui | 226 --- SCHNApps_old/forms/mapsViewDialog.ui | 58 - SCHNApps_old/forms/pluginsDialog.ui | 83 - SCHNApps_old/forms/pluginsViewDialog.ui | 55 - SCHNApps_old/forms/window.ui | 150 -- SCHNApps_old/include/camera.h | 83 - SCHNApps_old/include/colorComboBox.h | 28 - .../include/dialogs/cameraViewDialog.h | 43 - SCHNApps_old/include/dialogs/camerasDialog.h | 44 - SCHNApps_old/include/dialogs/mapsDialog.h | 40 - SCHNApps_old/include/dialogs/mapsViewDialog.h | 41 - SCHNApps_old/include/dialogs/pluginsDialog.h | 43 - .../include/dialogs/pluginsViewDialog.h | 41 - SCHNApps_old/include/mapHandler.h | 172 -- SCHNApps_old/include/mapHandler.hpp | 92 - SCHNApps_old/include/plugin.h | 115 -- SCHNApps_old/include/texture.h | 27 - SCHNApps_old/include/types.h | 55 - SCHNApps_old/include/view.h | 150 -- SCHNApps_old/include/viewButtonArea.h | 80 - SCHNApps_old/include/window.h | 230 --- SCHNApps_old/resources/cgogn/ESA_logo.svg | 16 - SCHNApps_old/resources/cgogn/cgogn.svg | 696 ------- SCHNApps_old/resources/cgogn/cgogn2.png | Bin 123489 -> 0 bytes SCHNApps_old/resources/cgogn/cgogn2.svg | 771 -------- SCHNApps_old/resources/cgogn/icube.png | Bin 55054 -> 0 bytes SCHNApps_old/resources/cgogn/igg.png | Bin 22481 -> 0 bytes SCHNApps_old/resources/cgogn/splash.png | Bin 187002 -> 0 bytes SCHNApps_old/resources/cgogn/uds.svg | 30 - SCHNApps_old/resources/icons/Hsplit.png | Bin 1811 -> 0 bytes SCHNApps_old/resources/icons/Hsplit.svg | 223 --- SCHNApps_old/resources/icons/Vsplit.png | Bin 1839 -> 0 bytes SCHNApps_old/resources/icons/Vsplit.svg | 223 --- SCHNApps_old/resources/icons/cameras.png | Bin 3808 -> 0 bytes SCHNApps_old/resources/icons/cameras.svg | 206 -- SCHNApps_old/resources/icons/close.png | Bin 2493 -> 0 bytes SCHNApps_old/resources/icons/close.svg | 231 --- SCHNApps_old/resources/icons/maps.png | Bin 3927 -> 0 bytes SCHNApps_old/resources/icons/maps.svg | 226 --- SCHNApps_old/resources/icons/plugins.png | Bin 6587 -> 0 bytes SCHNApps_old/resources/icons/plugins.svg | 224 --- SCHNApps_old/resources/resources.qrc | 14 - SCHNApps_old/src/camera.cpp | 72 - SCHNApps_old/src/colorComboBox.cpp | 51 - SCHNApps_old/src/dialogs/cameraViewDialog.cpp | 113 -- SCHNApps_old/src/dialogs/camerasDialog.cpp | 147 -- SCHNApps_old/src/dialogs/mapsDialog.cpp | 191 -- SCHNApps_old/src/dialogs/mapsViewDialog.cpp | 102 - SCHNApps_old/src/dialogs/pluginsDialog.cpp | 119 -- .../src/dialogs/pluginsViewDialog.cpp | 107 - SCHNApps_old/src/main.cpp | 41 - SCHNApps_old/src/mapHandler.cpp | 63 - SCHNApps_old/src/plugin.cpp | 136 -- SCHNApps_old/src/view.cpp | 401 ---- SCHNApps_old/src/viewButtonArea.cpp | 117 -- SCHNApps_old/src/window.cpp | 780 -------- 164 files changed, 19823 deletions(-) delete mode 100644 SCHNApps_old/CMakeLists.txt delete mode 100644 SCHNApps_old/Debug/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/differentialProperties/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/differentialProperties/forms/computeCurvatureDialog.ui delete mode 100644 SCHNApps_old/Plugins/differentialProperties/forms/computeNormalDialog.ui delete mode 100644 SCHNApps_old/Plugins/differentialProperties/include/computeCurvatureDialog.h delete mode 100644 SCHNApps_old/Plugins/differentialProperties/include/computeNormalDialog.h delete mode 100644 SCHNApps_old/Plugins/differentialProperties/include/differentialProperties.h delete mode 100644 SCHNApps_old/Plugins/differentialProperties/src/computeCurvatureDialog.cpp delete mode 100644 SCHNApps_old/Plugins/differentialProperties/src/computeNormalDialog.cpp delete mode 100644 SCHNApps_old/Plugins/differentialProperties/src/differentialProperties.cpp delete mode 100644 SCHNApps_old/Plugins/importSurface/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/importSurface/include/importSurface.h delete mode 100644 SCHNApps_old/Plugins/importSurface/src/importSurface.cpp delete mode 100644 SCHNApps_old/Plugins/importVolume/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/importVolume/include/importVolume.h delete mode 100644 SCHNApps_old/Plugins/importVolume/src/importVolume.cpp delete mode 100644 SCHNApps_old/Plugins/plugins_cmake.txt delete mode 100644 SCHNApps_old/Plugins/render/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/render/forms/render.ui delete mode 100644 SCHNApps_old/Plugins/render/include/render.h delete mode 100644 SCHNApps_old/Plugins/render/include/renderDockTab.h delete mode 100644 SCHNApps_old/Plugins/render/src/render.cpp delete mode 100644 SCHNApps_old/Plugins/render/src/renderDockTab.cpp delete mode 100644 SCHNApps_old/Plugins/renderExplod/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/renderExplod/forms/renderExplod.ui delete mode 100644 SCHNApps_old/Plugins/renderExplod/include/renderExplod.h delete mode 100644 SCHNApps_old/Plugins/renderExplod/include/renderExplodDockTab.h delete mode 100644 SCHNApps_old/Plugins/renderExplod/src/renderExplod.cpp delete mode 100644 SCHNApps_old/Plugins/renderExplod/src/renderExplodDockTab.cpp delete mode 100644 SCHNApps_old/Plugins/renderScalar/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/renderScalar/forms/renderScalar.ui delete mode 100644 SCHNApps_old/Plugins/renderScalar/include/renderScalar.h delete mode 100644 SCHNApps_old/Plugins/renderScalar/include/renderScalarDockTab.h delete mode 100644 SCHNApps_old/Plugins/renderScalar/src/renderScalar.cpp delete mode 100644 SCHNApps_old/Plugins/renderScalar/src/renderScalarDockTab.cpp delete mode 100644 SCHNApps_old/Plugins/renderTopoSurface/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/renderTopoSurface/forms/renderTopoSurface.ui delete mode 100644 SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurface.h delete mode 100644 SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h delete mode 100644 SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurface.cpp delete mode 100644 SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp delete mode 100644 SCHNApps_old/Plugins/renderVector/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/renderVector/forms/renderVector.ui delete mode 100644 SCHNApps_old/Plugins/renderVector/include/renderVector.h delete mode 100644 SCHNApps_old/Plugins/renderVector/include/renderVectorDockTab.h delete mode 100644 SCHNApps_old/Plugins/renderVector/src/renderVector.cpp delete mode 100644 SCHNApps_old/Plugins/renderVector/src/renderVectorDockTab.cpp delete mode 100644 SCHNApps_old/Plugins/subdivideSurface/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/subdivideSurface/forms/subdivideSurfaceDialog.ui delete mode 100644 SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurface.h delete mode 100644 SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurfaceDialog.h delete mode 100644 SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurface.cpp delete mode 100644 SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurfaceDialog.cpp delete mode 100644 SCHNApps_old/Plugins/surfaceDeformation/CMakeLists.txt delete mode 100644 SCHNApps_old/Plugins/surfaceDeformation/forms/surfaceDeformation.ui delete mode 100644 SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformation.h delete mode 100644 SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformationDockTab.h delete mode 100644 SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformation.cpp delete mode 100644 SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformationDockTab.cpp delete mode 100644 SCHNApps_old/Release/CMakeLists.txt delete mode 100644 SCHNApps_old/bin/schnappsInit.py delete mode 100644 SCHNApps_old/build/.gitignore delete mode 100644 SCHNApps_old/doc/Doxyfile.in delete mode 100644 SCHNApps_old/doc/LaTeX/images/callBacks.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/callBacks.svg delete mode 100644 SCHNApps_old/doc/LaTeX/images/plugins.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot1.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot10.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot11.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot12.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot13.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot14.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot15.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot16.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot17.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot18.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot19.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot2.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot20.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot21.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot22.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot23.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot24.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot25.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot26.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot28.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot3.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot4.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot5.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot6.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot7.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot8.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/screenshot9.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/systemMap1.png delete mode 100644 SCHNApps_old/doc/LaTeX/images/systemMap2.png delete mode 100644 SCHNApps_old/doc/LaTeX/overview.aux delete mode 100644 SCHNApps_old/doc/LaTeX/overview.fdb_latexmk delete mode 100644 SCHNApps_old/doc/LaTeX/overview.log delete mode 100644 SCHNApps_old/doc/LaTeX/overview.out delete mode 100644 SCHNApps_old/doc/LaTeX/overview.pdf delete mode 100644 SCHNApps_old/doc/LaTeX/overview.synctex.gz delete mode 100644 SCHNApps_old/doc/LaTeX/overview.tex delete mode 100644 SCHNApps_old/doc/LaTeX/overview.toc delete mode 100644 SCHNApps_old/doc/Video/cameraQuickPathDemo.webm delete mode 100644 SCHNApps_old/forms/cameraViewDialog.ui delete mode 100644 SCHNApps_old/forms/camerasDialog.ui delete mode 100644 SCHNApps_old/forms/mapsDialog.ui delete mode 100644 SCHNApps_old/forms/mapsViewDialog.ui delete mode 100644 SCHNApps_old/forms/pluginsDialog.ui delete mode 100644 SCHNApps_old/forms/pluginsViewDialog.ui delete mode 100644 SCHNApps_old/forms/window.ui delete mode 100644 SCHNApps_old/include/camera.h delete mode 100644 SCHNApps_old/include/colorComboBox.h delete mode 100644 SCHNApps_old/include/dialogs/cameraViewDialog.h delete mode 100644 SCHNApps_old/include/dialogs/camerasDialog.h delete mode 100644 SCHNApps_old/include/dialogs/mapsDialog.h delete mode 100644 SCHNApps_old/include/dialogs/mapsViewDialog.h delete mode 100644 SCHNApps_old/include/dialogs/pluginsDialog.h delete mode 100644 SCHNApps_old/include/dialogs/pluginsViewDialog.h delete mode 100644 SCHNApps_old/include/mapHandler.h delete mode 100644 SCHNApps_old/include/mapHandler.hpp delete mode 100644 SCHNApps_old/include/plugin.h delete mode 100644 SCHNApps_old/include/texture.h delete mode 100644 SCHNApps_old/include/types.h delete mode 100644 SCHNApps_old/include/view.h delete mode 100644 SCHNApps_old/include/viewButtonArea.h delete mode 100644 SCHNApps_old/include/window.h delete mode 100644 SCHNApps_old/resources/cgogn/ESA_logo.svg delete mode 100644 SCHNApps_old/resources/cgogn/cgogn.svg delete mode 100644 SCHNApps_old/resources/cgogn/cgogn2.png delete mode 100644 SCHNApps_old/resources/cgogn/cgogn2.svg delete mode 100644 SCHNApps_old/resources/cgogn/icube.png delete mode 100644 SCHNApps_old/resources/cgogn/igg.png delete mode 100644 SCHNApps_old/resources/cgogn/splash.png delete mode 100644 SCHNApps_old/resources/cgogn/uds.svg delete mode 100644 SCHNApps_old/resources/icons/Hsplit.png delete mode 100644 SCHNApps_old/resources/icons/Hsplit.svg delete mode 100644 SCHNApps_old/resources/icons/Vsplit.png delete mode 100644 SCHNApps_old/resources/icons/Vsplit.svg delete mode 100644 SCHNApps_old/resources/icons/cameras.png delete mode 100644 SCHNApps_old/resources/icons/cameras.svg delete mode 100644 SCHNApps_old/resources/icons/close.png delete mode 100644 SCHNApps_old/resources/icons/close.svg delete mode 100644 SCHNApps_old/resources/icons/maps.png delete mode 100644 SCHNApps_old/resources/icons/maps.svg delete mode 100644 SCHNApps_old/resources/icons/plugins.png delete mode 100644 SCHNApps_old/resources/icons/plugins.svg delete mode 100644 SCHNApps_old/resources/resources.qrc delete mode 100644 SCHNApps_old/src/camera.cpp delete mode 100644 SCHNApps_old/src/colorComboBox.cpp delete mode 100644 SCHNApps_old/src/dialogs/cameraViewDialog.cpp delete mode 100644 SCHNApps_old/src/dialogs/camerasDialog.cpp delete mode 100644 SCHNApps_old/src/dialogs/mapsDialog.cpp delete mode 100644 SCHNApps_old/src/dialogs/mapsViewDialog.cpp delete mode 100644 SCHNApps_old/src/dialogs/pluginsDialog.cpp delete mode 100644 SCHNApps_old/src/dialogs/pluginsViewDialog.cpp delete mode 100644 SCHNApps_old/src/main.cpp delete mode 100644 SCHNApps_old/src/mapHandler.cpp delete mode 100644 SCHNApps_old/src/plugin.cpp delete mode 100644 SCHNApps_old/src/view.cpp delete mode 100644 SCHNApps_old/src/viewButtonArea.cpp delete mode 100644 SCHNApps_old/src/window.cpp diff --git a/SCHNApps_old/CMakeLists.txt b/SCHNApps_old/CMakeLists.txt deleted file mode 100644 index 38d73d600..000000000 --- a/SCHNApps_old/CMakeLists.txt +++ /dev/null @@ -1,149 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -project(SCHNApps) - -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC") - - -SET(CGoGN_ROOT_DIR ${CMAKE_SOURCE_DIR}/.. CACHE STRING "CGoGN root dir") -SET(CMAKE_MODULE_PATH ${CGoGN_ROOT_DIR}/cmake_modules/) - - -find_package(OpenGL REQUIRED) -find_package(Boost COMPONENTS regex thread system REQUIRED) -find_package(ZLIB REQUIRED) -find_package(LibXml2 REQUIRED) -find_package(GLEW REQUIRED) -find_package(Qt4 REQUIRED) -find_package(QGLViewer REQUIRED) -find_package(PythonLibs 2.7 REQUIRED) -find_package(SuiteSparse REQUIRED) -#find_package(SuperLU REQUIRED) - - -SET( QT_USE_QTOPENGL TRUE ) -SET( QT_USE_QTXML TRUE ) -SET( QT_USE_QTDESIGNER TRUE ) -SET( QT_USE_QTGUI TRUE ) -SET( QT_USE_QTPLUGIN TRUE ) - -INCLUDE(${QT_USE_FILE}) -ADD_DEFINITIONS(${QT_DEFINITIONS}) - - - - -file(STRINGS ${CGoGN_ROOT_DIR}/include/cgogn_mr.h FORCE_MR) -IF (FORCE_MR EQUAL 1) - add_definitions(-DCGoGN_FORCE_MR=1) -ENDIF (FORCE_MR EQUAL 1) - -file(STRINGS ${CGoGN_ROOT_DIR}/include/cgogn_onelib.h ONELIB_STR) -IF (ONELIB_STR EQUAL 1) - SET(CGoGN_LIBS_D cgognD) - SET(CGoGN_LIBS_R cgogn) -ELSE (ONELIB_STR EQUAL 1) - SET(CGoGN_LIBS_D topologyD algoD containerD utilsD) - SET(CGoGN_LIBS_R topology algo container utils) -ENDIF (ONELIB_STR EQUAL 1) - -IF (DEFINED ASSERTON) - add_definitions(-DCGOGN_ASSERT_BOOL=${ASSERTON}) -ELSE (DEFINED ASSERTON) - add_definitions(-DCGOGN_ASSERT_BOOL=false) -ENDIF (DEFINED ASSERTON) - -add_definitions(-DSHADERPATH="${CGoGN_ROOT_DIR}/lib/Shaders/") - - - - -# define includes of external libs -SET (EXT_INCLUDES - ${CGoGN_ROOT_DIR}/ThirdParty/include - ${OPENGL_INCLUDE_DIR} - ${GLEW_INCLUDE_DIRS} - ${ZLIB_INCLUDE_DIRS} - ${LIBXML2_INCLUDE_DIR} - ${Boost_INCLUDE_DIRS} - ${QT_INCLUDE_DIR} - ${QGLVIEWER_INCLUDE_DIR} - ${PYTHON_INCLUDE_DIRS} - ${SUITESPARSE_INCLUDE_DIRS} -# ${SUPERLU_INCLUDE_DIRS} -) - -# define libs for external libs -SET (EXT_LIBS - PythonQt - nl - ${OPENGL_LIBRARY} - ${GLEW_LIBRARIES} - ${ZLIB_LIBRARIES} - ${LIBXML2_LIBRARIES} - ${Boost_SYSTEM_LIBRARY} - ${Boost_REGEX_LIBRARY} - ${Boost_THREAD_LIBRARY} - ${QT_LIBRARIES} - ${QGLVIEWER_LIBRARIES} - ${PYTHON_LIBRARIES} - ${SUITESPARSE_LIBRARIES} -# ${SUPERLU_LIBRARIES} -) - - - - -# qq definition specifiques pour mac -IF(APPLE) -# attention a changer pour chercher la bonne version automatiquement - SET(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk" CACHE STRING "developer SDK") - SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined -Wl,dynamic_lookup") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMAC_OSX") - SET(CMAKE_OSX_ARCHITECTURES x86_64) -ENDIF(APPLE) - - - - -SET(SCHNApps_ROOT_DIR ${CGoGN_ROOT_DIR}/SCHNApps) -SET(EXECUTABLE_OUTPUT_PATH ${SCHNApps_ROOT_DIR}/bin) -SET(LIBRARY_OUTPUT_PATH ${SCHNApps_ROOT_DIR}/lib) - - -file( - GLOB_RECURSE - SCHNApps_FILES - ${SCHNApps_ROOT_DIR}/src/*.cpp - ${SCHNApps_ROOT_DIR}/include/*.h - ${SCHNApps_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - SCHNApps_UI_FILES - ${SCHNApps_ROOT_DIR}/forms/*.ui -) - -SET(SCHNApps_QOBJECT_FILES - ${SCHNApps_ROOT_DIR}/include/camera.h - ${SCHNApps_ROOT_DIR}/include/mapHandler.h - ${SCHNApps_ROOT_DIR}/include/plugin.h - ${SCHNApps_ROOT_DIR}/include/view.h - ${SCHNApps_ROOT_DIR}/include/window.h - ${SCHNApps_ROOT_DIR}/include/viewButtonArea.h - ${SCHNApps_ROOT_DIR}/include/dialogs/camerasDialog.h - ${SCHNApps_ROOT_DIR}/include/dialogs/pluginsDialog.h - ${SCHNApps_ROOT_DIR}/include/dialogs/mapsDialog.h - ${SCHNApps_ROOT_DIR}/include/dialogs/cameraViewDialog.h - ${SCHNApps_ROOT_DIR}/include/dialogs/pluginsViewDialog.h - ${SCHNApps_ROOT_DIR}/include/dialogs/mapsViewDialog.h - ${SCHNApps_ROOT_DIR}/include/colorComboBox.h -) - - - -ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/Release Release) -IF (NOT WIN32) - ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/Debug Debug) -ENDIF (NOT WIN32) diff --git a/SCHNApps_old/Debug/CMakeLists.txt b/SCHNApps_old/Debug/CMakeLists.txt deleted file mode 100644 index 3d9edd0c7..000000000 --- a/SCHNApps_old/Debug/CMakeLists.txt +++ /dev/null @@ -1,44 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET(CMAKE_BUILD_TYPE Debug) - -IF(WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Release ) -ELSE (WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Debug ${CGoGN_ROOT_DIR}/lib/Release ) -ENDIF (WIN32) - -INCLUDE_DIRECTORIES( - ${CGoGN_ROOT_DIR}/include - ${SCHNApps_ROOT_DIR}/include - ${EXT_INCLUDES} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} -) - -QT4_WRAP_UI( UIC_FILES - ${SCHNApps_UI_FILES} -) - -QT4_WRAP_CPP( MOC_FILES - ${SCHNApps_QOBJECT_FILES} -) - -QT4_ADD_RESOURCES( RCC_FILES - ${SCHNApps_ROOT_DIR}/resources/resources.qrc -) - -ADD_EXECUTABLE( SCHNAppsD - ${SCHNApps_FILES} - ${UIC_FILES} - ${MOC_FILES} - ${RCC_FILES} -) - -TARGET_LINK_LIBRARIES( SCHNAppsD - ${CGoGN_LIBS_D} - ${EXT_LIBS} -) - - -ADD_SUBDIRECTORY(${SCHNApps_ROOT_DIR}/Plugins PluginsD) diff --git a/SCHNApps_old/Plugins/CMakeLists.txt b/SCHNApps_old/Plugins/CMakeLists.txt deleted file mode 100644 index be703257c..000000000 --- a/SCHNApps_old/Plugins/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -ADD_SUBDIRECTORY(importSurface) -ADD_SUBDIRECTORY(importVolume) -ADD_SUBDIRECTORY(differentialProperties) -ADD_SUBDIRECTORY(render) -ADD_SUBDIRECTORY(renderVector) -ADD_SUBDIRECTORY(renderScalar) -ADD_SUBDIRECTORY(renderExplod) -ADD_SUBDIRECTORY(renderTopoSurface) -ADD_SUBDIRECTORY(subdivideSurface) -ADD_SUBDIRECTORY(surfaceDeformation) - diff --git a/SCHNApps_old/Plugins/differentialProperties/CMakeLists.txt b/SCHNApps_old/Plugins/differentialProperties/CMakeLists.txt deleted file mode 100644 index e97051286..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME DifferentialProperties ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/differentialProperties ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/differentialProperties.h - ${PLUGIN_ROOT_DIR}/include/computeNormalDialog.h - ${PLUGIN_ROOT_DIR}/include/computeCurvatureDialog.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/differentialProperties/forms/computeCurvatureDialog.ui b/SCHNApps_old/Plugins/differentialProperties/forms/computeCurvatureDialog.ui deleted file mode 100644 index bcfc9a100..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/forms/computeCurvatureDialog.ui +++ /dev/null @@ -1,354 +0,0 @@ - - - ComputeCurvatureDialog - - - - 0 - 0 - 568 - 442 - - - - Compute Curvature - - - - - - - - - - - Position attribute : - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - Normal attribute : - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - - Computed attributes - - - - - - - 75 - true - true - - - - Kmax : - - - - - - - Existing attribute : - - - - - - - - 0 - 0 - - - - - - - - New attribute : - - - - - - - - - - - 75 - true - true - - - - kmax : - - - - - - - Existing attribute : - - - - - - - - 0 - 0 - - - - - - - - New attribute : - - - - - - - - - - - 75 - true - true - - - - Kmin : - - - - - - - Existing attribute : - - - - - - - - 0 - 0 - - - - - - - - New attribute : - - - - - - - - - - - 75 - true - true - - - - kmin : - - - - - - - Existing attribute : - - - - - - - - 0 - 0 - - - - - - - - New attribute : - - - - - - - - - - - 75 - true - true - - - - Knormal : - - - - - - - Existing attribute : - - - - - - - - 0 - 0 - - - - - - - - New attribute : - - - - - - - - - - compute kmean - - - - - - - compute kgaussian - - - - - - - - - - - - Cancel - - - - - - - Apply - - - - - - - OK - - - - - - - - - - - button_ok - clicked() - ComputeCurvatureDialog - accept() - - - 232 - 283 - - - 140 - 156 - - - - - button_cancel - clicked() - ComputeCurvatureDialog - reject() - - - 52 - 283 - - - 140 - 156 - - - - - diff --git a/SCHNApps_old/Plugins/differentialProperties/forms/computeNormalDialog.ui b/SCHNApps_old/Plugins/differentialProperties/forms/computeNormalDialog.ui deleted file mode 100644 index 0afad975a..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/forms/computeNormalDialog.ui +++ /dev/null @@ -1,143 +0,0 @@ - - - ComputeNormalDialog - - - - 0 - 0 - 472 - 276 - - - - Compute Normal - - - - - - - - - - - Position attribute : - - - - - - - - 0 - 0 - - - - - - - - - - Normal attribute - - - - - - - - Existing attribute : - - - - - - - - 0 - 0 - - - - - - - - New attribute : - - - - - - - - - - - - - - - - - Cancel - - - - - - - Apply - - - - - - - OK - - - - - - - - - - - button_ok - clicked() - ComputeNormalDialog - accept() - - - 232 - 283 - - - 140 - 156 - - - - - button_cancel - clicked() - ComputeNormalDialog - reject() - - - 52 - 283 - - - 140 - 156 - - - - - diff --git a/SCHNApps_old/Plugins/differentialProperties/include/computeCurvatureDialog.h b/SCHNApps_old/Plugins/differentialProperties/include/computeCurvatureDialog.h deleted file mode 100644 index 19808a5cf..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/include/computeCurvatureDialog.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _COMPUTECURVATURE_DIALOG_H_ -#define _COMPUTECURVATURE_DIALOG_H_ - -#include "ui_computeCurvatureDialog.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class MapHandlerGen; - -class ComputeCurvatureDialog : public QDialog, public Ui::ComputeCurvatureDialog -{ - Q_OBJECT - -public: - ComputeCurvatureDialog(Window* w); - -private: - Window* m_window; - MapHandlerGen* m_selectedMap; - -public slots: - void selectedMapChanged(); - void addMapToList(MapHandlerGen* m); - void removeMapFromList(MapHandlerGen* m); - void addAttributeToList(unsigned int orbit, const QString& nameAttr); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/differentialProperties/include/computeNormalDialog.h b/SCHNApps_old/Plugins/differentialProperties/include/computeNormalDialog.h deleted file mode 100644 index 9a65c05f6..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/include/computeNormalDialog.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _COMPUTENORMAL_DIALOG_H_ -#define _COMPUTENORMAL_DIALOG_H_ - -#include "ui_computeNormalDialog.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class MapHandlerGen; - -class ComputeNormalDialog : public QDialog, public Ui::ComputeNormalDialog -{ - Q_OBJECT - -public: - ComputeNormalDialog(Window* w); - -private: - Window* m_window; - MapHandlerGen* m_selectedMap; - -public slots: - void selectedMapChanged(); - void addMapToList(MapHandlerGen* m); - void removeMapFromList(MapHandlerGen* m); - void addAttributeToList(unsigned int orbit, const QString& nameAttr); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/differentialProperties/include/differentialProperties.h b/SCHNApps_old/Plugins/differentialProperties/include/differentialProperties.h deleted file mode 100644 index dbb053ec1..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/include/differentialProperties.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef _DIFFERENTIALPROPERTIES_PLUGIN_H_ -#define _DIFFERENTIALPROPERTIES_PLUGIN_H_ - -#include "plugin.h" - -#include "computeNormalDialog.h" -#include "computeCurvatureDialog.h" - - -using namespace CGoGN; -using namespace SCHNApps; - - -class DifferentialPropertiesPlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - DifferentialPropertiesPlugin() - { - setProvidesRendering(false); - } - - ~DifferentialPropertiesPlugin() - {} - - virtual bool enable(); - virtual void disable() {} - - virtual void redraw(View *view) {} - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -public slots: - void mapAdded(MapHandlerGen* map); - void mapRemoved(MapHandlerGen* map); - void attributeModified(unsigned int orbit, QString nameAttr); - - void openComputeNormalDialog(); - void openComputeCurvatureDialog(); - - void computeNormalFromDialog(); - void computeCurvatureFromDialog(); - - void computeNormal(const QString& mapName, - const QString& positionAttributeName = "position", - const QString& normalAttributeName = "normal", - bool autoUpdate = true); - - void computeCurvature( - const QString& mapName, - const QString& positionAttributeName = "position", - const QString& normalAttributeName = "normal", - const QString& KmaxAttributeName = "Kmax", - const QString& kmaxAttributeName = "kmax", - const QString& KminAttributeName = "Kmin", - const QString& kminAttributeName = "kmin", - const QString& KnormalAttributeName = "Knormal", - bool compute_kmean = true, - bool compute_kgaussian = true, - bool autoUpdate = true - ); - -private: - ComputeNormalDialog* m_computeNormalDialog; - ComputeCurvatureDialog* m_computeCurvatureDialog; - - QAction* m_computeNormalAction; - QAction* m_computeCurvatureAction; - - struct ComputeNormalParameters - { - ComputeNormalParameters() {} - ComputeNormalParameters(const QString& p, const QString& n, bool update) : - positionName(p), normalName(n), autoUpdate(update) - {} - QString positionName; - QString normalName; - bool autoUpdate; - }; - QHash computeNormalLastParameters; - - struct ComputeCurvatureParameters - { - ComputeCurvatureParameters() {} - ComputeCurvatureParameters( - const QString& p, const QString& n, - const QString& Kmax, const QString& kmax, const QString& Kmin, const QString& kmin, const QString& Knormal, - bool kmean, bool kgaussian, bool update) : - positionName(p), normalName(n), - KmaxName(Kmax), kmaxName(kmax), KminName(Kmin), kminName(kmin), KnormalName(Knormal), - compute_kmean(kmean), compute_kgaussian(kgaussian), autoUpdate(update) - {} - QString positionName; - QString normalName; - QString KmaxName; - QString kmaxName; - QString KminName; - QString kminName; - QString KnormalName; - bool compute_kmean; - bool compute_kgaussian; - bool autoUpdate; - }; - QHash computeCurvatureLastParameters; -}; - -#endif diff --git a/SCHNApps_old/Plugins/differentialProperties/src/computeCurvatureDialog.cpp b/SCHNApps_old/Plugins/differentialProperties/src/computeCurvatureDialog.cpp deleted file mode 100644 index 855dd5c7b..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/src/computeCurvatureDialog.cpp +++ /dev/null @@ -1,153 +0,0 @@ -#include "computeCurvatureDialog.h" - -#include "differentialProperties.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -ComputeCurvatureDialog::ComputeCurvatureDialog(Window* w) : - m_window(w), - m_selectedMap(NULL) -{ - setupUi(this); - - KmaxAttributeName->setText("Kmax"); - kmaxAttributeName->setText("kmax"); - KminAttributeName->setText("Kmin"); - kminAttributeName->setText("kmin"); - KnormalAttributeName->setText("Knormal"); - - connect(m_window, SIGNAL(mapAdded(MapHandlerGen*)), this, SLOT(addMapToList(MapHandlerGen*))); - connect(m_window, SIGNAL(mapRemoved(MapHandlerGen*)), this, SLOT(removeMapFromList(MapHandlerGen*))); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - - const QList& maps = m_window->getMapsList(); - foreach(MapHandlerGen* map, maps) - { - QListWidgetItem* item = new QListWidgetItem(map->getName(), mapList); - item->setCheckState(Qt::Unchecked); - } -} - -void ComputeCurvatureDialog::selectedMapChanged() -{ - if(m_selectedMap) - disconnect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - { - combo_positionAttribute->clear(); - combo_normalAttribute->clear(); - combo_KmaxAttribute->clear(); - combo_KminAttribute->clear(); - combo_KnormalAttribute->clear(); - combo_kmaxAttribute->clear(); - combo_kminAttribute->clear(); - - const QString& mapname = currentItems[0]->text(); - MapHandlerGen* mh = m_window->getMap(mapname); - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - QString realTypeName = QString::fromStdString(nameOfType(PFP2::REAL())); - - unsigned int j = 0; - unsigned int k = 0; - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - combo_positionAttribute->addItem(i.key()); - if(i.key() == "position") // try to select a position attribute named "position" - combo_positionAttribute->setCurrentIndex(j); - - combo_normalAttribute->addItem(i.key()); - if(i.key() == "normal") // try to select a normal attribute named "normal" - combo_normalAttribute->setCurrentIndex(j); - - combo_KmaxAttribute->addItem(i.key()); - if(i.key() == "Kmax") // try to select a normal attribute named "Kmax" - combo_KmaxAttribute->setCurrentIndex(j); - - combo_KminAttribute->addItem(i.key()); - if(i.key() == "Kmin") // try to select a normal attribute named "Kmin" - combo_KminAttribute->setCurrentIndex(j); - - combo_KnormalAttribute->addItem(i.key()); - if(i.key() == "Knormal") // try to select a normal attribute named "Knormal" - combo_KnormalAttribute->setCurrentIndex(j); - - ++j; - } - else if(i.value() == realTypeName) - { - combo_kmaxAttribute->addItem(i.key()); - if(i.key() == "kmax") // try to select a normal attribute named "kmax" - combo_kmaxAttribute->setCurrentIndex(k); - - combo_kminAttribute->addItem(i.key()); - if(i.key() == "kmin") // try to select a normal attribute named "kmin" - combo_kminAttribute->setCurrentIndex(k); - - ++k; - } - } - - m_selectedMap = mh; - connect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - } - else - m_selectedMap = NULL; -} - -void ComputeCurvatureDialog::addMapToList(MapHandlerGen* m) -{ - QListWidgetItem* item = new QListWidgetItem(m->getName(), mapList); - item->setCheckState(Qt::Unchecked); -} - -void ComputeCurvatureDialog::removeMapFromList(MapHandlerGen* m) -{ - QList items = mapList->findItems(m->getName(), Qt::MatchExactly); - if(!items.empty()) - delete items[0]; - - if(m_selectedMap == m) - { - disconnect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - m_selectedMap = NULL; - } -} - -void ComputeCurvatureDialog::addAttributeToList(unsigned int orbit, const QString& nameAttr) -{ - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - QString realTypeName = QString::fromStdString(nameOfType(PFP2::REAL())); - - const QString& typeAttr = m_selectedMap->getAttributeTypeName(orbit, nameAttr); - - if(typeAttr == vec3TypeName) - { - combo_positionAttribute->addItem(nameAttr); - combo_normalAttribute->addItem(nameAttr); - combo_KmaxAttribute->addItem(nameAttr); - combo_KminAttribute->addItem(nameAttr); - combo_KnormalAttribute->addItem(nameAttr); - } - else if(typeAttr == realTypeName) - { - combo_kmaxAttribute->addItem(nameAttr); - combo_kminAttribute->addItem(nameAttr); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/differentialProperties/src/computeNormalDialog.cpp b/SCHNApps_old/Plugins/differentialProperties/src/computeNormalDialog.cpp deleted file mode 100644 index 83266fce5..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/src/computeNormalDialog.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "computeNormalDialog.h" - -#include "differentialProperties.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -ComputeNormalDialog::ComputeNormalDialog(Window* w) : - m_window(w), - m_selectedMap(NULL) -{ - setupUi(this); - - normalAttributeName->setText("normal"); - - connect(m_window, SIGNAL(mapAdded(MapHandlerGen*)), this, SLOT(addMapToList(MapHandlerGen*))); - connect(m_window, SIGNAL(mapRemoved(MapHandlerGen*)), this, SLOT(removeMapFromList(MapHandlerGen*))); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - - const QList& maps = m_window->getMapsList(); - foreach(MapHandlerGen* map, maps) - { - QListWidgetItem* item = new QListWidgetItem(map->getName(), mapList); - item->setCheckState(Qt::Unchecked); - } -} - -void ComputeNormalDialog::selectedMapChanged() -{ - if(m_selectedMap) - disconnect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - { - combo_positionAttribute->clear(); - combo_normalAttribute->clear(); - - const QString& mapname = currentItems[0]->text(); - MapHandlerGen* mh = m_window->getMap(mapname); - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - unsigned int j = 0; - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - combo_positionAttribute->addItem(i.key()); - if(i.key() == "position") // try to select a position attribute named "position" - combo_positionAttribute->setCurrentIndex(j); - - combo_normalAttribute->addItem(i.key()); - if(i.key() == "normal") // try to select a normal attribute named "normal" - combo_normalAttribute->setCurrentIndex(j); - - ++j; - } - } - - m_selectedMap = mh; - connect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - } - else - m_selectedMap = NULL; -} - -void ComputeNormalDialog::addMapToList(MapHandlerGen* m) -{ - QListWidgetItem* item = new QListWidgetItem(m->getName(), mapList); - item->setCheckState(Qt::Unchecked); -} - -void ComputeNormalDialog::removeMapFromList(MapHandlerGen* m) -{ - QList items = mapList->findItems(m->getName(), Qt::MatchExactly); - if(!items.empty()) - delete items[0]; - - if(m_selectedMap == m) - { - disconnect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - m_selectedMap = NULL; - } -} - -void ComputeNormalDialog::addAttributeToList(unsigned int orbit, const QString& nameAttr) -{ - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - const QString& typeAttr = m_selectedMap->getAttributeTypeName(orbit, nameAttr); - - if(typeAttr == vec3TypeName) - { - combo_positionAttribute->addItem(nameAttr); - combo_normalAttribute->addItem(nameAttr); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/differentialProperties/src/differentialProperties.cpp b/SCHNApps_old/Plugins/differentialProperties/src/differentialProperties.cpp deleted file mode 100644 index 034473833..000000000 --- a/SCHNApps_old/Plugins/differentialProperties/src/differentialProperties.cpp +++ /dev/null @@ -1,285 +0,0 @@ -#include "differentialProperties.h" - -#include "mapHandler.h" - -#include "Algo/Geometry/normal.h" -#include "Algo/Geometry/curvature.h" - -bool DifferentialPropertiesPlugin::enable() -{ - m_computeNormalDialog = new ComputeNormalDialog(m_window); - m_computeCurvatureDialog = new ComputeCurvatureDialog(m_window); - - m_computeNormalAction = new QAction("Compute Normal", this); - m_computeCurvatureAction = new QAction("Compute Curvature", this); - - addMenuAction("Surface;Differential Properties;Compute Normal", m_computeNormalAction); - addMenuAction("Surface;Differential Properties;Compute Curvature", m_computeCurvatureAction); - - connect(m_computeNormalAction, SIGNAL(triggered()), this, SLOT(openComputeNormalDialog())); - connect(m_computeCurvatureAction, SIGNAL(triggered()), this, SLOT(openComputeCurvatureDialog())); - - connect(m_computeNormalDialog, SIGNAL(accepted()), this, SLOT(computeNormalFromDialog())); - connect(m_computeNormalDialog->button_apply, SIGNAL(clicked()), this, SLOT(computeNormalFromDialog())); - - connect(m_computeCurvatureDialog, SIGNAL(accepted()), this, SLOT(computeCurvatureFromDialog())); - connect(m_computeCurvatureDialog->button_apply, SIGNAL(clicked()), this, SLOT(computeCurvatureFromDialog())); - - connect(m_window, SIGNAL(mapAdded(MapHandlerGen*)), this, SLOT(mapAdded(MapHandlerGen*))); - connect(m_window, SIGNAL(mapRemoved(MapHandlerGen*)), this, SLOT(mapRemoved(MapHandlerGen*))); - - return true; -} - -void DifferentialPropertiesPlugin::mapAdded(MapHandlerGen *map) -{ - connect(map, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -} - -void DifferentialPropertiesPlugin::mapRemoved(MapHandlerGen *map) -{ - disconnect(map, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -} - -void DifferentialPropertiesPlugin::attributeModified(unsigned int orbit, QString nameAttr) -{ - if(orbit == VERTEX) - { - MapHandlerGen* map = static_cast(QObject::sender()); - if(computeNormalLastParameters.contains(map->getName())) - { - ComputeNormalParameters& params = computeNormalLastParameters[map->getName()]; - if(params.autoUpdate && params.positionName == nameAttr) - computeNormal(map->getName(), params.positionName, params.normalName, true); - } - if(computeCurvatureLastParameters.contains(map->getName())) - { - ComputeCurvatureParameters& params = computeCurvatureLastParameters[map->getName()]; - if(params.autoUpdate && (params.positionName == nameAttr || params.normalName == nameAttr)) - computeCurvature( - map->getName(), - params.positionName, params.normalName, - params.KmaxName, params.kmaxName, params.KminName, params.kminName, params.KnormalName, - true - ); - } - } -} - -void DifferentialPropertiesPlugin::openComputeNormalDialog() -{ - m_computeNormalDialog->show(); -} - -void DifferentialPropertiesPlugin::openComputeCurvatureDialog() -{ - m_computeCurvatureDialog->show(); -} - -void DifferentialPropertiesPlugin::computeNormalFromDialog() -{ - QList currentItems = m_computeNormalDialog->mapList->selectedItems(); - if(!currentItems.empty()) - { - const QString& mapName = currentItems[0]->text(); - - QString positionName = m_computeNormalDialog->combo_positionAttribute->currentText(); - - QString normalName; - if(m_computeNormalDialog->normalAttributeName->text().isEmpty()) - normalName = m_computeNormalDialog->combo_normalAttribute->currentText(); - else - normalName = m_computeNormalDialog->normalAttributeName->text(); - - bool autoUpdate = (currentItems[0]->checkState() == Qt::Checked); - - computeNormal(mapName, positionName, normalName, autoUpdate); - } -} - -void DifferentialPropertiesPlugin::computeCurvatureFromDialog() -{ - QList currentItems = m_computeCurvatureDialog->mapList->selectedItems(); - if(!currentItems.empty()) - { - const QString& mapName = currentItems[0]->text(); - - QString positionName = m_computeCurvatureDialog->combo_positionAttribute->currentText(); - QString normalName = m_computeCurvatureDialog->combo_normalAttribute->currentText(); - - QString KmaxName; - if(m_computeCurvatureDialog->KmaxAttributeName->text().isEmpty()) - KmaxName = m_computeCurvatureDialog->combo_KmaxAttribute->currentText(); - else - KmaxName = m_computeCurvatureDialog->KmaxAttributeName->text(); - - QString kmaxName; - if(m_computeCurvatureDialog->kmaxAttributeName->text().isEmpty()) - kmaxName = m_computeCurvatureDialog->combo_kmaxAttribute->currentText(); - else - kmaxName = m_computeCurvatureDialog->kmaxAttributeName->text(); - - QString KminName; - if(m_computeCurvatureDialog->KminAttributeName->text().isEmpty()) - KminName = m_computeCurvatureDialog->combo_KminAttribute->currentText(); - else - KminName = m_computeCurvatureDialog->KminAttributeName->text(); - - QString kminName; - if(m_computeCurvatureDialog->kminAttributeName->text().isEmpty()) - kminName = m_computeCurvatureDialog->combo_kminAttribute->currentText(); - else - kminName = m_computeCurvatureDialog->kminAttributeName->text(); - - QString KnormalName; - if(m_computeCurvatureDialog->KnormalAttributeName->text().isEmpty()) - KnormalName = m_computeCurvatureDialog->combo_KnormalAttribute->currentText(); - else - KnormalName = m_computeCurvatureDialog->KnormalAttributeName->text(); - - bool compute_kmean = (m_computeCurvatureDialog->check_computeKmean->checkState() == Qt::Checked); - bool compute_kgaussian = (m_computeCurvatureDialog->check_computeKgaussian->checkState() == Qt::Checked); - bool autoUpdate = (currentItems[0]->checkState() == Qt::Checked); - - computeCurvature( - mapName, - positionName, normalName, - KmaxName, kmaxName, KminName, kminName, KnormalName, - compute_kmean, compute_kgaussian, - autoUpdate - ); - } -} - -void DifferentialPropertiesPlugin::computeNormal( - const QString& mapName, - const QString& positionAttributeName, - const QString& normalAttributeName, - bool autoUpdate) -{ - MapHandler* mh = static_cast*>(m_window->getMap(mapName)); - if(mh == NULL) - return; - - VertexAttribute position = mh->getAttribute(positionAttributeName); - if(!position.isValid()) - return; - - VertexAttribute normal = mh->getAttribute(normalAttributeName); - if(!normal.isValid()) - normal = mh->addAttribute(normalAttributeName); - - PFP2::MAP* map = mh->getMap(); - Algo::Surface::Geometry::computeNormalVertices(*map, position, normal); - - computeNormalLastParameters[mapName] = - ComputeNormalParameters(positionAttributeName, normalAttributeName, autoUpdate); - - mh->createVBO(normal); - - mh->notifyAttributeModification(normal); -} - -void DifferentialPropertiesPlugin::computeCurvature( - const QString& mapName, - const QString& positionAttributeName, - const QString& normalAttributeName, - const QString& KmaxAttributeName, - const QString& kmaxAttributeName, - const QString& KminAttributeName, - const QString& kminAttributeName, - const QString& KnormalAttributeName, - bool compute_kmean, - bool compute_kgaussian, - bool autoUpdate) -{ - MapHandler* mh = static_cast*>(m_window->getMap(mapName)); - if(mh == NULL) - return; - - VertexAttribute position = mh->getAttribute(positionAttributeName); - if(!position.isValid()) - return; - - VertexAttribute normal = mh->getAttribute(normalAttributeName); - if(!normal.isValid()) - return; - - VertexAttribute Kmax = mh->getAttribute(KmaxAttributeName); - if(!Kmax.isValid()) - Kmax = mh->addAttribute(KmaxAttributeName); - - VertexAttribute kmax = mh->getAttribute(kmaxAttributeName); - if(!kmax.isValid()) - kmax = mh->addAttribute(kmaxAttributeName); - - VertexAttribute Kmin = mh->getAttribute(KminAttributeName); - if(!Kmin.isValid()) - Kmin = mh->addAttribute(KminAttributeName); - - VertexAttribute kmin = mh->getAttribute(kminAttributeName); - if(!kmin.isValid()) - kmin = mh->addAttribute(kminAttributeName); - - VertexAttribute Knormal = mh->getAttribute(KnormalAttributeName); - if(!Knormal.isValid()) - Knormal = mh->addAttribute(KnormalAttributeName); - - EdgeAttribute edgeAngle = mh->getAttribute("edgeAngle"); - if(!edgeAngle.isValid()) - edgeAngle = mh->addAttribute("edgeAngle"); - - PFP2::MAP* map = mh->getMap(); - Algo::Surface::Geometry::computeAnglesBetweenNormalsOnEdges(*map, position, edgeAngle); - Algo::Surface::Geometry::computeCurvatureVertices_NormalCycles_Projected(*map, 0.01f * mh->getBBdiagSize(), position, normal, edgeAngle, kmax, kmin, Kmax, Kmin, Knormal); - - computeCurvatureLastParameters[mapName] = - ComputeCurvatureParameters( - positionAttributeName, normalAttributeName, - KmaxAttributeName, kmaxAttributeName, KminAttributeName, kminAttributeName, KnormalAttributeName, - compute_kmean, compute_kgaussian, autoUpdate); - - mh->createVBO(Kmax); - mh->createVBO(kmax); - mh->createVBO(Kmin); - mh->createVBO(kmin); - mh->createVBO(Knormal); - - mh->notifyAttributeModification(Kmax); - mh->notifyAttributeModification(kmax); - mh->notifyAttributeModification(Kmin); - mh->notifyAttributeModification(kmin); - mh->notifyAttributeModification(Knormal); - - if(compute_kmean) - { - VertexAttribute kmean = mh->getAttribute("kmean"); - if(!kmean.isValid()) - kmean = mh->addAttribute("kmean"); - - for(unsigned int i = kmin.begin(); i != kmin.end(); kmin.next(i)) - kmean[i] = (kmin[i] + kmax[i]) / 2.0; - - mh->createVBO(kmean); - mh->notifyAttributeModification(kmean); - } - - if(compute_kgaussian) - { - VertexAttribute kgaussian = mh->getAttribute("kgaussian"); - if(!kgaussian.isValid()) - kgaussian = mh->addAttribute("kgaussian"); - - for(unsigned int i = kmin.begin(); i != kmin.end(); kmin.next(i)) - kgaussian[i] = kmin[i] * kmax[i]; - - mh->createVBO(kgaussian); - mh->notifyAttributeModification(kgaussian); - } -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(DifferentialPropertiesPlugin, DifferentialPropertiesPlugin) -#else -Q_EXPORT_PLUGIN2(DifferentialPropertiesPluginD, DifferentialPropertiesPlugin) -#endif diff --git a/SCHNApps_old/Plugins/importSurface/CMakeLists.txt b/SCHNApps_old/Plugins/importSurface/CMakeLists.txt deleted file mode 100644 index 55230abac..000000000 --- a/SCHNApps_old/Plugins/importSurface/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME ImportSurface ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/importSurface ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/importSurface.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/importSurface/include/importSurface.h b/SCHNApps_old/Plugins/importSurface/include/importSurface.h deleted file mode 100644 index e9e2cbcb9..000000000 --- a/SCHNApps_old/Plugins/importSurface/include/importSurface.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef _IMPORTSURFACE_PLUGIN_H_ -#define _IMPORTSURFACE_PLUGIN_H_ - -#include "plugin.h" - - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class ImportSurfacePlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - ImportSurfacePlugin() - { - setProvidesRendering(false); - } - - ~ImportSurfacePlugin() - {} - - virtual bool enable(); - virtual void disable() {} - - virtual void redraw(View *view) {} - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -public slots: - MapHandlerGen* importFromFile(const QString& fileName); - void importFromFileDialog(); - -private: - QAction* importAction; -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/importSurface/src/importSurface.cpp b/SCHNApps_old/Plugins/importSurface/src/importSurface.cpp deleted file mode 100644 index 2719d6505..000000000 --- a/SCHNApps_old/Plugins/importSurface/src/importSurface.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "importSurface.h" - -#include "mapHandler.h" - -#include "Algo/Import/import.h" - -#include -#include - -namespace CGoGN -{ - -namespace SCHNApps -{ - -bool ImportSurfacePlugin::enable() -{ - importAction = new QAction("import", this); - addMenuAction("Surface;Import", importAction); - connect(importAction, SIGNAL(triggered()), this, SLOT(importFromFileDialog())); - return true; -} - -MapHandlerGen* ImportSurfacePlugin::importFromFile(const QString& fileName) -{ - QFileInfo fi(fileName); - if(fi.exists()) - { - MapHandlerGen* mhg = m_window->addMap(fi.baseName(), 2); - if(mhg) - { - MapHandler* mh = static_cast*>(mhg); - PFP2::MAP* map = mh->getMap(); - - std::vector attrNames; - Algo::Surface::Import::importMesh(*map, fileName.toStdString(), attrNames); - - // get vertex position attribute - VertexAttribute position = map->getAttribute(attrNames[0]); - mh->registerAttribute(position); - - // create position VBO - mh->createVBO(position); - - // update corresponding VBO & emit attribute update signal - mh->notifyAttributeModification(position); - - // compute map bounding box - mh->updateBB(position); - } - return mhg; - } - else - return NULL; -} - -void ImportSurfacePlugin::importFromFileDialog() -{ - QStringList fileNames = QFileDialog::getOpenFileNames(m_window, "Import surfaces", m_window->getAppPath(), "Surface mesh Files (*.ply *.off *.trian)"); - QStringList::Iterator it = fileNames.begin(); - while(it != fileNames.end()) { - importFromFile(*it); - ++it; - } -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(ImportSurfacePlugin, ImportSurfacePlugin) -#else -Q_EXPORT_PLUGIN2(ImportSurfacePluginD, ImportSurfacePlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/importVolume/CMakeLists.txt b/SCHNApps_old/Plugins/importVolume/CMakeLists.txt deleted file mode 100644 index 2786ef9bf..000000000 --- a/SCHNApps_old/Plugins/importVolume/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME ImportVolume ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/importVolume ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/importVolume.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/importVolume/include/importVolume.h b/SCHNApps_old/Plugins/importVolume/include/importVolume.h deleted file mode 100644 index d35c926f3..000000000 --- a/SCHNApps_old/Plugins/importVolume/include/importVolume.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef _IMPORTVOLUME_PLUGIN_H_ -#define _IMPORTVOLUME_PLUGIN_H_ - -#include "plugin.h" - - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class ImportVolumePlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - ImportVolumePlugin() - { - setProvidesRendering(false); - } - - ~ImportVolumePlugin() - {} - - virtual bool enable(); - virtual void disable() {} - - virtual void redraw(View *view) {} - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -public slots: - MapHandlerGen* importFromFile(const QString& fileName); - void importFromFileDialog(); - -private: - QAction* importAction; -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/importVolume/src/importVolume.cpp b/SCHNApps_old/Plugins/importVolume/src/importVolume.cpp deleted file mode 100644 index 1fc52301c..000000000 --- a/SCHNApps_old/Plugins/importVolume/src/importVolume.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "importVolume.h" - -#include "mapHandler.h" - -#include "Algo/Import/import.h" - -#include -#include - -namespace CGoGN -{ - -namespace SCHNApps -{ - -bool ImportVolumePlugin::enable() -{ - importAction = new QAction("import", this); - addMenuAction("Volume;Import", importAction); - connect(importAction, SIGNAL(triggered()), this, SLOT(importFromFileDialog())); - return true; -} - -MapHandlerGen* ImportVolumePlugin::importFromFile(const QString& fileName) -{ - QFileInfo fi(fileName); - if(fi.exists()) - { - MapHandlerGen* mhg = m_window->addMap(fi.baseName(), 3); - if(mhg) - { - MapHandler* mh = static_cast*>(mhg); - PFP3::MAP* map = mh->getMap(); - - std::vector attrNames ; - Algo::Volume::Import::importMesh(*map, fileName.toStdString(), attrNames); - - // get vertex position attribute - VertexAttribute position = map->getAttribute(attrNames[0]); - mh->registerAttribute(position); - - // create position VBO - mh->createVBO(position); - - // update corresponding VBO & emit attribute update signal - mh->notifyAttributeModification(position); - - // compute map bounding box - mh->updateBB(position); - } - return mhg; - } - else - return NULL; -} - -void ImportVolumePlugin::importFromFileDialog() -{ - QStringList fileNames = QFileDialog::getOpenFileNames(m_window, "Import volumes", m_window->getAppPath(), "Volume mesh Files (*.node *.ts *.off *.tet)"); - QStringList::Iterator it = fileNames.begin(); - while(it != fileNames.end()) { - importFromFile(*it); - ++it; - } -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(ImportVolumePlugin, ImportVolumePlugin) -#else -Q_EXPORT_PLUGIN2(ImportVolumePluginD, ImportVolumePlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/plugins_cmake.txt b/SCHNApps_old/Plugins/plugins_cmake.txt deleted file mode 100644 index 4037e6e65..000000000 --- a/SCHNApps_old/Plugins/plugins_cmake.txt +++ /dev/null @@ -1,52 +0,0 @@ - -QT4_WRAP_UI( PLUGIN_UIC_FILES ${PLUGIN_UI_FILES} ) - -QT4_WRAP_CPP( PLUGIN_MOC_FILES ${PLUGIN_QOBJECT_FILES} ) - -IF( ${CMAKE_BUILD_TYPE} STREQUAL Debug ) - - ADD_DEFINITIONS(-DDEBUG) - - IF(WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Release ) - ELSE (WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Debug ${CGoGN_ROOT_DIR}/lib/Release ) - ENDIF (WIN32) - - ADD_LIBRARY( ${PLUGIN_NAME}D SHARED - ${PLUGIN_FILES} - ${PLUGIN_UIC_FILES} - ${PLUGIN_MOC_FILES} - ) - - TARGET_LINK_LIBRARIES( ${PLUGIN_NAME}D - ${CGoGN_LIBS_D} - ${EXT_LIBS} - ) - - ADD_DEPENDENCIES( ${PLUGIN_NAME}D SCHNAppsD ) - - SET_TARGET_PROPERTIES( ${PLUGIN_NAME}D PROPERTIES COMPILE_DEFINITIONS "DEBUG" ) - -ELSE ( ${CMAKE_BUILD_TYPE} STREQUAL Debug ) - - IF(WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Release ) - ELSE (WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Release ) - ENDIF (WIN32) - - ADD_LIBRARY( ${PLUGIN_NAME} SHARED - ${PLUGIN_FILES} - ${PLUGIN_UIC_FILES} - ${PLUGIN_MOC_FILES} - ) - - TARGET_LINK_LIBRARIES( ${PLUGIN_NAME} - ${CGoGN_LIBS_R} - ${EXT_LIBS} - ) - - ADD_DEPENDENCIES( ${PLUGIN_NAME} SCHNApps ) - -ENDIF ( ${CMAKE_BUILD_TYPE} STREQUAL Debug ) diff --git a/SCHNApps_old/Plugins/render/CMakeLists.txt b/SCHNApps_old/Plugins/render/CMakeLists.txt deleted file mode 100644 index 28f684407..000000000 --- a/SCHNApps_old/Plugins/render/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME Render ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/render ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/render.h - ${PLUGIN_ROOT_DIR}/include/renderDockTab.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/render/forms/render.ui b/SCHNApps_old/Plugins/render/forms/render.ui deleted file mode 100644 index 39f9b5c68..000000000 --- a/SCHNApps_old/Plugins/render/forms/render.ui +++ /dev/null @@ -1,145 +0,0 @@ - - - RenderDockWidget - - - - 0 - 0 - 174 - 545 - - - - Form - - - - - - - - - QLayout::SetDefaultConstraint - - - - - - 0 - 0 - - - - - - - - Position : - - - - - - - - 0 - 0 - - - - - - - - Normal : - - - - - - - - - - - - render vertices - - - - - - - 50 - - - Qt::Horizontal - - - - - - - render edges - - - - - - - render faces - - - true - - - - - - - - - Flat - - - true - - - group_faceShading - - - - - - - Phong - - - group_faceShading - - - - - - - - - Qt::Vertical - - - - 156 - 161 - - - - - - - - - - - - diff --git a/SCHNApps_old/Plugins/render/include/render.h b/SCHNApps_old/Plugins/render/include/render.h deleted file mode 100644 index 05031f0ac..000000000 --- a/SCHNApps_old/Plugins/render/include/render.h +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef _RENDER_PLUGIN_H_ -#define _RENDER_PLUGIN_H_ - -#include "plugin.h" -#include "renderDockTab.h" - -#include "Utils/Shaders/shaderFlat.h" -#include "Utils/Shaders/shaderPhong.h" -#include "Utils/Shaders/shaderSimpleColor.h" -#include "Utils/pointSprite.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -enum FaceShadingStyle -{ - FLAT = 0, - PHONG = 1 -}; - -struct PerMapParameterSet -{ - PerMapParameterSet() : - positionVBO(NULL), - normalVBO(NULL), - verticesScaleFactor(1.0f), - renderVertices(false), - renderEdges(false), - renderFaces(true), - faceStyle(FLAT) - {} - - PerMapParameterSet(MapHandlerGen* map); - - Utils::VBO* positionVBO; - Utils::VBO* normalVBO; - float verticesScaleFactor; - bool renderVertices; - bool renderEdges; - bool renderFaces; - FaceShadingStyle faceStyle; -}; - -struct ParameterSet -{ - ParameterSet() : selectedMap(NULL) - {} - - QHash perMap; - MapHandlerGen* selectedMap; -}; - - -class RenderPlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - RenderPlugin() - { - setProvidesRendering(true); - } - - ~RenderPlugin() - {} - - virtual bool enable(); - virtual void disable(); - - virtual void redraw(View *view); - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -protected: - RenderDockTab* m_dockTab; - QHash h_viewParams; - - CGoGN::Utils::ShaderFlat* m_flatShader; - CGoGN::Utils::ShaderPhong* m_phongShader; - CGoGN::Utils::ShaderSimpleColor* m_simpleColorShader; - CGoGN::Utils::PointSprite* m_pointSprite; - -public slots: - void viewLinked(View* view, Plugin* plugin); - void viewUnlinked(View* view, Plugin* plugin); - void currentViewChanged(View* view); - - void mapLinked(MapHandlerGen* m); - void mapUnlinked(MapHandlerGen* m); - -protected: - void addManagedMap(View *v, MapHandlerGen* m); - void removeManagedMap(View *v, MapHandlerGen* m); - -public slots: - - void vboAdded(Utils::VBO* vbo); - void vboRemoved(Utils::VBO* vbo); - - void changeSelectedMap(View* view, MapHandlerGen* map); - - void changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI = false); - void changeNormalVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI = false); - void changeRenderVertices(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changeVerticesScaleFactor(View* view, MapHandlerGen* map, float f, bool fromUI = false); - void changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changeFacesStyle(View* view, MapHandlerGen* map, FaceShadingStyle style, bool fromUI = false); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/render/include/renderDockTab.h b/SCHNApps_old/Plugins/render/include/renderDockTab.h deleted file mode 100644 index c85911aae..000000000 --- a/SCHNApps_old/Plugins/render/include/renderDockTab.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef _RENDER_DOCK_TAB_H_ -#define _RENDER_DOCK_TAB_H_ - -#include "ui_render.h" -#include "Utils/vbo.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class RenderPlugin; -struct ParameterSet; - -class RenderDockTab : public QWidget, public Ui::RenderDockWidget -{ - Q_OBJECT - -public: - RenderDockTab(Window* w, RenderPlugin* p); - -private: - Window* m_window; - RenderPlugin* m_plugin; - ParameterSet* m_currentParams; - bool b_refreshingUI; - -public slots: - void refreshUI(ParameterSet* params); - - void selectedMapChanged(); - - void positionVBOChanged(int index); - void normalVBOChanged(int index); - void renderVerticesChanged(bool b); - void verticesScaleFactorChanged(int i); - void renderEdgesChanged(bool b); - void renderFacesChanged(bool b); - void faceStyleChanged(QAbstractButton* b); - - void addVBOToList(Utils::VBO* vbo); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/render/src/render.cpp b/SCHNApps_old/Plugins/render/src/render.cpp deleted file mode 100644 index 86926324a..000000000 --- a/SCHNApps_old/Plugins/render/src/render.cpp +++ /dev/null @@ -1,349 +0,0 @@ -#include "render.h" - -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -PerMapParameterSet::PerMapParameterSet(MapHandlerGen* map) : - positionVBO(NULL), - normalVBO(NULL), - verticesScaleFactor(1.0f), - renderVertices(false), - renderEdges(false), - renderFaces(true), - faceStyle(FLAT) -{ - bool positionFound = false; - bool normalFound = false; - - QList vbos = map->getVBOList(); - for(int i = 0; i < vbos.count(); ++i) - { - if(vbos[i]->dataSize() == 3) - { - if(!positionFound) positionVBO = vbos[i]; - if(vbos[i]->name() == "position") // try to select a VBO named "position" - { - positionVBO = vbos[i]; - positionFound = true; - } - - if(!normalFound) normalVBO = vbos[i]; - if(vbos[i]->name() == "normal") // try to select a VBO named "normal" - { - normalVBO = vbos[i]; - normalFound = true; - } - } - } -} - - -bool RenderPlugin::enable() -{ - m_dockTab = new RenderDockTab(m_window, this); - addTabInDock(m_dockTab, "Render"); - - m_flatShader = new CGoGN::Utils::ShaderFlat(); - m_flatShader->setAmbiant(CGoGN::Geom::Vec4f(0.2f, 0.2f, 0.2f, 0.1f)); - m_flatShader->setDiffuse(CGoGN::Geom::Vec4f(0.8f, 0.9f, 0.7f, 1.0f)); - m_flatShader->setExplode(1.0f); - - m_phongShader = new CGoGN::Utils::ShaderPhong() ; - m_phongShader->setAmbiant(CGoGN::Geom::Vec4f(0.2f, 0.2f, 0.2f, 0.1f)) ; - m_phongShader->setDiffuse(CGoGN::Geom::Vec4f(0.8f, 0.9f, 0.7f, 1.0f)) ; - m_phongShader->setSpecular(CGoGN::Geom::Vec4f(0.9f, 0.9f, 0.9f, 1.0f)) ; - m_phongShader->setShininess(80.0f) ; - - m_simpleColorShader = new CGoGN::Utils::ShaderSimpleColor(); - CGoGN::Geom::Vec4f c(0.1f, 0.1f, 0.1f, 1.0f); - m_simpleColorShader->setColor(c); - - m_pointSprite = new CGoGN::Utils::PointSprite(); - - registerShader(m_flatShader); - registerShader(m_phongShader); - registerShader(m_simpleColorShader); - registerShader(m_pointSprite); - - connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*))); - connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*))); - connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*))); - - return true; -} - -void RenderPlugin::disable() -{ - delete m_flatShader; - delete m_phongShader; - delete m_simpleColorShader; - delete m_pointSprite; -} - -void RenderPlugin::redraw(View* view) -{ - ParameterSet* params = h_viewParams[view]; - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* m, maps) - { - PerMapParameterSet* p = params->perMap[m->getName()]; - if(p->positionVBO != NULL) - { - if(p->renderVertices) - { - m_pointSprite->setSize(m->getBBdiagSize() / 200.0f * p->verticesScaleFactor); - m_pointSprite->setAttributePosition(p->positionVBO); - m_pointSprite->setColor(CGoGN::Geom::Vec4f(0.0f, 0.0f, 1.0f, 1.0f)); - m->draw(m_pointSprite, CGoGN::Algo::Render::GL2::POINTS); - } - if(p->renderEdges) - { - glLineWidth(1.0f); - m_simpleColorShader->setAttributePosition(p->positionVBO); - m->draw(m_simpleColorShader, CGoGN::Algo::Render::GL2::LINES); - } - if(p->renderFaces) - { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glEnable(GL_LIGHTING); - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(1.0f, 1.0f); - switch(p->faceStyle) - { - case FLAT : - m_flatShader->setAttributePosition(p->positionVBO); - m->draw(m_flatShader, CGoGN::Algo::Render::GL2::TRIANGLES); - break ; - case PHONG : - if(p->normalVBO != NULL) - { - m_phongShader->setAttributePosition(p->positionVBO) ; - m_phongShader->setAttributeNormal(p->normalVBO) ; - m->draw(m_phongShader, CGoGN::Algo::Render::GL2::TRIANGLES); - } - break ; - } - glDisable(GL_POLYGON_OFFSET_FILL); - } - } - } -} - -void RenderPlugin::viewLinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - ParameterSet* params = new ParameterSet(); - h_viewParams.insert(view, params); - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - addManagedMap(view, mh); - - connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - connect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - - if(view->isCurrentView()) - m_dockTab->refreshUI(params); - } -} - -void RenderPlugin::viewUnlinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - removeManagedMap(view, mh); - - ParameterSet* params = h_viewParams[view]; - delete params; - h_viewParams.remove(view); - - disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - disconnect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - } -} - -void RenderPlugin::currentViewChanged(View* view) -{ - if(isLinkedToView(view)) - m_dockTab->refreshUI(h_viewParams[view]); -} - -void RenderPlugin::mapLinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - addManagedMap(view, m); -} - -void RenderPlugin::mapUnlinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - removeManagedMap(view, m); -} - -void RenderPlugin::addManagedMap(View* v, MapHandlerGen *m) -{ -// connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = new PerMapParameterSet(m); - - params->perMap.insert(m->getName(), perMap); - - if(params->selectedMap == NULL || params->perMap.count() == 1) - changeSelectedMap(v, m); - else - m_dockTab->refreshUI(params); -} - -void RenderPlugin::removeManagedMap(View *v, MapHandlerGen *m) -{ -// disconnect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = params->perMap[m->getName()]; - - delete perMap; - params->perMap.remove(m->getName()); - - if(params->selectedMap == m) - { - if(!params->perMap.empty()) - changeSelectedMap(v, m_window->getMap(params->perMap.begin().key())); - else - changeSelectedMap(v, NULL); - } - else - m_dockTab->refreshUI(params); -} - -void RenderPlugin::changeSelectedMap(View* view, MapHandlerGen* map) -{ - ParameterSet* params = h_viewParams[view]; - - MapHandlerGen* prev = params->selectedMap; - params->selectedMap = map; - - if(view->isCurrentView()) - { - if(prev) - disconnect(prev, SIGNAL(vboAdded(Utils::VBO*)), m_dockTab, SLOT(addVBOToList(Utils::VBO*))); - if(map) - connect(map, SIGNAL(vboAdded(Utils::VBO*)), m_dockTab, SLOT(addVBOToList(Utils::VBO*))); - - m_dockTab->refreshUI(params); - } -} - -void RenderPlugin::changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->positionVBO = vbo; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderPlugin::changeNormalVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->normalVBO = vbo; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderPlugin::changeRenderVertices(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->renderVertices = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderPlugin::changeVerticesScaleFactor(View* view, MapHandlerGen* map, float f, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->verticesScaleFactor = f; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderPlugin::changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->renderEdges = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderPlugin::changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->renderFaces = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderPlugin::changeFacesStyle(View* view, MapHandlerGen* map, FaceShadingStyle style, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->faceStyle = style; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(RenderPlugin, RenderPlugin) -#else -Q_EXPORT_PLUGIN2(RenderPluginD, RenderPlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/render/src/renderDockTab.cpp b/SCHNApps_old/Plugins/render/src/renderDockTab.cpp deleted file mode 100644 index 469c15a2b..000000000 --- a/SCHNApps_old/Plugins/render/src/renderDockTab.cpp +++ /dev/null @@ -1,188 +0,0 @@ -#include "renderDockTab.h" - -#include "render.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -RenderDockTab::RenderDockTab(Window* w, RenderPlugin* p) : - m_window(w), - m_plugin(p), - b_refreshingUI(false) -{ - setupUi(this); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - connect(combo_positionVBO, SIGNAL(currentIndexChanged(int)), this, SLOT(positionVBOChanged(int))); - connect(combo_normalVBO, SIGNAL(currentIndexChanged(int)), this, SLOT(normalVBOChanged(int))); - connect(check_renderVertices, SIGNAL(toggled(bool)), this, SLOT(renderVerticesChanged(bool))); - connect(slider_verticesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(verticesScaleFactorChanged(int))); - connect(check_renderEdges, SIGNAL(toggled(bool)), this, SLOT(renderEdgesChanged(bool))); - connect(check_renderFaces, SIGNAL(toggled(bool)), this, SLOT(renderFacesChanged(bool))); - connect(group_faceShading, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(faceStyleChanged(QAbstractButton*))); -} - -void RenderDockTab::refreshUI(ParameterSet* params) -{ - m_currentParams = params; - - b_refreshingUI = true; - - mapList->clear(); - combo_positionVBO->clear(); - combo_normalVBO->clear(); - - MapHandlerGen* map = params->selectedMap; - - QHash::const_iterator i = params->perMap.constBegin(); - while (i != params->perMap.constEnd()) - { - mapList->addItem(i.key()); - if(map != NULL && i.key() == map->getName()) - { - QList item = mapList->findItems(map->getName(), Qt::MatchExactly); - item[0]->setSelected(true); - - PerMapParameterSet* p = params->perMap[map->getName()]; - - QList vbos = map->getVBOList(); - unsigned int j = 0; - for(int i = 0; i < vbos.count(); ++i) - { - if(vbos[i]->dataSize() == 3) - { - combo_positionVBO->addItem(QString::fromStdString(vbos[i]->name())); - if(vbos[i] == p->positionVBO) - combo_positionVBO->setCurrentIndex(j); - - combo_normalVBO->addItem(QString::fromStdString(vbos[i]->name())); - if(vbos[i] == p->normalVBO) - combo_normalVBO->setCurrentIndex(j); - - ++j; - } - } - - check_renderVertices->setChecked(p->renderVertices); - slider_verticesScaleFactor->setSliderPosition(p->verticesScaleFactor * 50.0); - check_renderEdges->setChecked(p->renderEdges); - check_renderFaces->setChecked(p->renderFaces); - radio_flatShading->setChecked(p->faceStyle == FLAT); - radio_phongShading->setChecked(p->faceStyle == PHONG); - } - ++i; - } - - b_refreshingUI = false; -} - -void RenderDockTab::selectedMapChanged() -{ - if(!b_refreshingUI) - { - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - m_plugin->changeSelectedMap(m_window->getCurrentView(), m_window->getMap(currentItems[0]->text())); - } -} - -void RenderDockTab::positionVBOChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePositionVBO(view, map, map->getVBO(combo_positionVBO->currentText()), true); - } -} - -void RenderDockTab::normalVBOChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeNormalVBO(view, map, map->getVBO(combo_normalVBO->currentText()), true); - } -} - -void RenderDockTab::renderVerticesChanged(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeRenderVertices(view, map, b, true); - } -} - -void RenderDockTab::verticesScaleFactorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeVerticesScaleFactor(view, map, i / 50.0, true); - } -} - -void RenderDockTab::renderEdgesChanged(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeRenderEdges(view, map, b, true); - } -} - -void RenderDockTab::renderFacesChanged(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeRenderFaces(view, map, b, true); - } -} - -void RenderDockTab::faceStyleChanged(QAbstractButton* b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - { - if(radio_flatShading->isChecked()) - m_plugin->changeFacesStyle(view, map, FLAT, true); - else if(radio_phongShading->isChecked()) - m_plugin->changeFacesStyle(view, map, PHONG, true); - } - } -} - -void RenderDockTab::addVBOToList(Utils::VBO* vbo) -{ - if(vbo->dataSize() == 3) - { - QString name = QString::fromStdString(vbo->name()); - combo_positionVBO->addItem(name); - combo_normalVBO->addItem(name); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderExplod/CMakeLists.txt b/SCHNApps_old/Plugins/renderExplod/CMakeLists.txt deleted file mode 100644 index 4843ef0ff..000000000 --- a/SCHNApps_old/Plugins/renderExplod/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME RenderExplod ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/renderExplod ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/renderExplod.h - ${PLUGIN_ROOT_DIR}/include/renderExplodDockTab.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/renderExplod/forms/renderExplod.ui b/SCHNApps_old/Plugins/renderExplod/forms/renderExplod.ui deleted file mode 100644 index ff88a12d9..000000000 --- a/SCHNApps_old/Plugins/renderExplod/forms/renderExplod.ui +++ /dev/null @@ -1,147 +0,0 @@ - - - RenderExplodDockWidget - - - - 0 - 0 - 174 - 545 - - - - Form - - - - - - - - - QLayout::SetDefaultConstraint - - - - - Color : - - - - - - - Position : - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - Qt::Horizontal - - - - - - - render edges - - - - - - - render faces - - - true - - - - - - - - - Explod - - - - - - - faces : - - - - - - - 50 - - - Qt::Horizontal - - - - - - - volumes : - - - - - - - 50 - - - Qt::Horizontal - - - - - - - - - Qt::Vertical - - - - 156 - 161 - - - - - - - - - diff --git a/SCHNApps_old/Plugins/renderExplod/include/renderExplod.h b/SCHNApps_old/Plugins/renderExplod/include/renderExplod.h deleted file mode 100644 index dfccae96c..000000000 --- a/SCHNApps_old/Plugins/renderExplod/include/renderExplod.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef _RENDER_PLUGIN_H_ -#define _RENDER_PLUGIN_H_ - -#include "plugin.h" -#include "renderExplodDockTab.h" - -#include "Algo/Render/GL2/explodeVolumeRender.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -enum FaceShadingStyle -{ - FLAT = 0, - SMOOTH = 1 -}; - -struct PerMapParameterSet -{ - PerMapParameterSet(MapHandlerGen* mh); - ~PerMapParameterSet(); - - void updateRender(); - - MapHandlerGen* mh; - Algo::Render::GL2::ExplodeVolumeRender* m_renderExplod; - VertexAttribute positionAttribute; - VolumeAttribute colorAttribute; - - float facesScaleFactor; - float volumesScaleFactor; - bool renderEdges; - bool renderFaces; - FaceShadingStyle faceStyle; -}; - -struct ParameterSet -{ - ParameterSet() : selectedMap(NULL) - {} - - QHash perMap; - MapHandlerGen* selectedMap; -}; - - -class RenderExplodPlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - RenderExplodPlugin() - { - setProvidesRendering(true); - } - - ~RenderExplodPlugin() - {} - - virtual bool enable(); - virtual void disable(); - - virtual void redraw(View *view); - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -protected: - RenderExplodDockTab* m_dockTab; - QHash h_viewParams; - -public slots: - void viewLinked(View* view, Plugin* plugin); - void viewUnlinked(View* view, Plugin* plugin); - void currentViewChanged(View* view); - - void mapLinked(MapHandlerGen* m); - void mapUnlinked(MapHandlerGen* m); - -protected: - void addManagedMap(View *v, MapHandlerGen* m); - void removeManagedMap(View *v, MapHandlerGen* m); - -public slots: - void changeSelectedMap(View* view, MapHandlerGen* map); - - void changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI = false); - void changeColorAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI = false); - void changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false); - void changeVolumesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false); - - void attributeModified(unsigned int orbit, QString nameAttr); - void connectivityModified(); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderExplod/include/renderExplodDockTab.h b/SCHNApps_old/Plugins/renderExplod/include/renderExplodDockTab.h deleted file mode 100644 index da2fbd636..000000000 --- a/SCHNApps_old/Plugins/renderExplod/include/renderExplodDockTab.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef _RENDER_EXPLOD_DOCK_TAB_H_ -#define _RENDER_EXPLOD_DOCK_TAB_H_ - -#include "ui_renderExplod.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class RenderExplodPlugin; -struct ParameterSet; - -class RenderExplodDockTab : public QWidget, public Ui::RenderExplodDockWidget -{ - Q_OBJECT - -public: - RenderExplodDockTab(Window* w, RenderExplodPlugin* p); - -private: - Window* m_window; - RenderExplodPlugin* m_plugin; - ParameterSet* m_currentParams; - bool b_refreshingUI; - -public slots: - void refreshUI(ParameterSet* params); - - void selectedMapChanged(); - void positionAttributeChanged(int index); - void colorAttributeChanged(int index); - void renderEdgesChanged(bool b); - void renderFacesChanged(bool b); - void facesScaleFactorChanged(int i); - void volumesScaleFactorChanged(int i); - - void addAttributeToList(unsigned int orbit, const QString& nameAttr); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderExplod/src/renderExplod.cpp b/SCHNApps_old/Plugins/renderExplod/src/renderExplod.cpp deleted file mode 100644 index 7f4f70c36..000000000 --- a/SCHNApps_old/Plugins/renderExplod/src/renderExplod.cpp +++ /dev/null @@ -1,383 +0,0 @@ -#include "renderExplod.h" - -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -PerMapParameterSet::PerMapParameterSet(MapHandlerGen* m) : - mh(m), - facesScaleFactor(1.0f), - volumesScaleFactor(1.0f), - renderEdges(false), - renderFaces(true), - faceStyle(FLAT) -{ - m_renderExplod = new Algo::Render::GL2::ExplodeVolumeRender(false, false, false); - - m_renderExplod->setNoClippingPlane(); - m_renderExplod->setExplodeVolumes(1.0f); - m_renderExplod->setExplodeFaces(1.0f); - - QString positionName; - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP3::VEC3())); - - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - if(positionName != "position") // try to select an attribute named "position" - positionName = i.key(); // or anything else if not found - } - } - positionAttribute = mh->getAttribute(positionName); - - colorAttribute = mh->getAttribute("color"); - - updateRender(); -} - -PerMapParameterSet::~PerMapParameterSet() -{ - delete m_renderExplod; -} - -void PerMapParameterSet::updateRender() -{ - PFP3::MAP* m = static_cast*>(mh)->getMap(); - //if(!color.isValid()) - m_renderExplod->updateData(*m, positionAttribute); -} - - -bool RenderExplodPlugin::enable() -{ - m_dockTab = new RenderExplodDockTab(m_window, this); - addTabInDock(m_dockTab, "RenderExplod"); - - connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*))); - connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*))); - connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*))); - - return true; -} - -void RenderExplodPlugin::disable() -{ - -} - -void RenderExplodPlugin::redraw(View* view) -{ - ParameterSet* params = h_viewParams[view]; - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* m, maps) - { - PerMapParameterSet* p = params->perMap[m->getName()]; - - p->m_renderExplod->setExplodeFaces(p->facesScaleFactor); - p->m_renderExplod->setExplodeVolumes(p->volumesScaleFactor); - - if(p->renderEdges) - { - p->m_renderExplod->drawEdges(); - } - if(p->renderFaces) - { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glEnable(GL_LIGHTING); - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(1.0f, 1.0f) ; - p->m_renderExplod->drawFaces(); - glDisable(GL_POLYGON_OFFSET_FILL); - } - } -} - -void RenderExplodPlugin::viewLinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - ParameterSet* params = new ParameterSet(); - h_viewParams.insert(view, params); - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - addManagedMap(view, mh); - - connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - connect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - - if(view->isCurrentView()) - m_dockTab->refreshUI(params); - } -} - -void RenderExplodPlugin::viewUnlinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - removeManagedMap(view, mh); - - ParameterSet* params = h_viewParams[view]; - delete params; - h_viewParams.remove(view); - - disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - disconnect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - } -} - -void RenderExplodPlugin::currentViewChanged(View* view) -{ - if(isLinkedToView(view)) - m_dockTab->refreshUI(h_viewParams[view]); -} - -void RenderExplodPlugin::mapLinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - addManagedMap(view, m); -} - -void RenderExplodPlugin::mapUnlinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - removeManagedMap(view, m); -} - -void RenderExplodPlugin::addManagedMap(View* v, MapHandlerGen *m) -{ - connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); - connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = new PerMapParameterSet(m); - - registerShader(perMap->m_renderExplod->shaderFaces()); - registerShader(perMap->m_renderExplod->shaderLines()); - - params->perMap.insert(m->getName(), perMap); - - if(params->selectedMap == NULL || params->perMap.count() == 1) - changeSelectedMap(v, m); - else - m_dockTab->refreshUI(params); -} - -void RenderExplodPlugin::removeManagedMap(View *v, MapHandlerGen *m) -{ - disconnect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); - disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = params->perMap[m->getName()]; - - unregisterShader(perMap->m_renderExplod->shaderFaces()); - unregisterShader(perMap->m_renderExplod->shaderLines()); - - delete perMap; - params->perMap.remove(m->getName()); - - if(params->selectedMap == m) - { - if(!params->perMap.empty()) - changeSelectedMap(v, m_window->getMap(params->perMap.begin().key())); - else - changeSelectedMap(v, NULL); - } - else - m_dockTab->refreshUI(params); -} - -void RenderExplodPlugin::changeSelectedMap(View* view, MapHandlerGen* map) -{ - ParameterSet* params = h_viewParams[view]; - - MapHandlerGen* prev = params->selectedMap; - params->selectedMap = map; - - if(view->isCurrentView()) - { - if(prev) - disconnect(prev, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&))); - if(map) - connect(map, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&))); - - m_dockTab->refreshUI(params); - } -} - -void RenderExplodPlugin::changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->perMap[map->getName()]; - perMap->positionAttribute = attribute; - perMap->updateRender(); - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderExplodPlugin::changeColorAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; -// params->perMap[map->getName()].colorAttribute = attribute; - //perMap->colorAttribute = attribute; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderExplodPlugin::changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->renderEdges = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderExplodPlugin::changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->renderFaces = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderExplodPlugin::changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->facesScaleFactor = i / 50.0; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderExplodPlugin::changeVolumesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->volumesScaleFactor = i / 50.0; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - - -void RenderExplodPlugin::attributeModified(unsigned int orbit, QString nameAttr) -{ - MapHandler* mh = static_cast*>(QObject::sender()); - - //On cherche la carte et on la met a jour puis updateGL(); - - //pour toutes les vues - //on va mettre a jour la carte QObject::senter() si elle est enregistree dans le parameterSet de cette vue - - - -// if(orbit == VERTEX) -// { -// MapHandler* mh = static_cast*>(QObject::sender()); -// if(mh == NULL) -// return; -// -// foreach(ParameterSet* params, h_viewParams) -// { -// QHash::const_iterator i = params->perMap.constBegin(); -// while (i != params->perMap.constEnd()) -// { -// PerMapParameterSet* p = params->perMap[mh->getName()]; -// -// p->updateRender(); -// -// ++i; -// } -// -// } - - - -// VertexAttribute position = mh->getAttribute(nameAttr); -// if(!position.isValid()) -// return; -// -// PFP3::MAP* map = mh->getMap(); -// -// m_renderExplod->updateData(*map,position); - -// if(computeNormalLastParameters.contains(map->getName())) -// { -// ComputeNormalParameters& params = computeNormalLastParameters[map->getName()]; -// if(params.positionName == nameAttr && params.autoUpdate) -// computeNormal(map->getName(), params.positionName, params.normalName); -// } -// } -} - -void RenderExplodPlugin::connectivityModified() -{ - //On cherche la carte et on la met a jour puis updateGL(); - - //pour toutes les vues - //on va mettre a jour la carte QObject::senter() si elle est enregistree dans le parameterSet de cette vue - - -// MapHandler* mh = static_cast*>(QObject::sender()); -// if(mh == NULL) -// return; -// -// VertexAttribute position = mh->getAttribute("position"); -// if(!position.isValid()) -// return; -// -// PFP3::MAP* map = mh->getMap(); -// -// m_renderExplod->updateData(*map,position); - -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(RenderExplodPlugin, RenderExplodPlugin) -#else -Q_EXPORT_PLUGIN2(RenderExplodPluginD, RenderExplodPlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderExplod/src/renderExplodDockTab.cpp b/SCHNApps_old/Plugins/renderExplod/src/renderExplodDockTab.cpp deleted file mode 100644 index 4046a0d59..000000000 --- a/SCHNApps_old/Plugins/renderExplod/src/renderExplodDockTab.cpp +++ /dev/null @@ -1,177 +0,0 @@ -#include "renderExplodDockTab.h" - -#include "renderExplod.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -RenderExplodDockTab::RenderExplodDockTab(Window* w, RenderExplodPlugin* p) : - m_window(w), - m_plugin(p), - b_refreshingUI(false) -{ - setupUi(this); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - - connect(combo_positionAttribute, SIGNAL(currentIndexChanged(int)), this, SLOT(positionAttributeChanged(int))); - connect(combo_colorAttribute, SIGNAL(currentIndexChanged(int)), this, SLOT(colorAttributeChanged(int))); - - connect(check_renderEdges, SIGNAL(toggled(bool)), this, SLOT(renderEdgesChanged(bool))); - connect(check_renderFaces, SIGNAL(toggled(bool)), this, SLOT(renderFacesChanged(bool))); - - connect(slider_facesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(facesScaleFactorChanged(int))); - connect(slider_volumesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(volumesScaleFactorChanged(int))); -} - -void RenderExplodDockTab::refreshUI(ParameterSet* params) -{ - m_currentParams = params; - - b_refreshingUI = true; - - mapList->clear(); - combo_positionAttribute->clear(); - combo_colorAttribute->clear(); - - MapHandlerGen* mh = params->selectedMap; - - QHash::const_iterator i = params->perMap.constBegin(); - while (i != params->perMap.constEnd()) - { - mapList->addItem(i.key()); - if(mh != NULL && i.key() == mh->getName()) - { - QList item = mapList->findItems(mh->getName(), Qt::MatchExactly); - item[0]->setSelected(true); - - PerMapParameterSet* p = params->perMap[mh->getName()]; - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - unsigned int j = 0; - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - combo_positionAttribute->addItem(i.key()); - if(i.key() == QString::fromStdString(p->positionAttribute.name())) - combo_positionAttribute->setCurrentIndex(j); - -// combo_colorAttribute->addItem(i.key()); -// if(i.key() == QString::fromStdString(p.colorAttribute.name())) -// combo_colorAttribute->setCurrentIndex(j); - - ++j; - } - } - - check_renderEdges->setChecked(p->renderEdges); - check_renderFaces->setChecked(p->renderFaces); - slider_facesScaleFactor->setSliderPosition(p->facesScaleFactor * 50.0); - slider_volumesScaleFactor->setSliderPosition(p->volumesScaleFactor * 50.0); - } - ++i; - } - - b_refreshingUI = false; -} - -void RenderExplodDockTab::selectedMapChanged() -{ - if(!b_refreshingUI) - { - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - m_plugin->changeSelectedMap(m_window->getCurrentView(), m_window->getMap(currentItems[0]->text())); - } -} - -void RenderExplodDockTab::positionAttributeChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePositionAttribute(view, map, map->getAttribute(combo_positionAttribute->currentText()), true); - } -} - -void RenderExplodDockTab::colorAttributeChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeColorAttribute(view, map, map->getAttribute(combo_colorAttribute->currentText()), true); - } -} - -void RenderExplodDockTab::renderEdgesChanged(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeRenderEdges(view, map, b, true); - } -} - -void RenderExplodDockTab::renderFacesChanged(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeRenderFaces(view, map, b, true); - } -} - -void RenderExplodDockTab::facesScaleFactorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeFacesScaleFactor(view, map, i, true); - } -} - -void RenderExplodDockTab::volumesScaleFactorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeVolumesScaleFactor(view, map, i, true); - } -} - -void RenderExplodDockTab::addAttributeToList(unsigned int orbit, const QString& nameAttr) -{ - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - const QString& typeAttr = m_currentParams->selectedMap->getAttributeTypeName(orbit, nameAttr); - - if(typeAttr == vec3TypeName) - { - combo_positionAttribute->addItem(nameAttr); - combo_colorAttribute->addItem(nameAttr); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderScalar/CMakeLists.txt b/SCHNApps_old/Plugins/renderScalar/CMakeLists.txt deleted file mode 100644 index e65c0cbfb..000000000 --- a/SCHNApps_old/Plugins/renderScalar/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME RenderScalar ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/renderScalar ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/renderScalar.h - ${PLUGIN_ROOT_DIR}/include/renderScalarDockTab.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/renderScalar/forms/renderScalar.ui b/SCHNApps_old/Plugins/renderScalar/forms/renderScalar.ui deleted file mode 100644 index 595e93cd6..000000000 --- a/SCHNApps_old/Plugins/renderScalar/forms/renderScalar.ui +++ /dev/null @@ -1,119 +0,0 @@ - - - RenderScalarDockWidget - - - - 0 - 0 - 181 - 545 - - - - Form - - - - - - - - - Position : - - - - - - - - 0 - 0 - - - - - - - - Scalar : - - - - - - - QAbstractItemView::MultiSelection - - - - - - - Expansion : - - - - - - - 10 - - - 1 - - - Qt::Horizontal - - - - - - - Qt::Vertical - - - - 156 - 161 - - - - - - - - Colormap : - - - - - - - - BlueWhiteRed - - - - - CyanWhiteRed - - - - - BlueCyanGreenYellowRed - - - - - BlueGreenRed - - - - - - - - - diff --git a/SCHNApps_old/Plugins/renderScalar/include/renderScalar.h b/SCHNApps_old/Plugins/renderScalar/include/renderScalar.h deleted file mode 100644 index c4abd6aa2..000000000 --- a/SCHNApps_old/Plugins/renderScalar/include/renderScalar.h +++ /dev/null @@ -1,106 +0,0 @@ -#ifndef _RENDERSCALAR_PLUGIN_H_ -#define _RENDERSCALAR_PLUGIN_H_ - -#include "plugin.h" -#include "renderScalarDockTab.h" - -#include "Utils/Shaders/shaderScalarField.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -enum ColorMap { - BlueWhiteRed = 0, - CyanWhiteRed = 1, - BlueCyanGreenYellowRed = 2, - BlueGreenRed = 3 -}; - -struct PerMapParameterSet -{ - PerMapParameterSet() : - positionVBO(NULL) - {} - - PerMapParameterSet(MapHandlerGen* map); - - Utils::VBO* positionVBO; - Utils::VBO* scalarVBO; - float scalarMin, scalarMax; - int colorMap; - int expansion; -}; - -struct ParameterSet -{ - ParameterSet() : selectedMap(NULL) - {} - - QHash perMap; - MapHandlerGen* selectedMap; -}; - - -class RenderScalarPlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - RenderScalarPlugin() - { - setProvidesRendering(true); - } - - ~RenderScalarPlugin() - {} - - virtual bool enable(); - virtual void disable(); - - virtual void redraw(View *view); - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -protected: - RenderScalarDockTab* m_dockTab; - QHash h_viewParams; - - CGoGN::Utils::ShaderScalarField* m_scalarShader; - -public slots: - void viewLinked(View* view, Plugin* plugin); - void viewUnlinked(View* view, Plugin* plugin); - void currentViewChanged(View* view); - - void mapLinked(MapHandlerGen* m); - void mapUnlinked(MapHandlerGen* m); - -protected: - void addManagedMap(View *v, MapHandlerGen* m); - void removeManagedMap(View *v, MapHandlerGen* m); - -public slots: - void changeSelectedMap(View* view, MapHandlerGen* map); - - void changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI = false); - void changeScalarVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI = false); - void changeColorMap(View* view, MapHandlerGen* map, int c, bool fromUI = false); - void changeExpansion(View* view, MapHandlerGen* map, int i, bool fromUI = false); - - void attributeModified(unsigned int orbit, QString nameAttr); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderScalar/include/renderScalarDockTab.h b/SCHNApps_old/Plugins/renderScalar/include/renderScalarDockTab.h deleted file mode 100644 index 9749c99e7..000000000 --- a/SCHNApps_old/Plugins/renderScalar/include/renderScalarDockTab.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef _RENDERSCALAR_DOCK_TAB_H_ -#define _RENDERSCALAR_DOCK_TAB_H_ - -#include "ui_renderScalar.h" -#include "Utils/vbo.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class RenderScalarPlugin; -struct ParameterSet; - -class RenderScalarDockTab : public QWidget, public Ui::RenderScalarDockWidget -{ - Q_OBJECT - -public: - RenderScalarDockTab(Window* w, RenderScalarPlugin* p); - -private: - Window* m_window; - RenderScalarPlugin* m_plugin; - ParameterSet* m_currentParams; - bool b_refreshingUI; - -public slots: - void refreshUI(ParameterSet* params); - - void selectedMapChanged(); - - void positionVBOChanged(int index); - void selectedScalarVBOChanged(); - void colorMapChanged(int index); - void expansionChanged(int i); - - void addVBOToList(Utils::VBO* vbo); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderScalar/src/renderScalar.cpp b/SCHNApps_old/Plugins/renderScalar/src/renderScalar.cpp deleted file mode 100644 index 7f69f1d0f..000000000 --- a/SCHNApps_old/Plugins/renderScalar/src/renderScalar.cpp +++ /dev/null @@ -1,294 +0,0 @@ -#include "renderScalar.h" - -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -PerMapParameterSet::PerMapParameterSet(MapHandlerGen* map) : - positionVBO(NULL), - scalarVBO(NULL), - colorMap(BlueWhiteRed), - expansion(0) -{ - bool positionFound = false; - - QList vbos = map->getVBOList(); - for(int i = 0; i < vbos.count(); ++i) - { - if(vbos[i]->dataSize() == 3) - { - if(!positionFound) positionVBO = vbos[i]; - if(vbos[i]->name() == "position") // try to select a VBO named "position" - { - positionVBO = vbos[i]; - positionFound = true; - } - } - } -} - - -bool RenderScalarPlugin::enable() -{ - m_dockTab = new RenderScalarDockTab(m_window, this); - addTabInDock(m_dockTab, "RenderScalar"); - - m_scalarShader = new Utils::ShaderScalarField(); - registerShader(m_scalarShader); - - connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*))); - connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*))); - connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*))); - - return true; -} - -void RenderScalarPlugin::disable() -{ - delete m_scalarShader; -} - -void RenderScalarPlugin::redraw(View* view) -{ - ParameterSet* params = h_viewParams[view]; - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* m, maps) - { - PerMapParameterSet* p = params->perMap[m->getName()]; - if(p->positionVBO && p->scalarVBO) - { - m_scalarShader->setAttributePosition(p->positionVBO); - m_scalarShader->setAttributeScalar(p->scalarVBO); - m_scalarShader->setMinValue(p->scalarMin); - m_scalarShader->setMaxValue(p->scalarMax); - m_scalarShader->setColorMap(p->colorMap); - m_scalarShader->setExpansion(p->expansion); - - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(1.0f, 1.0f); - m->draw(m_scalarShader, Algo::Render::GL2::TRIANGLES); - glDisable(GL_POLYGON_OFFSET_FILL); - } - } -} - -void RenderScalarPlugin::viewLinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - ParameterSet* params = new ParameterSet(); - h_viewParams.insert(view, params); - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - addManagedMap(view, mh); - - connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - connect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - - if(view->isCurrentView()) - m_dockTab->refreshUI(params); - } -} - -void RenderScalarPlugin::viewUnlinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - removeManagedMap(view, mh); - - ParameterSet* params = h_viewParams[view]; - delete params; - h_viewParams.remove(view); - - disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - disconnect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - } -} - -void RenderScalarPlugin::currentViewChanged(View* view) -{ - if(isLinkedToView(view)) - m_dockTab->refreshUI(h_viewParams[view]); -} - -void RenderScalarPlugin::mapLinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - addManagedMap(view, m); -} - -void RenderScalarPlugin::mapUnlinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - removeManagedMap(view, m); -} - -void RenderScalarPlugin::addManagedMap(View* v, MapHandlerGen *m) -{ - connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = new PerMapParameterSet(m); - - params->perMap.insert(m->getName(), perMap); - - if(params->selectedMap == NULL || params->perMap.count() == 1) - changeSelectedMap(v, m); - else - m_dockTab->refreshUI(params); -} - -void RenderScalarPlugin::removeManagedMap(View *v, MapHandlerGen *m) -{ - disconnect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = params->perMap[m->getName()]; - - delete perMap; - params->perMap.remove(m->getName()); - - if(params->selectedMap == m) - { - if(!params->perMap.empty()) - changeSelectedMap(v, m_window->getMap(params->perMap.begin().key())); - else - changeSelectedMap(v, NULL); - } - else - m_dockTab->refreshUI(params); -} - -void RenderScalarPlugin::changeSelectedMap(View* view, MapHandlerGen* map) -{ - ParameterSet* params = h_viewParams[view]; - - MapHandlerGen* prev = params->selectedMap; - params->selectedMap = map; - - if(view->isCurrentView()) - { - if(prev) - disconnect(prev, SIGNAL(vboAdded(Utils::VBO*)), m_dockTab, SLOT(addVBOToList(Utils::VBO*))); - if(map) - connect(map, SIGNAL(vboAdded(Utils::VBO*)), m_dockTab, SLOT(addVBOToList(Utils::VBO*))); - - m_dockTab->refreshUI(params); - } -} - -void RenderScalarPlugin::changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->positionVBO = vbo; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderScalarPlugin::changeScalarVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->perMap[map->getName()]; - - perMap->scalarVBO = vbo; - - if(vbo != NULL) - { - const VertexAttribute& attr = map->getAttribute(QString::fromStdString(vbo->name())); - perMap->scalarMin = 1e20; - perMap->scalarMax = -1e20; - for(unsigned int i = attr.begin(); i != attr.end(); attr.next(i)) - { - perMap->scalarMin = attr[i] < perMap->scalarMin ? attr[i] : perMap->scalarMin; - perMap->scalarMax = attr[i] > perMap->scalarMax ? attr[i] : perMap->scalarMax; - } - } - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderScalarPlugin::changeColorMap(View* view, MapHandlerGen* map, int c, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->colorMap = c; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderScalarPlugin::changeExpansion(View* view, MapHandlerGen* map, int i, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->expansion = i; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderScalarPlugin::attributeModified(unsigned int orbit, QString nameAttr) -{ - if(orbit == VERTEX) - { - MapHandlerGen* map = static_cast(QObject::sender()); - foreach(View* view, l_views) - { - ParameterSet* params = h_viewParams[view]; - if(params->perMap.contains(map->getName())) - { - PerMapParameterSet* perMap = params->perMap[map->getName()]; - if(perMap->scalarVBO && nameAttr == QString::fromStdString(perMap->scalarVBO->name())) - { - const VertexAttribute& attr = map->getAttribute(nameAttr); - perMap->scalarMin = std::numeric_limits::max(); - perMap->scalarMax = std::numeric_limits::min(); - for(unsigned int i = attr.begin(); i != attr.end(); attr.next(i)) - { - perMap->scalarMin = attr[i] < perMap->scalarMin ? attr[i] : perMap->scalarMin; - perMap->scalarMax = attr[i] > perMap->scalarMax ? attr[i] : perMap->scalarMax; - } - } - } - } - } -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(RenderScalarPlugin, RenderScalarPlugin) -#else -Q_EXPORT_PLUGIN2(RenderScalarPluginD, RenderScalarPlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderScalar/src/renderScalarDockTab.cpp b/SCHNApps_old/Plugins/renderScalar/src/renderScalarDockTab.cpp deleted file mode 100644 index dbddb4426..000000000 --- a/SCHNApps_old/Plugins/renderScalar/src/renderScalarDockTab.cpp +++ /dev/null @@ -1,160 +0,0 @@ -#include "renderScalarDockTab.h" - -#include "renderScalar.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -RenderScalarDockTab::RenderScalarDockTab(Window* w, RenderScalarPlugin* p) : - m_window(w), - m_plugin(p), - b_refreshingUI(false) -{ - setupUi(this); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - connect(combo_positionVBO, SIGNAL(currentIndexChanged(int)), this, SLOT(positionVBOChanged(int))); - connect(list_scalarVBO, SIGNAL(itemSelectionChanged()), this, SLOT(selectedScalarVBOChanged())); - connect(combo_colorMap, SIGNAL(currentIndexChanged(int)), this, SLOT(colorMapChanged(int))); - connect(slider_expansion, SIGNAL(valueChanged(int)), this, SLOT(expansionChanged(int))); -} - -void RenderScalarDockTab::refreshUI(ParameterSet* params) -{ - m_currentParams = params; - - b_refreshingUI = true; - - mapList->clear(); - combo_positionVBO->clear(); - list_scalarVBO->clear(); - - MapHandlerGen* map = params->selectedMap; - - QHash::const_iterator i = params->perMap.constBegin(); - while (i != params->perMap.constEnd()) - { - mapList->addItem(i.key()); - if(map != NULL && i.key() == map->getName()) - { - QList item = mapList->findItems(map->getName(), Qt::MatchExactly); - item[0]->setSelected(true); - - PerMapParameterSet* p = params->perMap[map->getName()]; - - QList vbos = map->getVBOList(); - unsigned int j = 0; - unsigned int k = 0; - for(int i = 0; i < vbos.count(); ++i) - { - unsigned int dataSize = vbos[i]->dataSize(); - if(dataSize == 3) - { - combo_positionVBO->addItem(QString::fromStdString(vbos[i]->name())); - if(vbos[i] == p->positionVBO) - combo_positionVBO->setCurrentIndex(j); - ++j; - } - else if(dataSize == 1) - { - list_scalarVBO->addItem(QString::fromStdString(vbos[i]->name())); - if(vbos[i] == p->scalarVBO) - list_scalarVBO->item(k)->setSelected(true); - ++k; - } - } - - combo_colorMap->setCurrentIndex(p->colorMap); - slider_expansion->setSliderPosition(p->expansion); - } - ++i; - } - - b_refreshingUI = false; -} - -void RenderScalarDockTab::selectedMapChanged() -{ - if(!b_refreshingUI) - { - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - m_plugin->changeSelectedMap(m_window->getCurrentView(), m_window->getMap(currentItems[0]->text())); - } -} - -void RenderScalarDockTab::positionVBOChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePositionVBO(view, map, map->getVBO(combo_positionVBO->currentText()), true); - } -} - -void RenderScalarDockTab::selectedScalarVBOChanged() -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - { - QList selectedItems = list_scalarVBO->selectedItems(); - if(!selectedItems.empty()) - { - foreach(QListWidgetItem* item, selectedItems) - { - if(item != list_scalarVBO->currentItem()) - item->setSelected(false); - } - m_plugin->changeScalarVBO(view, map, map->getVBO(list_scalarVBO->currentItem()->text()), true); - } - else - m_plugin->changeScalarVBO(view, map, NULL, true); - } - } -} - -void RenderScalarDockTab::colorMapChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeColorMap(view, map, index, true); - } -} - -void RenderScalarDockTab::expansionChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeExpansion(view, map, i, true); - } -} - -void RenderScalarDockTab::addVBOToList(Utils::VBO* vbo) -{ - QString name = QString::fromStdString(vbo->name()); - unsigned int dataSize = vbo->dataSize(); - if(dataSize == 3) - combo_positionVBO->addItem(name); - else if(dataSize == 1) - list_scalarVBO->addItem(name); -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderTopoSurface/CMakeLists.txt b/SCHNApps_old/Plugins/renderTopoSurface/CMakeLists.txt deleted file mode 100644 index fb3c5e444..000000000 --- a/SCHNApps_old/Plugins/renderTopoSurface/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME RenderTopoSurface ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/renderTopoSurface ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/renderTopoSurface.h - ${PLUGIN_ROOT_DIR}/include/renderTopoSurfaceDockTab.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/renderTopoSurface/forms/renderTopoSurface.ui b/SCHNApps_old/Plugins/renderTopoSurface/forms/renderTopoSurface.ui deleted file mode 100644 index 434fbc7df..000000000 --- a/SCHNApps_old/Plugins/renderTopoSurface/forms/renderTopoSurface.ui +++ /dev/null @@ -1,134 +0,0 @@ - - - RenderTopoSurfaceDockWidget - - - - 0 - 0 - 190 - 547 - - - - Form - - - - - - - - - Position : - - - - - - - - 0 - 0 - - - - - - - - draw darts - - - true - - - - - - - - - - draw phi1 - - - true - - - - - - - - - - draw phi2 - - - true - - - - - - - - - - explod edges - - - - - - - 50 - - - Qt::Horizontal - - - - - - - explod faces - - - - - - - 50 - - - Qt::Horizontal - - - - - - - Qt::Vertical - - - - 156 - 161 - - - - - - - - - ColorComboBox - QComboBox -
colorComboBox.h
-
-
- - -
diff --git a/SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurface.h b/SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurface.h deleted file mode 100644 index 4071fe56a..000000000 --- a/SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurface.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef _RENDERTOPO_SURFACE_PLUGIN_H_ -#define _RENDERTOPO_SURFACE_PLUGIN_H_ - -#include "plugin.h" -#include "renderTopoSurfaceDockTab.h" - -#include "Algo/Render/GL2/topoRender.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -struct PerMapParameterSet -{ - PerMapParameterSet(MapHandlerGen* mh); - ~PerMapParameterSet(); - - void updateRender(); - - MapHandlerGen* mh; - Algo::Render::GL2::TopoRender* m_renderTopo; - VertexAttribute positionAttribute; - - bool drawDarts; - QColor dartsColor; - bool drawPhi1; - QColor phi1Color; - bool drawPhi2; - QColor phi2Color; - float edgesScaleFactor; - float facesScaleFactor; -}; - -struct ParameterSet -{ - ParameterSet() : selectedMap(NULL) - {} - - QHash perMap; - MapHandlerGen* selectedMap; -}; - - -class RenderTopoSurfacePlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - RenderTopoSurfacePlugin() - { - setProvidesRendering(true); - } - - ~RenderTopoSurfacePlugin() - {} - - virtual bool enable(); - virtual void disable(); - - virtual void redraw(View *view); - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event); - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -protected: - RenderTopoSurfaceDockTab* m_dockTab; - QHash h_viewParams; - -public slots: - void viewLinked(View* view, Plugin* plugin); - void viewUnlinked(View* view, Plugin* plugin); - void currentViewChanged(View* view); - - void mapLinked(MapHandlerGen* m); - void mapUnlinked(MapHandlerGen* m); - -protected: - void addManagedMap(View *v, MapHandlerGen* m); - void removeManagedMap(View *v, MapHandlerGen* m); - -public slots: - void changeSelectedMap(View* view, MapHandlerGen* map); - - void changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI = false); - void changeDrawDarts(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changeDartsColor(View* view, MapHandlerGen* map, QColor c, bool fromUI = false); - void changeDrawPhi1(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changePhi1Color(View* view, MapHandlerGen* map, QColor c, bool fromUI = false); - void changeDrawPhi2(View* view, MapHandlerGen* map, bool b, bool fromUI = false); - void changePhi2Color(View* view, MapHandlerGen* map, QColor c, bool fromUI = false); - void changeEdgesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false); - void changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false); - - void attributeModified(unsigned int orbit, QString nameAttr); - void connectivityModified(); - -signals: - void dartSelected(Dart d); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h b/SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h deleted file mode 100644 index 79ae75b47..000000000 --- a/SCHNApps_old/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef _RENDER_TOPO_SURFACE_DOCK_TAB_H_ -#define _RENDER_TOPO_SURFACE_DOCK_TAB_H_ - -#include "ui_renderTopoSurface.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class RenderTopoSurfacePlugin; -struct ParameterSet; - -class RenderTopoSurfaceDockTab : public QWidget, public Ui::RenderTopoSurfaceDockWidget -{ - Q_OBJECT - -public: - RenderTopoSurfaceDockTab(Window* w, RenderTopoSurfacePlugin* p); - -private: - Window* m_window; - RenderTopoSurfacePlugin* m_plugin; - ParameterSet* m_currentParams; - bool b_refreshingUI; - -public slots: - void refreshUI(ParameterSet* params); - - void selectedMapChanged(); - void positionAttributeChanged(int index); - void drawDartsChanged(bool b); - void dartsColorChanged(int); - void drawPhi1Changed(bool b); - void phi1ColorChanged(int); - void drawPhi2Changed(bool b); - void phi2ColorChanged(int); - void edgesScaleFactorChanged(int i); - void facesScaleFactorChanged(int i); - - void addAttributeToList(unsigned int orbit, const QString& nameAttr); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurface.cpp b/SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurface.cpp deleted file mode 100644 index 90e0c910b..000000000 --- a/SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurface.cpp +++ /dev/null @@ -1,380 +0,0 @@ -#include "renderTopoSurface.h" - -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -PerMapParameterSet::PerMapParameterSet(MapHandlerGen* m) : - mh(m), - drawDarts(true), - dartsColor("white"), - drawPhi1(true), - phi1Color("cyan"), - drawPhi2(true), - phi2Color("red"), - edgesScaleFactor(1.0f), - facesScaleFactor(1.0f) -{ - m_renderTopo = new Algo::Render::GL2::TopoRender(); - - QString positionName; - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - if(positionName != "position") // try to select an attribute named "position" - positionName = i.key(); // or anything else if not found - } - } - positionAttribute = mh->getAttribute(positionName); - - updateRender(); -} - -PerMapParameterSet::~PerMapParameterSet() -{ - delete m_renderTopo; -} - -void PerMapParameterSet::updateRender() -{ - PFP2::MAP* m = static_cast*>(mh)->getMap(); - m_renderTopo->updateData(*m, positionAttribute, edgesScaleFactor, facesScaleFactor); -} - - -bool RenderTopoSurfacePlugin::enable() -{ - m_dockTab = new RenderTopoSurfaceDockTab(m_window, this); - addTabInDock(m_dockTab, "RenderTopoSurface"); - - connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*))); - connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*))); - connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*))); - - return true; -} - -void RenderTopoSurfacePlugin::disable() -{ - -} - -void RenderTopoSurfacePlugin::redraw(View* view) -{ - ParameterSet* params = h_viewParams[view]; - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* m, maps) - { - PerMapParameterSet* p = params->perMap[m->getName()]; - - if(p->drawDarts) - p->m_renderTopo->drawDarts(); - if(p->drawPhi1) - p->m_renderTopo->drawRelation1(); - if(p->drawPhi2) - p->m_renderTopo->drawRelation2(); - } -} - -void RenderTopoSurfacePlugin::mousePress(View* view, QMouseEvent* event) -{ -// if (Shift()) -// { -// ParameterSet* params = h_viewParams[view]; - -// m_renderTopo->updateData(myMap, position, m_coeff_topo_explod[0], m_coeff_topo_explod[1], m_coeff_topo_explod[2], *m_selNoBoundary) ; - -// Dart d = m_renderTopo->picking(myMap, x, y, *m_selNoBoundary); -// if (d != Dart::nil()) -// { -// emit(dartSelected(d); -// } -// } -} - -void RenderTopoSurfacePlugin::viewLinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - ParameterSet* params = new ParameterSet(); - h_viewParams.insert(view, params); - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - addManagedMap(view, mh); - - connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - connect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - - if(view->isCurrentView()) - m_dockTab->refreshUI(params); - } -} - -void RenderTopoSurfacePlugin::viewUnlinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - removeManagedMap(view, mh); - - ParameterSet* params = h_viewParams[view]; - delete params; - h_viewParams.remove(view); - - disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - disconnect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - } -} - -void RenderTopoSurfacePlugin::currentViewChanged(View* view) -{ - if(isLinkedToView(view)) - m_dockTab->refreshUI(h_viewParams[view]); -} - -void RenderTopoSurfacePlugin::mapLinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - addManagedMap(view, m); -} - -void RenderTopoSurfacePlugin::mapUnlinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - removeManagedMap(view, m); -} - -void RenderTopoSurfacePlugin::addManagedMap(View* v, MapHandlerGen *m) -{ - connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); - connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = new PerMapParameterSet(m); - - registerShader(perMap->m_renderTopo->shader1()); - registerShader(perMap->m_renderTopo->shader2()); - - params->perMap.insert(m->getName(), perMap); - - if(params->selectedMap == NULL || params->perMap.count() == 1) - changeSelectedMap(v, m); - else - m_dockTab->refreshUI(params); -} - -void RenderTopoSurfacePlugin::removeManagedMap(View *v, MapHandlerGen *m) -{ - disconnect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); - disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = params->perMap[m->getName()]; - - unregisterShader(perMap->m_renderTopo->shader1()); - unregisterShader(perMap->m_renderTopo->shader2()); - - delete perMap; - params->perMap.remove(m->getName()); - - if(params->selectedMap == m) - { - if(!params->perMap.empty()) - changeSelectedMap(v, m_window->getMap(params->perMap.begin().key())); - else - changeSelectedMap(v, NULL); - } - else - m_dockTab->refreshUI(params); -} - -void RenderTopoSurfacePlugin::changeSelectedMap(View* view, MapHandlerGen* map) -{ - ParameterSet* params = h_viewParams[view]; - - MapHandlerGen* prev = params->selectedMap; - params->selectedMap = map; - - if(view->isCurrentView()) - { - if(prev) - disconnect(prev, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&))); - if(map) - connect(map, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&))); - - m_dockTab->refreshUI(params); - } -} - -void RenderTopoSurfacePlugin::changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->perMap[map->getName()]; - perMap->positionAttribute = attribute; - perMap->updateRender(); - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changeDrawDarts(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->drawDarts = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changeDartsColor(View* view, MapHandlerGen* map, QColor c, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->perMap[map->getName()]; - perMap->dartsColor = c; - perMap->m_renderTopo->setInitialDartsColor(c.redF(), c.greenF(), c.blueF()); - perMap->m_renderTopo->setAllDartsColor(c.redF(), c.greenF(), c.blueF()); - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changeDrawPhi1(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->drawPhi1 = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changePhi1Color(View* view, MapHandlerGen* map, QColor c, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->phi1Color = c; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changeDrawPhi2(View* view, MapHandlerGen* map, bool b, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->drawPhi2 = b; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changePhi2Color(View* view, MapHandlerGen* map, QColor c, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->phi2Color = c; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changeEdgesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->perMap[map->getName()]; - perMap->edgesScaleFactor = i / 100.0; - perMap->updateRender(); - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->perMap[map->getName()]; - perMap->facesScaleFactor = i / 100.0; - perMap->updateRender(); - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderTopoSurfacePlugin::attributeModified(unsigned int orbit, QString nameAttr) -{ - if(orbit == VERTEX) - { - MapHandlerGen* map = static_cast(QObject::sender()); - foreach(View* view, l_views) - { - ParameterSet* params = h_viewParams[view]; - if(params->perMap.contains(map->getName())) - { - PerMapParameterSet* perMap = params->perMap[map->getName()]; - if(nameAttr == QString::fromStdString(perMap->positionAttribute.name())) - perMap->updateRender(); - } - } - } -} - -void RenderTopoSurfacePlugin::connectivityModified() -{ - -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(RenderTopoSurfacePlugin, RenderTopoSurfacePlugin) -#else -Q_EXPORT_PLUGIN2(RenderTopoSurfacePluginD, RenderTopoSurfacePlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp b/SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp deleted file mode 100644 index 946604bed..000000000 --- a/SCHNApps_old/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp +++ /dev/null @@ -1,208 +0,0 @@ -#include "renderTopoSurfaceDockTab.h" - -#include "renderTopoSurface.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -RenderTopoSurfaceDockTab::RenderTopoSurfaceDockTab(Window* w, RenderTopoSurfacePlugin* p) : - m_window(w), - m_plugin(p), - b_refreshingUI(false) -{ - setupUi(this); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - connect(combo_positionAttribute, SIGNAL(currentIndexChanged(int)), this, SLOT(positionAttributeChanged(int))); - connect(check_drawDarts, SIGNAL(toggled(bool)), this, SLOT(drawDartsChanged(bool))); - connect(combo_dartsColor, SIGNAL(currentIndexChanged(int)), this, SLOT(dartsColorChanged(int))); - connect(check_drawPhi1, SIGNAL(toggled(bool)), this, SLOT(drawPhi1Changed(bool))); - connect(combo_phi1Color, SIGNAL(currentIndexChanged(int)), this, SLOT(phi1ColorChanged(int))); - connect(check_drawPhi2, SIGNAL(toggled(bool)), this, SLOT(drawPhi2Changed(bool))); - connect(combo_phi2Color, SIGNAL(currentIndexChanged(int)), this, SLOT(phi2ColorChanged(int))); - connect(slider_edgesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(edgesScaleFactorChanged(int))); - connect(slider_facesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(facesScaleFactorChanged(int))); -} - -void RenderTopoSurfaceDockTab::refreshUI(ParameterSet* params) -{ - m_currentParams = params; - - b_refreshingUI = true; - - mapList->clear(); - combo_positionAttribute->clear(); - - MapHandlerGen* mh = params->selectedMap; - - QHash::const_iterator i = params->perMap.constBegin(); - while (i != params->perMap.constEnd()) - { - mapList->addItem(i.key()); - if(mh != NULL && i.key() == mh->getName()) - { - QList item = mapList->findItems(mh->getName(), Qt::MatchExactly); - item[0]->setSelected(true); - - PerMapParameterSet* p = params->perMap[mh->getName()]; - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - unsigned int j = 0; - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - combo_positionAttribute->addItem(i.key()); - if(i.key() == QString::fromStdString(p->positionAttribute.name())) - combo_positionAttribute->setCurrentIndex(j); - - ++j; - } - } - - check_drawDarts->setChecked(p->drawDarts); - combo_dartsColor->setColor(p->dartsColor); - check_drawPhi1->setChecked(p->drawPhi1); - combo_phi1Color->setColor(p->phi1Color); - check_drawPhi2->setChecked(p->drawPhi2); - combo_phi2Color->setColor(p->phi2Color); - slider_edgesScaleFactor->setSliderPosition(p->edgesScaleFactor * 100.0); - slider_facesScaleFactor->setSliderPosition(p->facesScaleFactor * 100.0); - } - ++i; - } - - b_refreshingUI = false; -} - -void RenderTopoSurfaceDockTab::selectedMapChanged() -{ - if(!b_refreshingUI) - { - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - m_plugin->changeSelectedMap(m_window->getCurrentView(), m_window->getMap(currentItems[0]->text())); - } -} - -void RenderTopoSurfaceDockTab::positionAttributeChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePositionAttribute(view, map, map->getAttribute(combo_positionAttribute->currentText()), true); - } -} - -void RenderTopoSurfaceDockTab::drawDartsChanged(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeDrawDarts(view, map, b, true); - } -} - -void RenderTopoSurfaceDockTab::dartsColorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeDartsColor(view, map, combo_dartsColor->color(), true); - } -} - -void RenderTopoSurfaceDockTab::drawPhi1Changed(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeDrawPhi1(view, map, b, true); - } -} - -void RenderTopoSurfaceDockTab::phi1ColorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePhi1Color(view, map, combo_phi1Color->color(), true); - } -} - -void RenderTopoSurfaceDockTab::drawPhi2Changed(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeDrawPhi2(view, map, b, true); - } -} - -void RenderTopoSurfaceDockTab::phi2ColorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePhi2Color(view, map, combo_phi2Color->color(), true); - } -} - -void RenderTopoSurfaceDockTab::facesScaleFactorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeEdgesScaleFactor(view, map, i, true); - } -} - -void RenderTopoSurfaceDockTab::edgesScaleFactorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeFacesScaleFactor(view, map, i, true); - } -} - -void RenderTopoSurfaceDockTab::addAttributeToList(unsigned int orbit, const QString& nameAttr) -{ - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - const QString& typeAttr = m_currentParams->selectedMap->getAttributeTypeName(orbit, nameAttr); - - if(typeAttr == vec3TypeName) - { - combo_positionAttribute->addItem(nameAttr); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderVector/CMakeLists.txt b/SCHNApps_old/Plugins/renderVector/CMakeLists.txt deleted file mode 100644 index de5e22201..000000000 --- a/SCHNApps_old/Plugins/renderVector/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME RenderVector ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/renderVector ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/renderVector.h - ${PLUGIN_ROOT_DIR}/include/renderVectorDockTab.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/renderVector/forms/renderVector.ui b/SCHNApps_old/Plugins/renderVector/forms/renderVector.ui deleted file mode 100644 index cba7d87d9..000000000 --- a/SCHNApps_old/Plugins/renderVector/forms/renderVector.ui +++ /dev/null @@ -1,89 +0,0 @@ - - - RenderVectorDockWidget - - - - 0 - 0 - 174 - 545 - - - - Form - - - - - - - - - - - Position : - - - - - - - - 0 - 0 - - - - - - - - - - Vectors : - - - - - - - QAbstractItemView::MultiSelection - - - - - - - Vectors Size : - - - - - - - 50 - - - Qt::Horizontal - - - - - - - Qt::Vertical - - - - 156 - 161 - - - - - - - - - diff --git a/SCHNApps_old/Plugins/renderVector/include/renderVector.h b/SCHNApps_old/Plugins/renderVector/include/renderVector.h deleted file mode 100644 index d67b1a53c..000000000 --- a/SCHNApps_old/Plugins/renderVector/include/renderVector.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef _RENDERVECTOR_PLUGIN_H_ -#define _RENDERVECTOR_PLUGIN_H_ - -#include "plugin.h" -#include "renderVectorDockTab.h" - -#include "Utils/Shaders/shaderVectorPerVertex.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -struct PerMapParameterSet -{ - PerMapParameterSet() : - positionVBO(NULL), - vectorsScaleFactor(1.0f) - {} - - PerMapParameterSet(MapHandlerGen* map); - - Utils::VBO* positionVBO; - std::vector vectorVBO; - float vectorsScaleFactor; -}; - -struct ParameterSet -{ - ParameterSet() : selectedMap(NULL) - {} - - QHash perMap; - MapHandlerGen* selectedMap; -}; - - -class RenderVectorPlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - RenderVectorPlugin() - { - setProvidesRendering(true); - } - - ~RenderVectorPlugin() - {} - - virtual bool enable(); - virtual void disable(); - - virtual void redraw(View *view); - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -protected: - RenderVectorDockTab* m_dockTab; - QHash h_viewParams; - - CGoGN::Utils::ShaderVectorPerVertex* m_vectorShader; - -public slots: - void viewLinked(View* view, Plugin* plugin); - void viewUnlinked(View* view, Plugin* plugin); - void currentViewChanged(View* view); - - void mapLinked(MapHandlerGen* m); - void mapUnlinked(MapHandlerGen* m); - -protected: - void addManagedMap(View *v, MapHandlerGen* m); - void removeManagedMap(View *v, MapHandlerGen* m); - -public slots: - void changeSelectedMap(View* view, MapHandlerGen* map); - - void changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI = false); - void changeSelectedVectorsVBO(View* view, MapHandlerGen* map, const std::vector& vbos, bool fromUI = false); - void changeVectorsScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderVector/include/renderVectorDockTab.h b/SCHNApps_old/Plugins/renderVector/include/renderVectorDockTab.h deleted file mode 100644 index b0f2e5466..000000000 --- a/SCHNApps_old/Plugins/renderVector/include/renderVectorDockTab.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _RENDERVECTOR_DOCK_TAB_H_ -#define _RENDERVECTOR_DOCK_TAB_H_ - -#include "ui_renderVector.h" -#include "Utils/vbo.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class RenderVectorPlugin; -struct ParameterSet; - -class RenderVectorDockTab : public QWidget, public Ui::RenderVectorDockWidget -{ - Q_OBJECT - -public: - RenderVectorDockTab(Window* w, RenderVectorPlugin* p); - -private: - Window* m_window; - RenderVectorPlugin* m_plugin; - ParameterSet* m_currentParams; - bool b_refreshingUI; - -public slots: - void refreshUI(ParameterSet* params); - - void selectedMapChanged(); - - void positionVBOChanged(int index); - void selectedVectorsVBOChanged(); - void vectorsScaleFactorChanged(int i); - - void addVBOToList(Utils::VBO* vbo); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/renderVector/src/renderVector.cpp b/SCHNApps_old/Plugins/renderVector/src/renderVector.cpp deleted file mode 100644 index cd0d24135..000000000 --- a/SCHNApps_old/Plugins/renderVector/src/renderVector.cpp +++ /dev/null @@ -1,236 +0,0 @@ -#include "renderVector.h" - -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -PerMapParameterSet::PerMapParameterSet(MapHandlerGen* map) : - positionVBO(NULL), - vectorsScaleFactor(1.0f) -{ - bool positionFound = false; - - QList vbos = map->getVBOList(); - for(int i = 0; i < vbos.count(); ++i) - { - if(vbos[i]->dataSize() == 3) - { - if(!positionFound) positionVBO = vbos[i]; - if(vbos[i]->name() == "position") // try to select a VBO named "position" - { - positionVBO = vbos[i]; - positionFound = true; - } - } - } -} - - -bool RenderVectorPlugin::enable() -{ - m_dockTab = new RenderVectorDockTab(m_window, this); - addTabInDock(m_dockTab, "RenderVector"); - - m_vectorShader = new Utils::ShaderVectorPerVertex(); - m_vectorShader->setColor(Geom::Vec4f(1.0f, 0.0f, 0.0f, 1.0f)); - - registerShader(m_vectorShader); - - connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*))); - connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*))); - connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*))); - - return true; -} - -void RenderVectorPlugin::disable() -{ - delete m_vectorShader; -} - -void RenderVectorPlugin::redraw(View* view) -{ - ParameterSet* params = h_viewParams[view]; - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* m, maps) - { - PerMapParameterSet* p = params->perMap[m->getName()]; - m_vectorShader->setScale(m->getBBdiagSize() / 100.0f * p->vectorsScaleFactor) ; - if(p->positionVBO != NULL) - { - m_vectorShader->setAttributePosition(p->positionVBO) ; - for(std::vector::const_iterator it = p->vectorVBO.begin(); it != p->vectorVBO.end(); ++it) - { - m_vectorShader->setAttributeVector(*it) ; - glLineWidth(1.0f) ; - m->draw(m_vectorShader, Algo::Render::GL2::POINTS) ; - } - } - } -} - -void RenderVectorPlugin::viewLinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - ParameterSet* params = new ParameterSet(); - h_viewParams.insert(view, params); - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - addManagedMap(view, mh); - - connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - connect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - - if(view->isCurrentView()) - m_dockTab->refreshUI(params); - } -} - -void RenderVectorPlugin::viewUnlinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - removeManagedMap(view, mh); - - ParameterSet* params = h_viewParams[view]; - delete params; - h_viewParams.remove(view); - - disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - disconnect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - } -} - -void RenderVectorPlugin::currentViewChanged(View* view) -{ - if(isLinkedToView(view)) - m_dockTab->refreshUI(h_viewParams[view]); -} - -void RenderVectorPlugin::mapLinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - addManagedMap(view, m); -} - -void RenderVectorPlugin::mapUnlinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - removeManagedMap(view, m); -} - -void RenderVectorPlugin::addManagedMap(View* v, MapHandlerGen *m) -{ -// connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = new PerMapParameterSet(m); - - params->perMap.insert(m->getName(), perMap); - - if(params->selectedMap == NULL || params->perMap.count() == 1) - changeSelectedMap(v, m); - else - m_dockTab->refreshUI(params); -} - -void RenderVectorPlugin::removeManagedMap(View *v, MapHandlerGen *m) -{ -// disconnect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = params->perMap[m->getName()]; - - delete perMap; - params->perMap.remove(m->getName()); - - if(params->selectedMap == m) - { - if(!params->perMap.empty()) - changeSelectedMap(v, m_window->getMap(params->perMap.begin().key())); - else - changeSelectedMap(v, NULL); - } - else - m_dockTab->refreshUI(params); -} - -void RenderVectorPlugin::changeSelectedMap(View* view, MapHandlerGen* map) -{ - ParameterSet* params = h_viewParams[view]; - - MapHandlerGen* prev = params->selectedMap; - params->selectedMap = map; - - if(view->isCurrentView()) - { - if(prev) - disconnect(prev, SIGNAL(vboAdded(Utils::VBO*)), m_dockTab, SLOT(addVBOToList(Utils::VBO*))); - if(map) - connect(map, SIGNAL(vboAdded(Utils::VBO*)), m_dockTab, SLOT(addVBOToList(Utils::VBO*))); - - m_dockTab->refreshUI(params); - } -} - -void RenderVectorPlugin::changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->positionVBO = vbo; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderVectorPlugin::changeSelectedVectorsVBO(View* view, MapHandlerGen* map, const std::vector& vbos, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->vectorVBO = vbos; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -void RenderVectorPlugin::changeVectorsScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->vectorsScaleFactor = i / 50.0; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - view->updateGL(); - } -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(RenderVectorPlugin, RenderVectorPlugin) -#else -Q_EXPORT_PLUGIN2(RenderVectorPluginD, RenderVectorPlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/renderVector/src/renderVectorDockTab.cpp b/SCHNApps_old/Plugins/renderVector/src/renderVectorDockTab.cpp deleted file mode 100644 index de91436c4..000000000 --- a/SCHNApps_old/Plugins/renderVector/src/renderVectorDockTab.cpp +++ /dev/null @@ -1,136 +0,0 @@ -#include "renderVectorDockTab.h" - -#include "renderVector.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -RenderVectorDockTab::RenderVectorDockTab(Window* w, RenderVectorPlugin* p) : - m_window(w), - m_plugin(p), - b_refreshingUI(false) -{ - setupUi(this); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - connect(combo_positionVBO, SIGNAL(currentIndexChanged(int)), this, SLOT(positionVBOChanged(int))); - connect(list_vectorVBO, SIGNAL(itemSelectionChanged()), this, SLOT(selectedVectorsVBOChanged())); - connect(slider_vectorsScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(vectorsScaleFactorChanged(int))); -} - -void RenderVectorDockTab::refreshUI(ParameterSet* params) -{ - m_currentParams = params; - - b_refreshingUI = true; - - mapList->clear(); - combo_positionVBO->clear(); - list_vectorVBO->clear(); - - MapHandlerGen* map = params->selectedMap; - - QHash::const_iterator i = params->perMap.constBegin(); - while (i != params->perMap.constEnd()) - { - mapList->addItem(i.key()); - if(map != NULL && i.key() == map->getName()) - { - QList item = mapList->findItems(map->getName(), Qt::MatchExactly); - item[0]->setSelected(true); - - PerMapParameterSet* p = params->perMap[map->getName()]; - - QList vbos = map->getVBOList(); - unsigned int j = 0; - for(int i = 0; i < vbos.count(); ++i) - { - if(vbos[i]->dataSize() == 3) - { - combo_positionVBO->addItem(QString::fromStdString(vbos[i]->name())); - if(vbos[i] == p->positionVBO) - combo_positionVBO->setCurrentIndex(j); - - list_vectorVBO->addItem(QString::fromStdString(vbos[i]->name())); - if(std::find(p->vectorVBO.begin(), p->vectorVBO.end(), vbos[i]) != p->vectorVBO.end()) - list_vectorVBO->item(j)->setSelected(true); - - ++j; - } - } - - slider_vectorsScaleFactor->setSliderPosition(p->vectorsScaleFactor * 50.0); - } - ++i; - } - - b_refreshingUI = false; -} - -void RenderVectorDockTab::selectedMapChanged() -{ - if(!b_refreshingUI) - { - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - m_plugin->changeSelectedMap(m_window->getCurrentView(), m_window->getMap(currentItems[0]->text())); - } -} - -void RenderVectorDockTab::positionVBOChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePositionVBO(view, map, map->getVBO(combo_positionVBO->currentText()), true); - } -} - -void RenderVectorDockTab::selectedVectorsVBOChanged() -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - { - QList currentItems = list_vectorVBO->selectedItems(); - std::vector vbos; - foreach(QListWidgetItem* item, currentItems) - vbos.push_back(map->getVBO(item->text())); - m_plugin->changeSelectedVectorsVBO(view, map, vbos, true); - } - } -} - -void RenderVectorDockTab::vectorsScaleFactorChanged(int i) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeVectorsScaleFactor(view, map, i, true); - } -} - -void RenderVectorDockTab::addVBOToList(Utils::VBO* vbo) -{ - if(vbo->dataSize() == 3) - { - QString name = QString::fromStdString(vbo->name()); - combo_positionVBO->addItem(name); - list_vectorVBO->addItem(name); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/subdivideSurface/CMakeLists.txt b/SCHNApps_old/Plugins/subdivideSurface/CMakeLists.txt deleted file mode 100644 index 030bbf60c..000000000 --- a/SCHNApps_old/Plugins/subdivideSurface/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME SubdivideSurface ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/subdivideSurface ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/subdivideSurface.h - ${PLUGIN_ROOT_DIR}/include/subdivideSurfaceDialog.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/subdivideSurface/forms/subdivideSurfaceDialog.ui b/SCHNApps_old/Plugins/subdivideSurface/forms/subdivideSurfaceDialog.ui deleted file mode 100644 index a7d65ba63..000000000 --- a/SCHNApps_old/Plugins/subdivideSurface/forms/subdivideSurfaceDialog.ui +++ /dev/null @@ -1,95 +0,0 @@ - - - SubdivideSurfaceDialog - - - - 0 - 0 - 314 - 230 - - - - Subdivide surface - - - - - - - - - - - Position attribute : - - - - - - - - 0 - 0 - - - - - - - - - - - - Loop - - - - - - - Catmull-Clark - - - - - - - Triangule faces - - - - - - - - - - - Cancel - - - - - - - Apply - - - - - - - OK - - - - - - - - - - diff --git a/SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurface.h b/SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurface.h deleted file mode 100644 index 46147165f..000000000 --- a/SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurface.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef _SUBDIVIDESURFACE_PLUGIN_H_ -#define _SUBDIVIDESURFACE_PLUGIN_H_ - -#include "plugin.h" -#include "subdivideSurfaceDialog.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class SubdivideSurfacePlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - SubdivideSurfacePlugin() - { - setProvidesRendering(false); - } - - ~SubdivideSurfacePlugin() - {} - - virtual bool enable(); - virtual void disable() {} - - virtual void redraw(View *view) {} - - virtual void keyPress(View* view, QKeyEvent* event) {} - virtual void keyRelease(View* view, QKeyEvent* event) {} - virtual void mousePress(View* view, QMouseEvent* event) {} - virtual void mouseRelease(View* view, QMouseEvent* event) {} - virtual void mouseMove(View* view, QMouseEvent* event) {} - virtual void wheelEvent(View* view, QWheelEvent* event) {} - -public slots: - void openSubdivideSurfaceDialog(); - void subdivideSurfaceFromDialog(); - - void loopSubdivision( - const QString& mapName, - const QString& positionAttributeName = "position" - ); - void CCSubdivision( - const QString& mapName, - const QString& positionAttributeName = "position" - ); - void trianguleFaces( - const QString& mapName, - const QString& positionAttributeName = "position" - ); - -private: - SubdivideSurfaceDialog* m_subdivideSurfaceDialog; - - QAction* m_subdivideSurfaceAction; -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurfaceDialog.h b/SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurfaceDialog.h deleted file mode 100644 index 69b3b81e0..000000000 --- a/SCHNApps_old/Plugins/subdivideSurface/include/subdivideSurfaceDialog.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _SUBDIVIDESURFACE_DIALOG_H_ -#define _SUBDIVIDESURFACE_DIALOG_H_ - -#include "ui_subdivideSurfaceDialog.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class MapHandlerGen; - -class SubdivideSurfaceDialog : public QDialog, public Ui::SubdivideSurfaceDialog -{ - Q_OBJECT - -public: - SubdivideSurfaceDialog(Window* w); - -private: - Window* m_window; - MapHandlerGen* m_selectedMap; - -public slots: - void selectedMapChanged(); - void addMapToList(MapHandlerGen* m); - void removeMapFromList(MapHandlerGen* m); - void addAttributeToList(unsigned int orbit, const QString& name); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurface.cpp b/SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurface.cpp deleted file mode 100644 index 2328eb934..000000000 --- a/SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurface.cpp +++ /dev/null @@ -1,128 +0,0 @@ -#include "subdivideSurface.h" - -#include "mapHandler.h" - -#include "Algo/Modelisation/subdivision.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -bool SubdivideSurfacePlugin::enable() -{ - m_subdivideSurfaceDialog = new SubdivideSurfaceDialog(m_window); - - m_subdivideSurfaceAction = new QAction("Subdivide surface", this); - - addMenuAction("Surface;Subdivide", m_subdivideSurfaceAction); - - connect(m_subdivideSurfaceAction, SIGNAL(triggered()), this, SLOT(openSubdivideSurfaceDialog())); - - connect(m_subdivideSurfaceDialog, SIGNAL(accepted()), this, SLOT(subdivideSurfaceFromDialog())); - connect(m_subdivideSurfaceDialog->button_apply, SIGNAL(clicked()), this, SLOT(subdivideSurfaceFromDialog())); - - return true; -} - -void SubdivideSurfacePlugin::openSubdivideSurfaceDialog() -{ - m_subdivideSurfaceDialog->show(); -} - -void SubdivideSurfacePlugin::subdivideSurfaceFromDialog() -{ - QList currentItems = m_subdivideSurfaceDialog->mapList->selectedItems(); - if(!currentItems.empty()) - { - const QString& mapName = currentItems[0]->text(); - const QString& positionName = m_subdivideSurfaceDialog->combo_positionAttribute->currentText(); - - if(m_subdivideSurfaceDialog->radio_Loop->isChecked()) - loopSubdivision(mapName, positionName); - else if(m_subdivideSurfaceDialog->radio_CC->isChecked()) - CCSubdivision(mapName, positionName); - else if(m_subdivideSurfaceDialog->radio_trianguleFaces->isChecked()) - trianguleFaces(mapName, positionName); - } -} - -void SubdivideSurfacePlugin::loopSubdivision( - const QString& mapName, - const QString& positionAttributeName) -{ - MapHandler* mh = static_cast*>(m_window->getMap(mapName)); - if(mh == NULL) - return; - - VertexAttribute position = mh->getAttribute(positionAttributeName); - if(!position.isValid()) - return; - - PFP2::MAP* map = mh->getMap(); - Algo::Surface::Modelisation::LoopSubdivision(*map, position); - - mh->notifyAttributeModification(position); - mh->notifyConnectivityModification(); - - QList views = mh->getLinkedViews(); - foreach(View* view, views) - view->updateGL(); -} - -void SubdivideSurfacePlugin::CCSubdivision( - const QString& mapName, - const QString& positionAttributeName) -{ - MapHandler* mh = static_cast*>(m_window->getMap(mapName)); - if(mh == NULL) - return; - - VertexAttribute position = mh->getAttribute(positionAttributeName); - if(!position.isValid()) - return; - - PFP2::MAP* map = mh->getMap(); - Algo::Surface::Modelisation::CatmullClarkSubdivision(*map, position); - - mh->notifyAttributeModification(position); - mh->notifyConnectivityModification(); - - QList views = mh->getLinkedViews(); - foreach(View* view, views) - view->updateGL(); -} - -void SubdivideSurfacePlugin::trianguleFaces( - const QString& mapName, - const QString& positionAttributeName) -{ - MapHandler* mh = static_cast*>(m_window->getMap(mapName)); - if(mh == NULL) - return; - - VertexAttribute position = mh->getAttribute(positionAttributeName); - if(!position.isValid()) - return; - - PFP2::MAP* map = mh->getMap(); - Algo::Surface::Modelisation::trianguleFaces(*map, position); - - mh->notifyAttributeModification(position); - mh->notifyConnectivityModification(); - - QList views = mh->getLinkedViews(); - foreach(View* view, views) - view->updateGL(); -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(SubdivideSurfacePlugin, SubdivideSurfacePlugin) -#else -Q_EXPORT_PLUGIN2(SubdivideSurfacePluginD, SubdivideSurfacePlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurfaceDialog.cpp b/SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurfaceDialog.cpp deleted file mode 100644 index 0f3aeacec..000000000 --- a/SCHNApps_old/Plugins/subdivideSurface/src/subdivideSurfaceDialog.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include "subdivideSurfaceDialog.h" - -#include "subdivideSurface.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -SubdivideSurfaceDialog::SubdivideSurfaceDialog(Window* w) : - m_window(w), - m_selectedMap(NULL) -{ - setupUi(this); - - connect(m_window, SIGNAL(mapAdded(MapHandlerGen*)), this, SLOT(addMapToList(MapHandlerGen*))); - connect(m_window, SIGNAL(mapRemoved(MapHandlerGen*)), this, SLOT(removeMapFromList(MapHandlerGen*))); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - - const QList& maps = m_window->getMapsList(); - foreach(MapHandlerGen* map, maps) - mapList->addItem(map->getName()); -} - -void SubdivideSurfaceDialog::selectedMapChanged() -{ - if(m_selectedMap) - disconnect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - { - combo_positionAttribute->clear(); - - const QString& mapname = currentItems[0]->text(); - MapHandlerGen* mh = m_window->getMap(mapname); - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - unsigned int j = 0; - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - combo_positionAttribute->addItem(i.key()); - if(i.key() == "position") // try to select a position attribute named "position" - combo_positionAttribute->setCurrentIndex(j); - - ++j; - } - } - - m_selectedMap = mh; - connect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - } - else - m_selectedMap = NULL; -} - -void SubdivideSurfaceDialog::addMapToList(MapHandlerGen* m) -{ - mapList->addItem(m->getName()); -} - -void SubdivideSurfaceDialog::removeMapFromList(MapHandlerGen* m) -{ - QList items = mapList->findItems(m->getName(), Qt::MatchExactly); - if(!items.empty()) - delete items[0]; - - if(m_selectedMap == m) - { - disconnect(m_selectedMap, SIGNAL(attributeAdded(unsigned int, const QString&)), this, SLOT(addAttributeToList(unsigned int, const QString&))); - m_selectedMap = NULL; - } -} - -void SubdivideSurfaceDialog::addAttributeToList(unsigned int orbit, const QString& nameAttr) -{ - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - const QString& typeAttr = m_selectedMap->getAttributeTypeName(orbit, nameAttr); - - if(typeAttr == vec3TypeName) - { - combo_positionAttribute->addItem(nameAttr); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/surfaceDeformation/CMakeLists.txt b/SCHNApps_old/Plugins/surfaceDeformation/CMakeLists.txt deleted file mode 100644 index c0bada3c4..000000000 --- a/SCHNApps_old/Plugins/surfaceDeformation/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET( PLUGIN_NAME SurfaceDeformation ) - -SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/surfaceDeformation ) - -INCLUDE_DIRECTORIES( - ${PLUGIN_ROOT_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - -file( - GLOB_RECURSE - PLUGIN_FILES - ${PLUGIN_ROOT_DIR}/src/*.cpp - ${PLUGIN_ROOT_DIR}/include/*.h - ${PLUGIN_ROOT_DIR}/include/*.hpp -) - -file( - GLOB_RECURSE - PLUGIN_UI_FILES - ${PLUGIN_ROOT_DIR}/forms/*.ui -) - -SET( - PLUGIN_QOBJECT_FILES - ${PLUGIN_ROOT_DIR}/include/surfaceDeformation.h - ${PLUGIN_ROOT_DIR}/include/surfaceDeformationDockTab.h -) - -include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt ) diff --git a/SCHNApps_old/Plugins/surfaceDeformation/forms/surfaceDeformation.ui b/SCHNApps_old/Plugins/surfaceDeformation/forms/surfaceDeformation.ui deleted file mode 100644 index 1d71cc82f..000000000 --- a/SCHNApps_old/Plugins/surfaceDeformation/forms/surfaceDeformation.ui +++ /dev/null @@ -1,88 +0,0 @@ - - - SurfaceDeformationWidget - - - - 0 - 0 - 189 - 545 - - - - Form - - - - - - - - - - - Position : - - - - - - - - 0 - 0 - - - - - - - - - - Select Vertices - - - - - - - - locked - - - - - - - handle - - - - - - - - - - - - Qt::Vertical - - - - 156 - 161 - - - - - - mapList - label_2 - groupBox - - - - diff --git a/SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformation.h b/SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformation.h deleted file mode 100644 index 090d71d7f..000000000 --- a/SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformation.h +++ /dev/null @@ -1,154 +0,0 @@ -#ifndef _SURFACEDEFORMATION_PLUGIN_H_ -#define _SURFACEDEFORMATION_PLUGIN_H_ - -#include "plugin.h" -#include "surfaceDeformationDockTab.h" - -#include "mapHandler.h" - -#include "Utils/pointSprite.h" - -#include "Container/fakeAttribute.h" - -#include "NL/nl.h" -#include "Algo/LinearSolving/basic.h" -#include "Eigen/Dense" - -namespace CGoGN -{ - -namespace SCHNApps -{ - - -enum SelectionMode -{ - LOCKED, - HANDLE -}; - - -typedef NoNameIOAttribute Eigen_Matrix3f ; - -struct PerMapParameterSet -{ - PerMapParameterSet(MapHandlerGen* mh); - ~PerMapParameterSet(); - - void initParameters(); - - MapHandlerGen* mh; - - VertexAttribute positionAttribute; - CellMarker* lockingMarker; - CellMarker* handleMarker; - SelectionMode verticesSelectionMode; - std::vector lockedVertices; - std::vector handleVertices; - std::vector handleVerticesId; - Utils::VBO* lockedVerticesVBO; - Utils::VBO* handleVerticesVBO; - - VertexAttribute positionInit; - VertexAttribute vertexNormal; - EdgeAttribute edgeAngle; - EdgeAttribute edgeWeight; - VertexAttribute vertexArea; - VertexAttribute diffCoord; - VertexAttribute vertexRotationMatrix; - VertexAttribute rotatedDiffCoord; - - VertexAttribute vIndex; - unsigned int nb_vertices; - NLContext nlContext; -}; - -struct ParameterSet -{ - ParameterSet() : selectedMap(NULL) - {} - - PerMapParameterSet* getCurrentMapParameterSet() - { - if(selectedMap) - return perMap[selectedMap->getName()]; - else - return NULL; - } - - QHash perMap; - MapHandlerGen* selectedMap; -}; - - -class SurfaceDeformationPlugin : public Plugin -{ - Q_OBJECT - Q_INTERFACES(CGoGN::SCHNApps::Plugin) - -public: - SurfaceDeformationPlugin() : - selecting(false), - dragging(false) - { - setProvidesRendering(true); - } - - ~SurfaceDeformationPlugin() - {} - - virtual bool enable(); - virtual void disable(); - - virtual void redraw(View *view); - - virtual void keyPress(View* view, QKeyEvent* event); - virtual void keyRelease(View* view, QKeyEvent* event); - virtual void mousePress(View* view, QMouseEvent* event); - virtual void mouseRelease(View* view, QMouseEvent* event); - virtual void mouseMove(View* view, QMouseEvent* event); - virtual void wheelEvent(View* view, QWheelEvent* event); - -protected: - SurfaceDeformationDockTab* m_dockTab; - QHash h_viewParams; - - Utils::PointSprite* m_pointSprite; - - Utils::VBO* selectionSphereVBO; - - bool selecting; - PFP2::VEC3 selectionCenter; - PFP2::REAL selectionRadius; - bool dragging; - PFP2::REAL dragZ; - qglviewer::Vec dragPrevious; - -public slots: - void viewLinked(View* view, Plugin* plugin); - void viewUnlinked(View* view, Plugin* plugin); - void currentViewChanged(View* view); - - void mapLinked(MapHandlerGen* m); - void mapUnlinked(MapHandlerGen* m); - -protected: - void addManagedMap(View *v, MapHandlerGen* m); - void removeManagedMap(View *v, MapHandlerGen* m); - -public slots: - void changeSelectedMap(View* view, MapHandlerGen* map); - - void changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI = false); - void changeVerticesSelectionMode(View* view, MapHandlerGen* map, SelectionMode m, bool fromUI = false); - -protected: - void matchDiffCoord(View* view, MapHandlerGen* map); - void asRigidAsPossible(View* view, MapHandlerGen* map); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformationDockTab.h b/SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformationDockTab.h deleted file mode 100644 index 34bd3923b..000000000 --- a/SCHNApps_old/Plugins/surfaceDeformation/include/surfaceDeformationDockTab.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef _SURFACE_DEFORMATION_DOCK_TAB_H_ -#define _SURFACE_DEFORMATION_DOCK_TAB_H_ - -#include "ui_surfaceDeformation.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -class Window; -class SurfaceDeformationPlugin; -struct ParameterSet; - -class SurfaceDeformationDockTab : public QWidget, public Ui::SurfaceDeformationWidget -{ - Q_OBJECT - -public: - SurfaceDeformationDockTab(Window* w, SurfaceDeformationPlugin* p); - -private: - Window* m_window; - SurfaceDeformationPlugin* m_plugin; - ParameterSet* m_currentParams; - bool b_refreshingUI; - -public slots: - void refreshUI(ParameterSet* params); - - void selectedMapChanged(); - - void positionAttributeChanged(int index); - void selectLockedVertices(bool b); - void selectHandleVertices(bool b); - - void addAttributeToList(unsigned int orbit, const QString& nameAttr); -}; - -} // namespace SCHNApps - -} // namespace CGoGN - -#endif diff --git a/SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformation.cpp b/SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformation.cpp deleted file mode 100644 index 629a9ea9d..000000000 --- a/SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformation.cpp +++ /dev/null @@ -1,682 +0,0 @@ -#include "surfaceDeformation.h" - -#include "Algo/Selection/raySelector.h" -#include "Algo/Selection/collector.h" - -#include "Algo/Geometry/normal.h" -#include "Algo/Geometry/laplacian.h" - -#include -#include - -namespace CGoGN -{ - -namespace SCHNApps -{ - -PerMapParameterSet::PerMapParameterSet(MapHandlerGen* m) : - mh(m), - verticesSelectionMode(LOCKED), - nlContext(NULL) -{ - QString positionName; - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - if(positionName != "position") // try to select an attribute named "position" - positionName = i.key(); // or anything else if not found - } - } - positionAttribute = mh->getAttribute(positionName); - - PFP2::MAP* map = static_cast*>(mh)->getMap(); - lockingMarker = new CellMarker(*map); - handleMarker = new CellMarker(*map); - - lockedVerticesVBO = new Utils::VBO(); - handleVerticesVBO = new Utils::VBO(); - - positionInit = mh->getAttribute("positionInit", false) ; - if(!positionInit.isValid()) - positionInit = mh->addAttribute("positionInit", false) ; - - vIndex = mh->getAttribute("vIndex", false); - if(!vIndex.isValid()) - vIndex = mh->addAttribute("vIndex", false); - -// edgeWeight = mh->getAttribute("edgeWeight", false); -// if(!edgeWeight.isValid()) -// edgeWeight = mh->addAttribute("edgeWeight", false); - -// vertexArea = mh->getAttribute("vertexArea", false); -// if(!vertexArea.isValid()) -// vertexArea = mh->addAttribute("vertexArea", false); - - diffCoord = mh->getAttribute("diffCoord", false); - if(!diffCoord.isValid()) - diffCoord = mh->addAttribute("diffCoord", false); - - vertexRotationMatrix = mh->getAttribute("vertexRotationMatrix", false) ; - if(!vertexRotationMatrix.isValid()) - vertexRotationMatrix = mh->addAttribute("vertexRotationMatrix", false); - - rotatedDiffCoord = mh->getAttribute("rotatedDiffCoord", false) ; - if(!rotatedDiffCoord.isValid()) - rotatedDiffCoord = mh->addAttribute("rotatedDiffCoord", false); - - initParameters(); -} - -PerMapParameterSet::~PerMapParameterSet() -{ - delete lockingMarker; - delete handleMarker; - delete lockedVerticesVBO; - delete handleVerticesVBO; - nlDeleteContext(nlContext); -} - -void PerMapParameterSet::initParameters() -{ - if(positionAttribute.isValid()) - { - PFP2::MAP* map = static_cast*>(mh)->getMap(); - - map->copyAttribute(positionInit, positionAttribute) ; - - nb_vertices = static_cast(map)->computeIndexCells(vIndex); - -// Algo::Surface::Geometry::computeCotanWeightEdges(*map, positionAttribute, edgeWeight) ; -// Algo::Surface::Geometry::computeVoronoiAreaVertices(*map, positionAttribute, vertexArea) ; -// Algo::Surface::Geometry::computeLaplacianCotanVertices(*map, edgeWeight, vertexArea, positionAttribute, diffCoord) ; - Algo::Surface::Geometry::computeLaplacianTopoVertices(*map, positionAttribute, diffCoord) ; - - for(unsigned int i = vertexRotationMatrix.begin(); i != vertexRotationMatrix.end() ; vertexRotationMatrix.next(i)) - vertexRotationMatrix[i] = Eigen::Matrix3f::Identity(); - - if(nlContext) - nlDeleteContext(nlContext); - nlContext = nlNewContext(); - nlSolverParameteri(NL_NB_VARIABLES, nb_vertices); - nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); - nlSolverParameteri(NL_SOLVER, NL_CHOLMOD_EXT); - } -} - - -bool SurfaceDeformationPlugin::enable() -{ - m_dockTab = new SurfaceDeformationDockTab(m_window, this); - addTabInDock(m_dockTab, "Surface Deformation"); - - selectionSphereVBO = new Utils::VBO(); - - m_pointSprite = new CGoGN::Utils::PointSprite(); - registerShader(m_pointSprite); - - connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*))); - connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*))); - connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*))); - - return true; -} - -void SurfaceDeformationPlugin::disable() -{ - delete m_pointSprite; -} - -void SurfaceDeformationPlugin::redraw(View* view) -{ - ParameterSet* params = h_viewParams[view]; - MapHandlerGen* mh = params->selectedMap; - if(mh) - { - PerMapParameterSet* perMap = params->perMap[mh->getName()]; - - if(!perMap->lockedVertices.empty() || !perMap->handleVertices.empty()) - { - m_pointSprite->setAttributePosition(perMap->lockedVerticesVBO); - m_pointSprite->setSize(mh->getBBdiagSize() / 250.0f); - m_pointSprite->setColor(CGoGN::Geom::Vec4f(1.0f, 0.0f, 0.0f, 0.75f)); - m_pointSprite->setLightPosition(CGoGN::Geom::Vec3f(0.0f, 0.0f, 1.0f)); - - m_pointSprite->enableVertexAttribs(); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDrawArrays(GL_POINTS, 0, perMap->lockedVertices.size()); - glDisable(GL_BLEND); - m_pointSprite->disableVertexAttribs(); - - m_pointSprite->setAttributePosition(perMap->handleVerticesVBO); - m_pointSprite->setSize(mh->getBBdiagSize() / 250.0f); - m_pointSprite->setColor(CGoGN::Geom::Vec4f(0.0f, 1.0f, 0.0f, 0.75f)); - m_pointSprite->setLightPosition(CGoGN::Geom::Vec3f(0.0f, 0.0f, 1.0f)); - - m_pointSprite->enableVertexAttribs(); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDrawArrays(GL_POINTS, 0, perMap->handleVertices.size()); - glDisable(GL_BLEND); - m_pointSprite->disableVertexAttribs(); - } - } - - if(selecting) - { - std::vector selectionPoint; - selectionPoint.push_back(selectionCenter); - selectionSphereVBO->updateData(selectionPoint); - - m_pointSprite->setAttributePosition(selectionSphereVBO); - m_pointSprite->setSize(selectionRadius); - m_pointSprite->setColor(CGoGN::Geom::Vec4f(0.0f, 0.0f, 1.0f, 0.5f)); - m_pointSprite->setLightPosition(CGoGN::Geom::Vec3f(0.0f, 0.0f, 1.0f)); - - m_pointSprite->enableVertexAttribs(); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDrawArrays(GL_POINTS, 0, 1); - glDisable(GL_BLEND); - m_pointSprite->disableVertexAttribs(); - } -} - -void SurfaceDeformationPlugin::keyPress(View* view, QKeyEvent* event) -{ - if(event->key() == Qt::Key_Shift) - { - view->setMouseTracking(true); - selecting = true; - view->updateGL(); - } - else if(event->key() == Qt::Key_R) - { - ParameterSet* params = h_viewParams[view]; - MapHandlerGen* map = params->selectedMap; - if(map) - { - asRigidAsPossible(view, map); - PerMapParameterSet* perMap = params->perMap[map->getName()]; - params->selectedMap->notifyAttributeModification(perMap->positionAttribute); - view->updateGL(); - } - } -} - -void SurfaceDeformationPlugin::keyRelease(View* view, QKeyEvent* event) -{ - if(event->key() == Qt::Key_Shift) - { - view->setMouseTracking(false); - selecting = false; - view->updateGL(); - } -} - -void SurfaceDeformationPlugin::mousePress(View* view, QMouseEvent* event) -{ - if(event->button() == Qt::LeftButton && selecting) - { - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->getCurrentMapParameterSet(); - - if(perMap) - { - QPoint pixel(event->x(), event->y()); - qglviewer::Vec orig; - qglviewer::Vec dir; - view->camera()->convertClickToLine(pixel, orig, dir); - - PFP2::VEC3 rayA(orig.x, orig.y, orig.z); - PFP2::VEC3 AB(dir.x, dir.y, dir.z); - - Dart d; - PFP2::MAP* map = static_cast*>(params->selectedMap)->getMap(); - Algo::Selection::vertexRaySelection(*map, perMap->positionAttribute, rayA, AB, d); - - if(d != NIL) - { - Algo::Surface::Selection::Collector_WithinSphere neigh(*map, perMap->positionAttribute, selectionRadius); - neigh.collectAll(d); - const std::vector& insideV = neigh.getInsideVertices(); - - for(unsigned int i = 0; i < insideV.size(); ++i) - { - unsigned int v = map->getEmbedding(insideV[i]); - if (!perMap->lockingMarker->isMarked(v)) - { - if(perMap->verticesSelectionMode == LOCKED) - perMap->lockedVertices.push_back(perMap->positionAttribute[v]); - perMap->lockingMarker->mark(v); - } - if(perMap->verticesSelectionMode == HANDLE) - { - if(!perMap->handleMarker->isMarked(v)) - { - perMap->handleVertices.push_back(perMap->positionAttribute[v]); - perMap->handleVerticesId.push_back(v); - perMap->handleMarker->mark(v); - } - } - } - - nlMakeCurrent(perMap->nlContext) ; - nlReset(NL_FALSE) ; - - perMap->lockedVerticesVBO->updateData(perMap->lockedVertices); - if(perMap->verticesSelectionMode == HANDLE) - perMap->handleVerticesVBO->updateData(perMap->handleVertices); - - view->updateGL() ; - } - } - } - else if(event->button() == Qt::RightButton && event->modifiers() & Qt::ShiftModifier) - { - view->setMouseTracking(false) ; - - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->getCurrentMapParameterSet(); - - if(perMap) - { - selecting = false ; - dragging = true ; - - dragZ = 0; - for(unsigned int i = 0; i < perMap->handleVertices.size(); ++i) - { - const PFP2::VEC3& p = perMap->handleVertices[i] ; - qglviewer::Vec q = view->camera()->projectedCoordinatesOf(qglviewer::Vec(p[0],p[1],p[2])); - dragZ += q.z ; - } - dragZ /= perMap->handleVertices.size() ; - - qglviewer::Vec p(event->x(), event->y(), dragZ); - dragPrevious = view->camera()->unprojectedCoordinatesOf(p); - } - } -} - -void SurfaceDeformationPlugin::mouseRelease(View* view, QMouseEvent* event) -{ - if(event->button() == Qt::RightButton) - dragging = false; -} - -void SurfaceDeformationPlugin::mouseMove(View* view, QMouseEvent* event) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->getCurrentMapParameterSet(); - - if(perMap) - { - if(dragging) - { - qglviewer::Vec p(event->x(), event->y(), dragZ); - qglviewer::Vec q = view->camera()->unprojectedCoordinatesOf(p); - - qglviewer::Vec vec = q - dragPrevious; - PFP2::VEC3 t(vec.x, vec.y, vec.z); - for(unsigned int i = 0; i < perMap->handleVertices.size(); ++i) - { - perMap->handleVertices[i] += t; - perMap->positionAttribute[perMap->handleVerticesId[i]] += t; - } - perMap->handleVerticesVBO->updateData(perMap->handleVertices); - - dragPrevious = q; - -// matchDiffCoord(view, map); - asRigidAsPossible(view, params->selectedMap); - - params->selectedMap->notifyAttributeModification(perMap->positionAttribute); - - view->updateGL(); - } - else if(selecting) - { - QPoint pixel(event->x(), event->y()); - qglviewer::Vec orig; - qglviewer::Vec dir; - view->camera()->convertClickToLine(pixel, orig, dir); - - PFP2::VEC3 rayA(orig.x, orig.y, orig.z); - PFP2::VEC3 AB(dir.x, dir.y, dir.z); - - Dart d; - PFP2::MAP* map = static_cast*>(params->selectedMap)->getMap(); - Algo::Selection::vertexRaySelection(*map, perMap->positionAttribute, rayA, AB, d); - if(d != NIL) - { - selectionCenter = perMap->positionAttribute[d]; - view->updateGL(); - } - } - } -} - -void SurfaceDeformationPlugin::wheelEvent(View* view, QWheelEvent* event) -{ - if(selecting) - { - if(event->delta() > 0) - selectionRadius *= 0.9f ; - else - selectionRadius *= 1.1f ; - view->updateGL() ; - } -} - -void SurfaceDeformationPlugin::viewLinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - ParameterSet* params = new ParameterSet(); - h_viewParams.insert(view, params); - - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - addManagedMap(view, mh); - - connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - connect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - - if(view->isCurrentView()) - m_dockTab->refreshUI(params); - } -} - -void SurfaceDeformationPlugin::viewUnlinked(View* view, Plugin* plugin) -{ - if(plugin == this) - { - const QList& maps = view->getLinkedMaps(); - foreach(MapHandlerGen* mh, maps) - removeManagedMap(view, mh); - - ParameterSet* params = h_viewParams[view]; - delete params; - h_viewParams.remove(view); - - disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*))); - disconnect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*))); - } -} - -void SurfaceDeformationPlugin::currentViewChanged(View* view) -{ - if(isLinkedToView(view)) - { - ParameterSet* params = h_viewParams[view]; - changeSelectedMap(view, params->selectedMap); - m_dockTab->refreshUI(params); - } -} - -void SurfaceDeformationPlugin::mapLinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - addManagedMap(view, m); -} - -void SurfaceDeformationPlugin::mapUnlinked(MapHandlerGen* m) -{ - View* view = static_cast(QObject::sender()); - assert(isLinkedToView(view)); - removeManagedMap(view, m); -} - -void SurfaceDeformationPlugin::addManagedMap(View* v, MapHandlerGen *m) -{ -// connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = new PerMapParameterSet(m); - - params->perMap.insert(m->getName(), perMap); - - if(params->selectedMap == NULL || params->perMap.count() == 1) - changeSelectedMap(v, m); - else - m_dockTab->refreshUI(params); -} - -void SurfaceDeformationPlugin::removeManagedMap(View *v, MapHandlerGen *m) -{ -// disconnect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString))); -// disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified())); - - ParameterSet* params = h_viewParams[v]; - PerMapParameterSet* perMap = params->perMap[m->getName()]; - - delete perMap; - params->perMap.remove(m->getName()); - - if(params->selectedMap == m) - { - if(!params->perMap.empty()) - changeSelectedMap(v, m_window->getMap(params->perMap.begin().key())); - else - changeSelectedMap(v, NULL); - } - else - m_dockTab->refreshUI(params); -} - -void SurfaceDeformationPlugin::changeSelectedMap(View* view, MapHandlerGen* map) -{ - ParameterSet* params = h_viewParams[view]; - - MapHandlerGen* prev = params->selectedMap; - params->selectedMap = map; - - if(view->isCurrentView()) - { - if(prev) - disconnect(prev, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&))); - if(map) - { - connect(map, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&))); - selectionRadius = map->getBBdiagSize() / 50.0; - } - - m_dockTab->refreshUI(params); - } -} - -void SurfaceDeformationPlugin::changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - PerMapParameterSet* perMap = params->perMap[map->getName()]; - perMap->positionAttribute = attribute; - perMap->initParameters(); - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - } -} - -void SurfaceDeformationPlugin::changeVerticesSelectionMode(View* view, MapHandlerGen* map, SelectionMode m, bool fromUI) -{ - ParameterSet* params = h_viewParams[view]; - params->perMap[map->getName()]->verticesSelectionMode = m; - - if(view->isCurrentView()) - { - if(!fromUI) - m_dockTab->refreshUI(params); - } -} - -void SurfaceDeformationPlugin::matchDiffCoord(View* view, MapHandlerGen* mh) -{ - PFP2::MAP* map = static_cast*>(mh)->getMap(); - PerMapParameterSet* perMap = h_viewParams[view]->perMap[mh->getName()]; - - nlMakeCurrent(perMap->nlContext); - if(nlGetCurrentState() == NL_STATE_INITIAL) - nlBegin(NL_SYSTEM) ; - for(int coord = 0; coord < 3; ++coord) - { - LinearSolving::setupVariables(*map, perMap->vIndex, *perMap->lockingMarker, perMap->positionAttribute, coord) ; - nlBegin(NL_MATRIX) ; - LinearSolving::addRowsRHS_Laplacian_Topo(*map, perMap->vIndex, perMap->diffCoord, coord) ; -// LinearSolving::addRowsRHS_Laplacian_Cotan(*map, perMap->vIndex, perMap->edgeWeight, perMap->vertexArea, perMap->diffCoord, coord) ; - nlEnd(NL_MATRIX) ; - nlEnd(NL_SYSTEM) ; - nlSolve() ; - LinearSolving::getResult(*map, perMap->vIndex, perMap->positionAttribute, coord) ; - nlReset(NL_TRUE) ; - } -} - -void SurfaceDeformationPlugin::asRigidAsPossible(View* view, MapHandlerGen* mh) -{ - PFP2::MAP* map = static_cast*>(mh)->getMap(); - PerMapParameterSet* perMap = h_viewParams[view]->perMap[mh->getName()]; - - CellMarkerNoUnmark m(*map) ; - - for(Dart d = map->begin(); d != map->end(); map->next(d)) - { - if(!m.isMarked(d)) - { - m.mark(d) ; - - Eigen::Matrix3f cov = Eigen::Matrix3f::Zero() ; - PFP2::VEC3 p = perMap->positionAttribute[d] ; - PFP2::VEC3 pInit = perMap->positionInit[d] ; -// PFP2::REAL area = perMap->vertexArea[d] ; - Dart it = d ; - do - { - Dart neigh = map->phi1(it) ; - PFP2::VEC3 v = perMap->positionAttribute[neigh] - p ; - PFP2::VEC3 vv = perMap->positionInit[neigh] - pInit ; - for(unsigned int i = 0; i < 3; ++i) - for(unsigned int j = 0; j < 3; ++j) - cov(i,j) += v[i] * vv[j];// * perMap->edgeWeight[it] / area ; - Dart dboundary = map->phi_1(it) ; - if(map->phi2(dboundary) == dboundary) - { - v = perMap->positionAttribute[dboundary] - p ; - vv = perMap->positionInit[dboundary] - p ; - for(unsigned int i = 0; i < 3; ++i) - for(unsigned int j = 0; j < 3; ++j) - cov(i,j) += v[i] * vv[j];// * perMap->edgeWeight[dboundary] / area ; - } - it = map->alpha1(it) ; - } while(it != d) ; - - Eigen::JacobiSVD svd(cov, Eigen::ComputeFullU | Eigen::ComputeFullV) ; - Eigen::Matrix3f R = svd.matrixU() * svd.matrixV().transpose() ; - - if(R.determinant() < 0) - { - Eigen::Matrix3f U = svd.matrixU() ; - for(unsigned int i = 0; i < 3; ++i) - U(i,2) *= -1 ; - R = U * svd.matrixV().transpose() ; - } - - perMap->vertexRotationMatrix[d] = R ; - } - } - - for(Dart d = map->begin(); d != map->end(); map->next(d)) - { - if(m.isMarked(d)) - { - m.unmark(d) ; - - unsigned int degree = 0 ; - Eigen::Matrix3f r = Eigen::Matrix3f::Zero() ; - Dart it = d ; - do - { - r += perMap->vertexRotationMatrix[map->phi1(it)] ; - ++degree ; - Dart dboundary = map->phi_1(it) ; - if(map->phi2(dboundary) == dboundary) - { - r += perMap->vertexRotationMatrix[dboundary] ; - ++degree ; - } - it = map->alpha1(it) ; - } while(it != d) ; - r += perMap->vertexRotationMatrix[d] ; - r /= degree + 1 ; - PFP2::VEC3& dc = perMap->diffCoord[d] ; - Eigen::Vector3f rdc(dc[0], dc[1], dc[2]) ; - rdc = r * rdc ; - perMap->rotatedDiffCoord[d] = PFP2::VEC3(rdc[0], rdc[1], rdc[2]) ; - -// Eigen::Vector3f rdc = Eigen::Vector3f::Zero() ; -// Dart it = d ; -// PFP::REAL vArea = perMap->vertexArea[d] ; -// Eigen::Matrix3f& rotM = perMap->vertexRotationMatrix[d] ; -// PFP::REAL val = 0 ; -// do -// { -// Dart ddn = map->phi1(it) ; -// PFP::REAL w = perMap->edgeWeight[it] / vArea ; -// PFP::VEC3 vv = (perMap->positionInit[ddn] - perMap->positionInit[it]) * w ; -// val += w ; -// Eigen::Matrix3f r = 0.5f * (perMap->vertexRotationMatrix[ddn] + rotM) ; -// Eigen::Vector3f vvr = r * Eigen::Vector3f(vv[0], vv[1], vv[2]) ; -// rdc += vvr ; -// Dart dboundary = map->phi_1(it) ; -// if(map->phi2(dboundary) == dboundary) -// { -// w = perMap->edgeWeight[dboundary] / vArea ; -// vv = (perMap->positionInit[dboundary] - perMap->positionInit[it]) * w ; -// val += w ; -// r = 0.5f * (perMap->vertexRotationMatrix[dboundary] + rotM) ; -// vvr = r * Eigen::Vector3f(vv[0], vv[1], vv[2]) ; -// rdc += vvr ; -// } -// it = map->alpha1(it) ; -// } while(it != d) ; -// rdc /= val ; -// perMap->rotatedDiffCoord[d] = PFP::VEC3(rdc[0], rdc[1], rdc[2]) ; - } - } - - nlMakeCurrent(perMap->nlContext); - if(nlGetCurrentState() == NL_STATE_INITIAL) - nlBegin(NL_SYSTEM) ; - for(int coord = 0; coord < 3; ++coord) - { - LinearSolving::setupVariables(*map, perMap->vIndex, *perMap->lockingMarker, perMap->positionAttribute, coord) ; - nlBegin(NL_MATRIX) ; -// LinearSolving::addRowsRHS_Laplacian_Cotan(*map, perMap->vIndex, perMap->edgeWeight, perMap->vertexArea, perMap->rotatedDiffCoord, coord) ; - LinearSolving::addRowsRHS_Laplacian_Topo(*map, perMap->vIndex, perMap->rotatedDiffCoord, coord) ; - nlEnd(NL_MATRIX) ; - nlEnd(NL_SYSTEM) ; - nlSolve() ; - LinearSolving::getResult(*map, perMap->vIndex, perMap->positionAttribute, coord) ; - nlReset(NL_TRUE) ; - } -} - -#ifndef DEBUG -Q_EXPORT_PLUGIN2(SurfaceDeformationPlugin, SurfaceDeformationPlugin) -#else -Q_EXPORT_PLUGIN2(SurfaceDeformationPluginD, SurfaceDeformationPlugin) -#endif - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformationDockTab.cpp b/SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformationDockTab.cpp deleted file mode 100644 index fe47a1c55..000000000 --- a/SCHNApps_old/Plugins/surfaceDeformation/src/surfaceDeformationDockTab.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "surfaceDeformationDockTab.h" - -#include "surfaceDeformation.h" -#include "window.h" -#include "mapHandler.h" - -namespace CGoGN -{ - -namespace SCHNApps -{ - -SurfaceDeformationDockTab::SurfaceDeformationDockTab(Window* w, SurfaceDeformationPlugin* p) : - m_window(w), - m_plugin(p), - b_refreshingUI(false) -{ - setupUi(this); - - connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); - connect(combo_positionAttribute, SIGNAL(currentIndexChanged(int)), this, SLOT(positionAttributeChanged(int))); - connect(radio_locked, SIGNAL(toggled(bool)), this, SLOT(selectLockedVertices(bool))); - connect(radio_handle, SIGNAL(toggled(bool)), this, SLOT(selectHandleVertices(bool))); -} - -void SurfaceDeformationDockTab::refreshUI(ParameterSet* params) -{ - m_currentParams = params; - - b_refreshingUI = true; - - mapList->clear(); - combo_positionAttribute->clear(); - - MapHandlerGen* mh = params->selectedMap; - - QHash::const_iterator i = params->perMap.constBegin(); - while (i != params->perMap.constEnd()) - { - mapList->addItem(i.key()); - if(mh != NULL && i.key() == mh->getName()) - { - QList item = mapList->findItems(mh->getName(), Qt::MatchExactly); - item[0]->setSelected(true); - - PerMapParameterSet* p = params->perMap[mh->getName()]; - - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - unsigned int j = 0; - const AttributeHash& attribs = mh->getAttributesList(VERTEX); - for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) - { - if(i.value() == vec3TypeName) - { - combo_positionAttribute->addItem(i.key()); - if(i.key() == QString::fromStdString(p->positionAttribute.name())) - combo_positionAttribute->setCurrentIndex(j); - ++j; - } - } - - radio_locked->setChecked(p->verticesSelectionMode == LOCKED); - radio_handle->setChecked(p->verticesSelectionMode == HANDLE); - } - ++i; - } - - b_refreshingUI = false; -} - -void SurfaceDeformationDockTab::selectedMapChanged() -{ - if(!b_refreshingUI) - { - QList currentItems = mapList->selectedItems(); - if(!currentItems.empty()) - m_plugin->changeSelectedMap(m_window->getCurrentView(), m_window->getMap(currentItems[0]->text())); - } -} - -void SurfaceDeformationDockTab::positionAttributeChanged(int index) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changePositionAttribute(view, map, map->getAttribute(combo_positionAttribute->currentText()), true); - } -} - -void SurfaceDeformationDockTab::selectLockedVertices(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeVerticesSelectionMode(view, map, LOCKED, true); - } -} - -void SurfaceDeformationDockTab::selectHandleVertices(bool b) -{ - if(!b_refreshingUI) - { - View* view = m_window->getCurrentView(); - MapHandlerGen* map = m_currentParams->selectedMap; - if(map) - m_plugin->changeVerticesSelectionMode(view, map, HANDLE, true); - } -} - -void SurfaceDeformationDockTab::addAttributeToList(unsigned int orbit, const QString& nameAttr) -{ - QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); - - const QString& typeAttr = m_currentParams->selectedMap->getAttributeTypeName(orbit, nameAttr); - - if(typeAttr == vec3TypeName) - { - combo_positionAttribute->addItem(nameAttr); - } -} - -} // namespace SCHNApps - -} // namespace CGoGN diff --git a/SCHNApps_old/Release/CMakeLists.txt b/SCHNApps_old/Release/CMakeLists.txt deleted file mode 100644 index 98f8368b3..000000000 --- a/SCHNApps_old/Release/CMakeLists.txt +++ /dev/null @@ -1,44 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -SET(CMAKE_BUILD_TYPE Release) - -IF(WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Release ) -ELSE (WIN32) - link_directories( ${CGoGN_ROOT_DIR}/lib/Release ) -ENDIF (WIN32) - -INCLUDE_DIRECTORIES( - ${CGoGN_ROOT_DIR}/include - ${SCHNApps_ROOT_DIR}/include - ${EXT_INCLUDES} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} -) - -QT4_WRAP_UI( UIC_FILES - ${SCHNApps_UI_FILES} -) - -QT4_WRAP_CPP( MOC_FILES - ${SCHNApps_QOBJECT_FILES} -) - -QT4_ADD_RESOURCES( RCC_FILES - ${SCHNApps_ROOT_DIR}/resources/resources.qrc -) - -ADD_EXECUTABLE( SCHNApps - ${SCHNApps_FILES} - ${UIC_FILES} - ${MOC_FILES} - ${RCC_FILES} -) - -TARGET_LINK_LIBRARIES( SCHNApps - ${CGoGN_LIBS_R} - ${EXT_LIBS} -) - - -ADD_SUBDIRECTORY(${SCHNApps_ROOT_DIR}/Plugins Plugins) diff --git a/SCHNApps_old/bin/schnappsInit.py b/SCHNApps_old/bin/schnappsInit.py deleted file mode 100644 index dfdef94a0..000000000 --- a/SCHNApps_old/bin/schnappsInit.py +++ /dev/null @@ -1,2 +0,0 @@ -importPlugin = schnapps.loadPlugin("ImportSurface"); -renderPlugin = schnapps.loadPlugin("Render"); \ No newline at end of file diff --git a/SCHNApps_old/build/.gitignore b/SCHNApps_old/build/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/SCHNApps_old/doc/Doxyfile.in b/SCHNApps_old/doc/Doxyfile.in deleted file mode 100644 index ef66f9d63..000000000 --- a/SCHNApps_old/doc/Doxyfile.in +++ /dev/null @@ -1,1716 +0,0 @@ -# Doxyfile 1.7.4 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer -# a quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and -# unions are shown inside the group in which they are included (e.g. using -# @ingroup) instead of on a separate page (for HTML and Man pages) or -# section (for LaTeX and RTF). - -INLINE_GROUPED_CLASSES = NO - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to -# do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even -# if there is only one candidate or it is obvious which candidate to choose -# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = @CMAKE_SOURCE_DIR@/src @CMAKE_SOURCE_DIR@/include - -# 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 -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. - -FILTER_SOURCE_PATTERNS = - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. Note that when using a custom header you are responsible -# for the proper inclusion of any scripts and style sheets that doxygen -# needs, which is dependent on the configuration options used. -# It is adviced to generate a default header using "doxygen -w html -# header.html footer.html stylesheet.css YourConfigFile" and then modify -# that header. Note that the header is subject to change so you typically -# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW! - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that -# the files will be copied as-is; there are no commands or markers available. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the stylesheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values -# (range [0,1..20]) that doxygen will group on one line in the generated HTML -# documentation. Note that a value of 0 will completely suppress the enum -# values from appearing in the overview section. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax -# (see http://www.mathjax.org) which uses client side Javascript for the -# rendering instead of using prerendered bitmaps. Use this if you do not -# have LaTeX installed or if you want to formulas look prettier in the HTML -# output. When enabled you also need to install MathJax separately and -# configure the path to it using the MATHJAX_RELPATH option. - -USE_MATHJAX = NO - -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the -# mathjax.org site, so you can quickly see the result without installing -# MathJax, but it is strongly recommended to install a local copy of MathJax -# before deployment. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvantages are that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for -# the generated latex document. The footer should contain everything after -# the last chapter. If it is left blank doxygen will generate a -# standard footer. Notice: only use this tag if you know what you are doing! - -LATEX_FOOTER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# pointed to by INCLUDE_PATH will be searched when a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition that -# overrules the definition found in the source code. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all references to function-like macros -# that are alone on a line, have an all uppercase name, and do not end with a -# semicolon, because these will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option also works with HAVE_DOT disabled, but it is recommended to -# install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called Helvetica to the output -# directory and reference it in all dot files that doxygen generates. -# When you want a differently looking font you can specify the font name -# using DOT_FONTNAME. You need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will generate a graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are svg, png, jpg, or gif. -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the -# \mscfile command). - -MSCFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = YES - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/SCHNApps_old/doc/LaTeX/images/callBacks.png b/SCHNApps_old/doc/LaTeX/images/callBacks.png deleted file mode 100644 index 7c01fd30ca92ca5e6abae4b61f69dd746d708b70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79305 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 ?NTnImt61b?7@XaTaY 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%0A>FZA)HmL(hxW_VNsLunP-tG=O?qnj1 z?mfK?k2Vw1V)Bx9q6RjyXLi|ZgyFW@rvvY`OY*n!(CFg)Eg{9(PWs5*DvDnGoAa|3 zymfr%u8aUUHq)iU+IUR2xK6}$#T?AC$g^4V%1%Rgv%G5Fk?=>}x#*Nl_`{A>vxbG) zk^FOCS&VdMw<=UHwPNf!YUqDCHLT@?8b)n(;KB}U-yohVcFe4&Yp9!GR&)xzqf5DX zO|jQ)7?uVzN>JR!U$-j6kM*r?G#_=jHVVTCZ8Y+S6Qa`QDJ7PN{G9uG*yt`Sk(k@* zq?xq)4HJKHUNiB&Pk4}^dd^zAPogfY6pC^j}UE+FmwN(2;niBaQVar=zMpX7|C};&HinLg?Gcfb&q(s!(NLmEqaP=(aP}*xTI0> zshTtIG=)w*!z)_-64LRGXs#=#xYkmgjLb_P7Z8EJlsMYkN=d(uBcA7@<}0e);8vka zofC_jLM{U2ZS6j>-or5FrB|Dyk~uaHb0!6tQ3yrz=!fgLr_V;)=XX-R0{jn6pjDF{ z-kl9~JlCeWwVaf{by~%w-E%1|tq?LRpb@u@GmvheMK4FJk{Tq<87Jx89yXq7!%AVpG`MBXuLV-RbvgdG|M-6?xZipIUW5-RZtEo**vAFd z@m-tx#Q?4BBopiqyi%!9jr$7l6o0m2VMG6GPS>1MNKQZ%;K&8!^B(U%YfFiVL?yu< z0!6bwzw&gd6<>{yR105S_*`B877T>@=n1$@Rd`#5e`WUjhCuNBpNHcAIk%+@MH&zP z=nwvSk*dsf|IXZM8BMqzkNHs*Zy(BBp{rn$M?n!0YB=28N5@s+7}St@wvAd&cm`nO!?RUQX z3Z;*GVYP&XrdXg04e4k9WIRmEt{m+4H36KsFuzpnci*Rbq_Rid)ZX*g&}K{I?bNEM z`z%mf9d3{Wv^INlmFg5g!GfUM6=|tHFxx;v6-N?`Zpvft*_04 z{=#bL(1+=G{>sk`z?`e6&?r|^k|He4|nHL!dZm=ux`?Z*YU`*q5E0t z>4~i;b>G($*is6dYGD8OmHvMhf&@`bE(%9pinky2USO=98};oNYuMXvhDV3m;_Q{? zNjDtDT3dwInf-c%^$WKPvH@PxziOW-T%$6oDJaO#uJSi-8nXb+Ziyp}yWVmuBv{q- z{se>mwTmR9eFdB$)%IwG@vPQ`e^9k~NABIX00H;p)~qmb48b<;v>i(qLcT$z)2Shi zz6CYX6=qcZEpTlt5p>`Wsub9YJF$+~7UfA+LaLMI4BWOht*E<73U3znQRbL;tV?c= z&E`El^=>VS3Ec~g#6U1^;SVV2!*%7WF75uPR~9QC;ma_?m=$cXWmufK!>v@c$bs+A z{)teym)cuiy-YvxuNkr4oRwY{bDTs64L^t&7x6t#NAat@znxCH-j~8(Xcp)rT_(bZ zg*!I|e@Wb8k$6;ayi8R3vZ8|dv8rbOf_Faa^s9LXvZ0puYEsF}3J|M))=X=~xTH!o zVgF>YeWpBQbS2%0wzMB3H_Koa*=03gJ9Kqy04x2s^V7qx7cOz(7fNlGy z9zu^_8_5K&`5NJ)@x{F>$%ratTf+ef+$NA~z5wwsnA!6!=kygz%qQNR3Fb5slk@k} zVKN))Upbx{$bT8&4UAy!q#-V2V&7~wuLy7Qdj1wfF&FfWxa0sGY_VBw8Rh<t84*(klUY%|eBwOwL(lCx5D*r5 z@e=gyei%t|O^9|4T$K~pN7M*uQbH6hbgz3-s7XvUV>(}4N#nmlcHJPRwmr(vtp}8b z=$Y2Xi?1FnQIrx1s(xRDnS=IHhc1N%<#)}NcmR{xkw>bWUhx`C$Q1V7yyL#Fv%%FO zLOG&KAWfB0jC9-^YKTduDo0gp4?@!4Y;N_fzhJe9iE!z1HCvEpkP#kxs`u(-9fJDH*h!N|nyU$R$k~gJ4 zQl=xuji9xIEpAf;gNnS|iguiF9!6x65b_)u7h=G<#sBDqd`eIL*P`gt8%n8<<|xp* z&P_JXRw!j*+VHu!5m_r|MfN+i8%dT2(v=bB9mWSv=2soz+`j{8F^v&KDkVIX=Q_Xa znB$y^cKi+S&c04ojQdZJT@FYgqy5R(gj*05(A+2uQkMw9=QK^qx!uZ zpf=Q{0;sGgXPeNIv{1wJozFm?Ql3fX9o`2{PK^6H271j(zzLe=dsw7k1!*^FO8(>W zD^|X;UK|sQ6+#ap2WHRdqJ2Plnq{+jx?VC{PIsbgD``_w27jtl|HhmNwd&DbDFzaC z(npKOdsWANXcgDAgAjR7L9UMqg&FB=SF0{bU@5Lo%!ODu0_Aj{J!P)6`PSRu%GobgCAO7GexkJr66mhP&jayAWMCYsz{+LKxmnIzm zUk~8)4t=j4)Or5^Unt-jS=@N%ZYF#fJ3Cu&_aFZ~`iHJNYwT`hb-zbJC2uQ=7fe`(zRD@OGH<4?nQiX7wuq7G4G@C_DW zRL-ykkEzMYmmk9xpUxX$A=W>(*i zbT24pX4<6dQi4MJjumJ>fhQNr1E{dP8LKCoWB18d5DBh@fK9*+SjM|LxsblE#(IH{)5}S)?l-2 zj|*GC4DCjOug#IWlJ!&CkU;=D&YZ64bEmT=zz&K;g(M`Fb{lw#-HrSQ7R2J6>vpMW z14Y9-<789|PgbC`Ck(j{{hk$k7$tt8Fbihbt+hI?3t;%o_T?%&Aeg4ZVI>d3RQTPOE<4 zenrlHuF_yl09$Bb8xT{kttG3|03{dtQ(GJC8t1{mqnG7r0G`tc;wMK4u#>JNt8{t5 zU2+{^^6*45IbljV@BMj9vSe}ZS|he8?Q4e`P7ybbc?e#=H3sKEvCVrx_6#zX(G_5QtWg-)T7bxf+3h9_k)5!wmE^0Eyq}HCdh5_(Fj?D^aKVLB z!pYgaN9Jf27ttf!!KW5HriVpFeoaVDJ|$Wm3L8>>t*J)(mAX&JZocM6PV-}H57v7Q zR_&wPC=qN13jPA-C_js%Mue{dIPf|k>maat8*KZ<=k*jM=gB#WPs!ln>C58ADCAS# zW`-sjo%nq#aA?mk=CvLErb-KEXjBpL;g(qymtgJ<@VsWXifr(l4mJq$(5}8lBx6vp zo+^)THp+6o>U0?`7=B@A$3WO_S5Br-C)wL^|C^~r7V4R6 zLbO%_PUmBOLUFFa4{P`SlQ?yZaqH#kE%T*h$UUy@`Ij>$Z2o4r93u>s*#x9D*2HmE zcJnm@nD&iRv{b2a2L#%)xErFa{05f`w(*YOqlvh z4ZVmM373aQhb7L(if$`?+xd%+gdD8}J5jdsV_I{%@})X9AFZ-TipKpy(}HFuZp6vI z|0K2TE@7Ek>dsBm@>*@0jOA^diOah*T@t+%AKBmY{dykX2G~hd9# zva}XL$5J%f(uy}c&kK9XXB|g7ZP~v8@9afTEw;Nc667Qr%PTK5Fw{=0&Kz=%>W*BdFKSW|kvt{ONCOJI_KM_ZPq0#eGmYox z?obaLS&K8u_iCf`UlrkQSw)BT?A;ZkH!IXSva&==JUA2=cX{z=XyfS>$>n)Bxh0C{ zFy!v)GjJg|kPfYqWa|z&LRDI4B&@_w)1mACnL;4`c$12{x9)ly4n~dY{`moO;V5zu zPcF@zZBmndUnTcQ+U(N-*ARs%)2<-sJE!bZuNUU7d%aED($Lj6{D3BFlUTo zg8uF~2L4=^_TKVL9dK#kVH$=dA$);Ny^ZHTe{-VE!&Qjo-PM<8ZSr)f*syaIV}nCU zG4k)s8=jKcg&Q_@`VuZ>mWP*b`>2{e(!Q5o`BV}nMBkriJf;E;c&?`X#X3*tJ9EX0 z~G$OeiU4~vw67iIHL=mrP+GUB{_-HyS8=^ZeEqnEN?gR?RILGk3jlH7s_(@ z#%^U~SrnK2(~>t>fbuWN>vEFXOnno7R|Ir}`>-EX*tkNW*&yrx*71 zl!G(EHLn7ZmZ$#LTbvW}yoZ}~WA|$}=KFQ9ip7?X{k8YBT^IqYf<%;8PU%O^7}r@z}1rA@Tx zM+5$v!!SYX7}g_Pi#Ijy59TO+GMw#5C62As%MG_G=`l3%1OMHuRs3Q5Y*`#4vieg*-iVp9!Mo*owqa%3Z^>%Y(Dl#(-r&5-ljjW@Rw@yNPbY5?=?GBp zzT@)$McsKmHPwaDK84;DDS{A15a}pYs(=Eah=S6qNFekky(1!`0-=L|N)VAMy%Ry< z1%gOuh8jS63pJtNgSY$x_rsk#<(l+_!HA0v8so6a5A+%ct& zXFA=l3qgPaw|#-BxkH?FF957Ed+bfZ9l)%eJem z6t|PJ{o@ZaA*p8-Y?EI7EwfLy3J=eihD;=_sJuA3TJ{oPe^RSNX}zesER`*=%wkEN zOntZIsnF?kTvsQdqG!pTn$756Cqscn$zx@0oK=!3dfRUe% zLHx0*FpdFx-P*thICe}qakcT9xV%c77Du$;tqq-xc1lrtEim{HI8$*qQM<_OJ@03ba3Z(krU=z(k%_YNS?ajCSni4Y9? z^~s*&v)jVr%G7nFy^_h)OhY5#)2YreR}HsRlMyb%_swZ)rK2q<-ijHT7NfYBl!i2o?gRd7t2{lS>_u_5NH_r3gnWstNWaJu~w#~nf~ z#}uO7gsVhby6(O1T&n@xiW8%&1tTk;y$njpEa}xexrPf#EWriGAZGCcD(P@9xJr;4 z`xQ7r`M2}^az$SeJ) z<@whB!|HNbl5A9M)oo%H+D7NF5$&OUc->Pmm!7zEC|mCM6v0fGY#6@iE}>IGeVp}K zKbs&g&}JYJZ2yiMxsj0Q8wRf*SJ-2-&z zLqT;P1#J;+t63+q$5zhLgiXvtf_IS@ch$=>Jg>$?nD z$%dV-d4_>+Fm1(KMHccjE3eHu1Ptf=F#bfZ7tG)=n`z_oqVn*PQ~JgVCKt&yv9&;P zAM2V6y9by8{^#)Tfy$?$>3QiXDT`zh&P4{_yBDb>U<=#@-o- zmJp>o*I$0fpUAVYE_5$FKYD-t2T^3Q8fzp5`)vnRKtD+DL0hXDcK`0Ck%pfIs_=r9 zpn&DML{~x+_zz&`HS}Fu6el+o1GOedcd$~@rGE&P0mZu89Y(x%Hrkn|mWvXIq|^m7 zTJJZ_&)mpbssC135OW-6{zn3eyTeRH1<#6!Z>vNi=vT9bWva~FPSt@s3_8E{58R3T zwlv~nnh!5{c322maAi>Gfp5$`EfBDiElAz#yCIc5y0zod43g)}a2}~hPTvwB;M9i= zGPbOb-hB+i7}k?r+{{y7KNQX37t`$J+u|XV&R$Z#MH4l3{xF@cqo}~WhS>qVX|doc z&jHy2$vlQ;1|`GFQ)MZOKl+6u`S8(etoA%N%nU3pzP%p#Bq9MU@)=19-?@1qDh3&q z*|+}2ua*to1abiZBy;LLCkVuxge7E|Cuac|6EF>l5Uz;UbC>m59!Y zHkVo>E#8L5)3@b87N2X9LNB9aK>)-m+3MR_>nrq=t>D?Didlaqlx%zHYVyh?(CxS^ zC=0O$@?T0`* z&|hq()aISd?m&a??n9-1C8^C^<=}nncx%TMWCfETsgj{^LqjK`4hJgS-N7yH5f8Tb~Sf!KXM2kLri z&X@$uvw7t$>JJ_e7eZK*2b2UpyIobpGliFZ3b2Y!7y}^kU&iKu_tYwD*TL!n32x3~ zT3VsZnW1BUjl@I@aX;dbT1|uvU3Fqq{s~#-#ng@R%D)_tu+CXeAEG}?HWw5dhp1AH zr0w3)j{yRH@A;G^S94TA8N=cL2Hf8lHihKNR6Ggj$%x*qOS(Q0>5&r9GsY{lq62{~ z#k7Ki_UDoF%9km4L9+Vy?YFQLHsG*VO~m7}=p!?cUyxJb^M%)PG=5$4lrUN{W+F8%6wVEat@VeEvBI-K7LX=(zY_`Z z{W9vX9NPR#0VEBD|0>5GSjIQG9$z6l$WQ~T;}{P-G~x-;Ij6UFalrJqGUG&I?Xkfd{CT175Ob-c78yHujGt{!blFK859;cPlAtB zw(%aNj7H^9Ni?%Vc$Ua!3^f)=Zm24DDpZyHgT2AtlR6eye5cq^hq3y`>4$^w>Q;Ju zldFiBT696=M=>)`ezEwYhY!jgI$RH-A<;=S)%;FabkZai1UIu2uc??D9=7UoMQGI| zly+`P?=_TX>N|b3PVhbL?wii#999(W{0U`@>-`H06VN! z$Q`Zv*&noF-dXd^%HU<91Mvv|H#Zw!h;oPQr}#dmQ+G+rFc))@^48QIv&2oIR`{*> zmc!tzTX$cbb>!U}={V68r{0Ge->&+IsEx~9MxmZ_s zyHE9xL>zr&RV0a@CzoOlg7ZJRF~PMBk-Weuh>U$|j~Yqcy>iNv$G050+l3eA2TbOn za2M@HI*!bKh>hM+I?C5!Wl$GGjdB;u)x~WU<78U0#_)A$ zRb~DYCgzbqfyv@7{?g>)s!wPVe~#fy*6B^;OZ3O(J=!7o8B|pTOErYMwY%;+Ow9U?cwd41;?Vp0})H+xxJ$}3YFs;9LkhyJC4qO%4u@&6HN(@IC_m}B2o+689Nk?Y3KF7)j zS2#p3<7^Hw6dmAD{i1;>a(>Wum^Y?9jtKa>=T;SUW;1<_L$v5eqm;J=Lhx+B61)WW?aY%>>XXcDNLR!UJti1#6 zQ`Az8P^Fo_l9j;3{s?44# z>%&C`%MazrBEdIn4w}>_SB(z7SmLLOT=Uc?^^MNLvqi?Q4^I}L%g1q&a-_!uOTzfw zJXE6yfmtB|3e9R*&^HV&WM5(EDorw(?`cgsdM}nPVk41ycHLwonW}AEfZlC7Wn%{y z<6WRKJ@hxU#9}jXc2k#O88|8WLb0x>Odi(_E-xVR-2q{eiElxSxN@c6Mx{E~5FSZ2 zef%5Zu)$u)ZhdwEc2U$^`|G@~i-Mj%4H2C=X}#3nSMTuGLSX&9-P`CUUY%8LtgB(! z@k}*urpP$YnUu<;cbMVwvB4~R3s%S9%A6yb+V3ajZ&jT`V@)qpa%8pjb(30pl{Z0l zA2;sQ|0h(*N^~R`5mqsrkX7#~h85xG_AO~GG`*US7v%j-W{*dSx=z@` zMCl4gW8j9t>ansaMTRXRo&DDd=c#8>ctUL9UXws*3wNDPD}beF*Q+mm&r1!rjWMy2F!!RTv!PPlc@jW6Jbz0hHByX0V$lZuao|aWzW|T5;n@z| zqA-&kqTzx~A4e9R0lxX0%q+cgIXLRG5|is2W}yeStF}y$Re547n| zus?cUp-Ae>3a>YRqEXZdl`a<1e~rw&r&^`M!l??MBY%`;PSTc$EbEeG&RCeA-nk4z zsFZmsi-k@BaqPiuok15oMUJk*qp_l@(f!3gU)S#iMXNV~@^#9B@zvr-u5AV#%1&wL z3dN-3_>mv6+9T~e73tt#vQ=lR*jC{D^nwi+q?5XrZEEU0Z)5(SO0!9T@|CmcF&dJ9 zNWSPwmD8W^I^sON+p8@{;;QE@qn?PeO_%@`CB-V%f#{(I+L)_rtV6NBNFA%4K_M*ZOaY*!Dv0#q_{}{#<-pK>j@yjH^EV3 zq7k)5Y_ZQ~{g#d2&*hljOz>1b?0PI|h#a59$& z^*h#q;4Y8MXws4x`B8JPGUq_nKm3fbb@$jWjGNa*t~E;0+sm%m z^gS;(J}w!JSPL^g!KVoh@v8r?S!Hn`w-G(SQ8z}*tY||=IuqKa^;D^_?;iAKp|E;! z>4PU_MFHCF^^ws-t$e-^Q_23Y`uT#mopA2@OQr_6gkHZM){zkuw`cLJ1l=N@;moIX zD(lyNa)J9DCJvjL=F>OvTho77y+c>v-H+{1t$fSeY-4zlQX7!==(az>1=VVXGfsHy zA&32XHZLO@2x*N;y=aS6dWwlZEmrWqv2+`?HZ}uyzD)(Gsb-l(ll+wUR(aI zaHj9ajwhAXDh;oPEMtQHw-%ta=4I1XY>AEFH4|6=yE;FU9rLTpdirI71w_^^cXY`B zlgA&*X3&v%A0cM;<@643ZL6ZEskbPvja{a#*k3)ms1K7x9b%8`;0oMl(XdxqDk}8v zGm8}&{|KI#O~qMIg~u<>9S1WW`CiO*U+~x#s@doWw-{*;w{Y()6e|YSw`Qe-9cxtC z_n+fB%UAM1f@xR$cye{-O~)MNIi#BI<8m<9P$OMh#C? zvb+Ew&HV8{b;z(K?TLhCd#NM0*4)gNoO{DE0eoX`E=#lB+MJ!94xb6HCO~YpT{$}pe3^%zK~0D^Y}k@QL}y(;y0djoFO!( z?@3PZL9b$D+D50-Vdfa?nJa+Ujs=3Ilp40x?GU5gj+^!Mzw7RhNnhoK_d^LA>dqfu z|CjtxcJ`r^_?H#iVOSJ%Ke)uj*krF-OpTIm&HmH%$>bWn@9Tgb*bQkoAzEhLG`Oq-^$D2%fW;T5rI_MkJ#7i$+v<|)TH04 zPbLGWV5|5AA0a)>G|}SOPwRWt&0r-Xtec6Ghgpcq_~mLzATMAqq5=7*98eM8TAgD~ zo*VyeP!`a78o)A^@{}&CEDA{bUR(*0ItsM2@i>;c1>s<&|S;~MjX@Uku&3J3|&>ntdsU8Zl~6Q|Q62=N&FBGQ&^xS=Ny9Mj z;_9-*7O3G9o2bwCZWa0`kJgWJ`7B^1wUfs0&x}HZYZq3qDBl}IU3i9umq0j;ltc7*=EE@6ZJkxl1X^qd$ob8E~4KG$8g2>Xaz+ix}i7z2$XEeiq(eqxTRC$_Vg8$UDKw+6##zO%6V@6ZDmOV^88uUJEEGJU+&aa!IQrXl1 zKAZwc8~n55$*@wq!QS(`K_}OEukKX+bQ@|9QK*KRm;7PWo<7i_%@P61wM&-_b<$$| z+)D+J|9zMxdTDM$yD12j0k~lY&+sn}biKB4*uY~N*}CS@tiqZPtJm^ekTkg^@@=9P zqRE^ib%mz2;Sw+RHh)%}DhD1#H{=sl*SjJ_ydKFFWgiEUFoSY6_mU63MtNh`Zo=C- zRc%_Zu1_6FLQDT}0m9t}kxHY6le=B28K2c9Ek=ZeEOc;3DW>#3<1j+vf)13P-&m;RXn-L{iaQ8P$$iCyWHU5&^zx+%fatiXzP7>26D@Ui zc*F4FBXO$UTCK;A9Pe&>9WxjZ@2Hm2>rNNoCgyv!^Sc7^h9^p&KWMoJ9;hKt9p~Ld zO}7_WR2WR*@AojQm5AQ=?W>iQYkN&%Lz!_}o^`@mGC+;{e0XRYX}c>^%odzAFQRk_ zMZ7^N64W{LE&kE{)6rFRTa|60+?ppJzojV>Spt0h=KYo)$tTQIT~2x3po0uOub6lK zE7F^x5?x1n1cn{qYKxAv$b#E#pR}xB{pbaX?K}ov+vj!q^Xhu`c?iY-y!t;9y6pd( zt3hKxqMo5z|JF@L9S28=Csy~UUm4dh+?35dqkxCIJUYM05i0`0OJqJzk(PU#6I991H@+i5q$s{)e953%vJvD#!CaYQVizKj1H3_CB=$)7- zxSKm~24l7{4v76+bS}mq!V%yAglFSh8uqmy!62Z^9SuUrTHu0HHv)g}C9NERMGDg; z{17(hL+CyBY(}d1h%-Q><@o7%)1YVvfH3fY+E-q)fbU_pFr1c>j1<<8&kz!1F0vdv z{&!5_W(~EgesI9 zY5*ODI?nJNu3~1El`PP!VZ3A&;;8R22hN3G4E&x^FTGmaGq{l>IwITXq{Xnw1Y|Iq z)=LTWZY&ulm@TPy_2#L;i*v^Hg^}M;L7)UeJ5isI%kLZvafBSrrZo);gv!)Z!90bD zEEU=4X<7gL==-l9kvl-=lltlsYKYHiZlHR~{Oj}ws`V$cdG+$#aq(59Mh6?1Q-oi6 zrjQkKsJ|v(QL{m9t*+q$VQ{fIHt&rqCSKrE~Cm@boR>L-x zw3N8HB80Iczz9$Wlt4#<;#0Lc&%;3P5ePYG8>klklw@dW8fh`VAzPJzJE^Ax@|LMZ zuOlgKg^o`%Gbf)SJU9*~L`)U~rMQ!ONK|3Y2%y;BhFyDNOCR#(B+ypDJ@EL!R|x`* zR1+IV;&|aUtWc%@due7<>eP(wqrb#zS*|eV^AQxkCq^;dO=fP1XymFki3|3kAFsmj z+onEyvSN>b)q1*)w7n6qjdWO3#k|HC)dv)D@;^n`N1DMacwW$BZd?E7me5`rXHhu+ zz}9+fGxsNar6L+RQd>{4B%5->lvJg1{LNl;`vMmprZIqiL3(P!@*1(Y@lfmW|2JflgI;vACro2)4RNJ1h`y# ztlING>5%$cbC*MCQvOb-4Np^Wx*!&3G%|-NaxEj6EqbulUmkXOkB=6%<~>Ce5<0RZ z(qYCurTijhuT69Fs?1M$$O2)i8@)N39TNu+x?=rQpHQ>Z%tp&9Y60sa-fX^$(nPgNJv@Y zO1gV%(5htB7KR^w))~vZllE<(et5+gPSWNA+Uk(J&!ehTyi{pvzRcpUZhzmqDXEQf ztG5koeZ4X9ioQcG8D-Nc;rdw78PN+%A zuJ5EGU^tT|ai!zo&9|A>DT<=lD zdf$qQ)zUjSEAiSacb_Xl*n%nmh&YreQf0_Uy;aNU77HB_%hZ@2JFCE=P-Xxk;eqHD_ z;pfn|y5B}MGcrKJtuhj4wx$q%PBo((zT$=_`vG?!N=)?G8dWu#aF5zC6TY^8jPB!_ z-?R+5+;V#L1Lwz9!F-$MMyW=C3@Z0@_b`?KPN)Aeug9%5J0d`gh!#N~)>emK-GIuf zibz&nc6chWo;~vZkM8rVS1pfKT6DgVctYfTeO-Q7D|9JI1v}aS7p=~K3N1X1Be-a7 zasl@%0}te_`kBFiNAPH^U^}k#au$%7E%hy(Op##ezNex2`;PV=_e|Qhb%6QDO}3xb z=RNb9FPXq>&SqYVD_jL7h_|SHwfS;c-th6#8K9%6qm=be+xKSqy^gVO9-KJ{q1}T=$x~O5+^+ zxGnc_xJ>TRZC&=$D;05OlL9#--_Caf!`1NwD3O+b<-vETeC3Z8ky+Y^E}cDU_+HES z>M?LPSMGcyDdj%CbCe^`OxEEy0gNN2yH2D`ChQ6?YGoA6L>0!!&=nha#xSJ2Cr60O zhDjHTyu~m^eF#ljiJkM2+Kf^~&%>zBDBs8y2RBL`o?A4kbC@#6geiUAiw)b*T%o)2 zb}`t3muzPKnSYDKOz^5|ydiWKKp8U{wh#l0{4w{Z7Nl#)(=X^-3Ki-B^f-mu+vVR4 zddWmZ-LGw+KO8XeG00i|Wu{{TbG@(Ota%s3EUYOIkSgp7yKuS{i>Nz)I9?5-QxCJQ z4T*f|G_Ewbg(RN38k3%B?VZ~RoNN>vwu7n~@6@aQ4m3RR1|W|j9U}n|u@N%3?dbNI zJl#DQ;quC~LGQ%7n0}ERUu>jjer1n-gsd;N*#PjA=Vs5wRWNfEV#Y@ZfTkgh9`YKU>3r zT*2Xmda?yKN1!fLx8QlLZ_z4E)PwejI~eMic@5j!xz_VBwOB8n^NEt>8~E{=u^ep% z#l#ps^jx3~jLjuvozgjP;r!p|)qiRX;7acQ4-V`?->DfW zYN=({*4|zE!}RCV!&+*|h6-$wv>7fHHF9&v=5kwY>R3~iKuOZC7E3X%b2}W~_gB{(u5_ z>nE|fPWr$inTBoyS%A6gJe74ps+2df@OuJB{t!(_xX^16_$s&wv z^j8=-#iv@KqTq?^NC~NIRB;>B)8(roWd`FK#qmWTf|W;?Vu%Sd45Y;Q61Xu=@Zg%E zwu`rQ#~#9+HFtM^ZjPVaW&KXQ#vH<2f5S>+WK=n#4Wc{S8a<9~-C%l8*-T@ZdLKc$ufV9YZ*RnL!O2$iM z8s^nIUcQqmz}WfI+JK;lki}wO&b9_{fLkoQS_sDK5u?s-Gbm}`SE?e#2KN}Dt&GQ+ zBW;VTb0m_>a+V3@uddC}xELRa1dA(ql2!fLNGaB>@!Cp>f3r-K!b**}M-}Fdu*YUn zU5QmZ@eoJe^`X{X$y*7hTT6S_g;nW1`C(1jDuMh?EXq`NLxjs#nKe|J)mH>E*1ey< zbEVET#}#qb!{fsve(_0Pj1HI3@@V}Ziu$ivbLQQT>K!)a5c{^qPKdf0_NEaW^`B8J z?}PPb=oLmRWvzim+vU~5=einOW}g31(GTSPduPnyCM+R45fP{`qm;tA~Qo@94YP>cnPPAZtu6SkA>7dR6T!Pqx{fm zDk1c}&!n;~3{}KS)17C?qBU@VVw?rC#oYL6k%Z^93Xasx@7oQsqZl#s8$>etEM$)0#$Y|PO zcwOd6b&LYNE=PIOJ{%ZCT8X}6S1sp}p}jH|Zb&DDmr_mqj7J`xk7)h02c zJCSvLD+~UHCg(5JgAZv@67d&#B9Er$&Az={6ha+Dms;DM^&pj**wNg0#(+uezDQA< zIUJu|lw*e(YHwvTA08js0*JzzkN?>C*-T@O8X@{(L8%*$O8+Z~6zltwv>x6hCYZb; z5|`!t!oZ@}8E-5$R^F2!y_Na+jLJPU?1KDsNtx)+e@a9BF9ihdypeH2;Mn%DKV!eq zUk9a}-hC8RI)eiOX_Tw88i_=1Qwt(BxFF2iN-qoF<5>+1P>%gEtA4!zqY|DRk%Tgq zuA+oI!0Dt=E5G?Z9i0d2;@CeyBlohll}@c)htylJ{lrLw%Y5RB%}+}A8{R?Udel(N zAX{m6+9r@iwzmi>%oq;+U8H<&%N&a_r)#~1IRhQ(0%;w&DMR#RW#T+nZs7%?q%C9s zZ$mHtIuZecuS8Pc4*?q}yuY6rb`uGyc!!?Uj!PSys5N=0at}b7Iuh%a$9Tbs)oh;6 zf~_o`GE{gdkhT!AG6kv)DDMFurd-JbQ#fpPbcj2_^fWBk4~UY42eFXT&<=eixWx5^ zdV{|wrB1Cj=Ik;HbCK|!EWEqBP0ij{H+#4eo~%%R<}&@*kHItXarhgv$@}ZR66X{4 z!KbvSO--drKNo-0(D#5u z&mG@%5yp4w-s*kP>}cjf!&%ZUU)biz1Glp_zeaJQrN83bNJFT=+YYFdI3;41_VZ3? zju=w$_(Wb=jF9wg`Ufjt_|UtPmP`Fb_4K*rPx*$KrHU1cj15rXlH*){q? z!#kgLn7BTfOMM15s8TUL;S6iSNRAMBAF&XsSV4e+ts*kiW{kUMd9U=v(e0c_iw-|{ zSF43L)&-M5{5X^zc^$j9FU@-2>*m4o&}f&4rA<GF`6q7B3e^VNmrEu+vxA@*M>b3=nq7#e#If4 z-&g%@T;0VhtuLnkvK!fJ`H*Qxb2Cc-?`QL z%Y|#?M!{*S+!SeDTycH>6dPHTPxWhJN&^CYZ!CKzk}t4~+E})#aC`^2LwjR?Ro)4E z@@7YYVW@6*|M`+44q*K@x^LBo&;G36oXU%cj@ZMljl5d|r1*{q54N7q1q}hw;=q*U z8~3 z+9DE+gY`@Sg|btW*<@k;6M1`I!RG?N%{%olM;PmmkIh6Ge1%;fR=qxaR+QflEUtSQ z!^)6}H0#s4$7iX()&L{r_u1FzDO8wvkwJGWFNz5zjc$-tu-Ep#q>{dp@<867#n-}c zEITZ~Jk=Gs@th5a2pde?4BFsC?pg%gjh)$1lB;T&c*q%77X~#sRFg`^O-e^}QdCPC?(X8~P5)#F+*T zAiSqG_xe&8I-*OAKa@kBNkWN8>j zN1r%iA0BLDRHJRq5s)w6@sNYSIYH<3pv;w(@XS^=#_Z)-T1-0mhVpB!#E4#8m;4O)aGNtigVZ*K-5r^Lfhfyy^3+K zCW0>a{2X_bW^>2ykCRh^@2iolIbc!EjGL=0Ajus(X+&%F9X*~J~@!(fD5+SFnz`KM*Q1jPCtAZs! zXGKGrKz!7A(#xGJR*8)oRiQ!?w8zk{Hn}Vz-}&y-!EM-J#ukicQa9&8lrNM@ktNJ*DBAJ?}g0(c#M7iepgiu}I1WGvw- z5g-10`bW+eK@jtA)BpO`$hrQ()*UCT>7bF#zpcJ5*fsl!@^ySj;Guho9w3xv&Laiz z*xF{vHQl6O{!yxV;wi#jU;bxno&VUK3OJsO1 zp;@OO+&>0a^Ky(JmL{Qen9cdqnManEhWD1E?aft)AUZ?ojrCy?_I@}%;%ofnO4~%;jEm=pv@ zjuQWMFzbdIkuY|a+fouYZ;MFKp-?-|j~#m7Ua`6&&E}_!WbyHsRn4mVyuOus92)gt zk@DEUNx!JI&df^d-g~MiiN|BS`nn5R{z{(w`jj@BXVveS-t#YeV3OP_ghK^O`^EA8 zvf|{gGey-?k8p0ohhm>!9nRFtuv!vB^$p8W*M`!)pE8@;S~XFS1#(}{=k>kcXsY*Y z{lLj!kH~{Ja@85WgYZ6RO4D6UyXPUReyceqNbR>UFo)bUaa`m<_Zv%TKV!|M)a008 zX@RVqCceLz*e_Q`yqLmdVRUo;q3CHIw(*xAU}10AI&25Mt&wg=PjUD6fWSOn;^8msU8_>H>nDBHLz+uC%zDzfh7l|t?3Gs|MxtzJD zACPF8Bvh~6$4u`yE*9!vdBPT(5^ZaDo@WV|72n0T0A1pQ`3P#@J2b?kv;E#tN#$>w z5~Z3zkz6jRQusphVHl<7{q6K|9`a@07u$3yy&wQjwu~8l9k_~P@eoM!_!tsGZxwRA zwEuS1s>PS=BmppNOufYc7v!C~PNnu_cWI63{5IkJsNUAn8&ft4x@U`{=Ji9Pc z_qA)r$Q;N}vWptii5kK3ObhN6geS9ealX+KTI_GSp1VWzk_xVfakr)hjO^Mt6@k&; zMz~+d4CT4g>ZxkOe4z__V;Bu9FGPy%zzskV=64^r9dHpZv*pWcqc`5M)j$0lbIQgI z#Bn5Hus6`lxeq9F6L*=F?mlx=!Z_ZZKXt#)L;<)AI8^d`3jumy@01>wAioMne;o;p z&fYQ;t)*U=U4CEt)$`qWBusmZ6Gmmj(~p#o7ycC2=L)!{=K`rEl6F}`a@P#D7$^aH za93`?T?WMdSF~f~I=|Q>JFdB?}^HH zRhJVd&XEHKc|OKrpw!DKSvAPt5)=P9bnEJC3*yZ&-ADoYSiQ~|ykbLT?_iLWl5)>Q z@|!y*5W!45cSEBf$R|Q0!pbX>3{#4@&JFoh7eDQ6ppTfU_Kk!Q#ff*Sc5%3~l? zh3~7rKtX?>46GaN*wZ+ReLw=X9;!1}l)&|*i*kAr!-U#TuP#Lo8(jiCfRitr7xqgk zbG|Orxb+@5{~1M$!__xT3EZe!(Y3OU(pQ3`pCr^Co>N@1;i}$spgJ_VTx%{loSV^X zQ%a>HR_o==smu{!0-k)?X>m% zSVbAVtK1Zm@1$e*{+p=ObO%!W<-`6Uc`Ws`ng2`Y=us&Q`89p@%Vj_x>vv6GDeN_R zaBHb5aWX`^P{X3HGK2WEh0Nd8k#GPI5~Xq-bS@KyzM{_Ko5wV z_T@zEQ&i~o^pT_pmhkbyBE0hekWNvI6cRYGW6D=!L8yBUs^jm%laVY@_toUtGQik3 zfzi?CDA8e&LEk^m`A&3?TRRo>&nEk5#j zHqKBNjz5$FXK+N>=&jn3-=|0O_qCVXX}SxwT0cY}VAWkUlve4|<*OCPx1V+A7GEJ2 zsGSR)kX4Jf-1e2MGq>=tNL`{+U-OsXS5%KUgcN}jpbYS|A6$3HDwn@Ep2@G;hKNnH zQ}dm)wLBKf9>L$fk|!r+Q(J;=CBFf)-M8DS$qY3d7hxDvue`+k@#?IwXz$Fxij?Oy zImV2Ae8`clQ(JCHlPm0h$(S;4Ii4<^wa%``&z>+veHb|x8^|VpT19*=n0@G-`)nP_ z5Ahjy0o#bAh+RkWigN;+bO@sGxmQy|=)rmdha>FgC5mc(@gHeeu@mprk16qWcF1Y1 zzZ914fvxDZmK&tt-NR@iMRTC~1dwzte*XJRH_T)O3krk{@Allr-~ybp!N_h8X3XNI z=(x$mh6s{rn7-4%u0>z@p*beL37#(pR*?|h;jSf}(S<|b*7#da?7F?!#_k3@ z^Y@u8!L2T=L{Q5=>wS+JmGb%~dm-R;C&WGIZwy0}?IS+mKqm@8N2DY;4_kA+-Z0qt zB-y6SslvNtl*A<&Oc^run>VJwv17lZxWTW-rJ*R85LFgn86zthBEE3@QCez?fy0ck z@PgrxKXAx?ssXrCO&Q=C164RfHp7!^7`c<-x>H+YlJ?FX9%>Mmyr_k^7qteI4VZ2$ zoMUW&Q~c7xKM}|OgR9+@^Dk$Gr}heXm+}y-`&poE61O@sw9cp;Bzyb}+oH>*%u!Jt zGUXfG-6~1(&^!plnwzSUXLFEoV|*vVOrSS*I3*h|=+@W`e19kZX~E*Oxj+p1y@~CO zC9WVw^%6NEEz!$-;qkYemaw*-ApE|i{PxwQ&@xiU!Y|L6WNBlcn03Wg`r^E4)2@@J zj^xo2^%J_T>&J4=wsvO1r6$5cF4fvA_eCh4ehlG~?8Z*HEr&7y4{hcAp>Y8f>3Q|i zJJ;kWGU%}sQ~H2Nj)IV>ju%DItU9fxK31)p8Q%86u0=1b?t~5ExTj@BL_A>pd!H+9 zu@V{)Pw1YfK{e4NzuS^U4L`9eYhPBKnc&>eIrT48YKiCVz{htDRc$FM)Xg>jj`aRE zZQlD->6r~~Ha0vh%M2a!GN~rpA$+!uT7J)J;ZWpYYs=Qea4~rGRXQ&_c}Ke=LjeyE zvu-1;yub@!oj>>eG9(SL)=mArZ;AJ_IW{=VnFxXqZ%XF8ua~OA^8~Z0Y1tuQb9^gr z7gpe0+D4D+FA|3*R_6sm>GaG$6@FfCJvDs8`6nAV?B056E794a>R*~)kQxz(K+xl- zNdi1n6JQ`D2NnrPc^2BMfl?z0Xm9>5O_YAMaDRdhQ(14?OW)uhLG3f1Jj;CBiSazT zNJfk;Nt%N5+cvIcbj+{j)IvW?CSep2*4Z-WxRXZ<+hn}*`Uuua*9>WXKT-~|FaAcC zjc)_Yu;gn*RX{I(3OSy_BC6*VI9~EAFjD||UR{cZ$C1e;zeykf_`=<=tw69P=ptlm zst!4-C4d#{J{4S-5N2EqEiQ1l&lTTrAkFTTOjPY@@}4)sJ+xu*l}EnXv(hYA{q~IH zartC+7~q)$=M`1G)h7b_Xf=>HOSFJSohr2-=w;z(EQlK3$Vtx0)GyyEkkRt^z|8w< za6@~HlFS&EGwT22jzu(JKJ$P!W#V0U0#=kGN^uQ4@0qVKzNa}xLyuT}uL5@@t`T%- zncEp9-qvzO{7)y?GaMKV2?H6 zf0=i9QclK4($n?J_3zY>u4JybN-&reIZ;`UUVfa1yvp|^vZkw9JP^RbFl_KoFo z%tzD%sj5-MuQqC3z$bX=A!_~;>VpNFL2MF-FY|1;>0AU*l_>uotzGv&Tu->xNwgJ$ zuiix`tM`y#)#$y1SdmquMi)d2V%1fXXwk!JQ8z-wS|lr0XAwkQqOE>6_g}boemS4d znfaVKXJ*dKJMTR2^Q?w*k~zj5osGXv^F`sZS~$|`U(FFaf2jWWCkvxNOsA*a*9U}) z>`ouQJDlOVDZa8yxXL5a_{vQsI(duv3Bhoc6Qu2G&^LdOSD#0am=C|(q2`^DicRFP zQH0_qEwH`WO9v6EzHWl|mru>-n}HOB!zm#tFK&T)ic2~?+djj-X4t~K%-7f@l0qzI zqzS<~zqFsFwZMS?u{z}+lAhteeNBo;{)fq1jm1@I)8({iHzY@zKOW&lw42$BkzQ1( zXDGnyC*JO7#7v-e-fMBcCW^ockzx5a3PP<&wufmKv~5$Xp+uwTP!t_LK-fdwe+X=pG|S*e*EfD-aiX3 zlYp?}mHhLXm=Q!m#}aJfKF7JEz(khH36-bxK}?VzkL{kzO1!=~IUS62(&%RlmCDdP zF6og@zaRv{^T*{8?+x``%&n~KHSwpxPgS=@j#nWhnw@?vv!Pqd9}nD#5euqzkd?cLE04HO_NS0 zY-3l-l0?Ee4(8vkI#LlrO!EZh(tqe}iF~p*-=eX?16fZ1fvO~C}nicfOK3JVUQqOwTr$0*0-;M9eiho*=IaIhONsAf&iVP}DE#~qAYJI^D}egf{& z>m-{dh1!1k>QE!Jq~H1Xpp){RD(GTa zyIB`Dvw`0cCUC8dFTI+qQIc#(m^OenaU|LsoQ|gU{OSv_`-!>dqN_?&rT8?0kIS>G ztlSiQqV?p)SWF)l*FWM78W$*}tvZlh&4o zrw>Hoi27p8&9nErcm0>(o6r-=^uaQ{XmZ26KuSL-tY;pnZoM_t|H;ZuL51BQ=P9PO zU36#sy!-iZuRgH?%+CwN<8i_AJU8zhgn&wZrXWCD@!(f|T2+z_yUE*m_8WgC&W?}p zb3!zl(f1EJ7uM6x9Ao6)*O{)F_a6Yg`|`c>XVyfJ$Lx4%e`ceu+HwNP!I0hLwifnL z&XJ@@xJG@R=**N|^T&nQyC)u}9pW3$Dq1XU8wPnLid5#7I0FbiqQKYK3-S69zN%M` z-eg}tVcK_B9p0qCKmLjgZJFm#<*VnWl_Wciok3(g|1HiLNOPvqNrk%gw;P7ZiRjbG z&F*Op^VH3dx!VFUWn&=y0*EoA?gYNmbbu2t4AXZuR zX0j7+{>)ePKEWC(ZB@dTer3_#k$6!DookrArDh}E!JR>~s6j3*u89VR&c5ZFIlaLr z91j{Kf4s?YTCY!?`LuD5Io;6E+q@YU1C267#DU~$uNZamOnEUbG-kbjQW>= zNXrkD>JE>EH_1R32D4V^EhzG}{;LLU=FL-?oXCV%gKuRGhPV%2hWlo=G?e#3dy_XR z3r%03(ma=#5uAjGHBS+cwxGB8rXq+sB3!We-sX;lZ&JCSp!cmJXw5tfa{ZqwVpRo7 zXVNEQ-@c--u73F*d>A-JAT#CPbU;4h2_@Mck7XCQvOw2B&p~z?$B`2b3x;)9s#g>~ z#eBsehF;-ik`o_LA&4#iFF}oXyy%6Q%$*J;sAV9{Cun(2VRh%->x;|4R&UBwx?RD&c$Exs{F{Ce&=dXx-h~g`NL4Jy{8qc@H7VR=mP^u8)Q4QsUMSFv z%oY1o+jezytG~LdkU++D*|X~l_8#szVV|emAyOs&v>er0wUV3@ZT14Sh>u1vAQTKv zHgt)@R=>6-R!rGml#)ghkBx{H5F+9G`V%I&UwG3DdGLEO11}z;-{b3;&H{RABG^N_ zf9DSgdS`5KUYh$Wqy=EFs7veJG*q9+;(Z;MFJA~r?nI>u`;FyiY^bWiD2X|%7r3W0YZqA4U}wp()Iw-W zLwstVmnR5dj3^yg`cf8IXmjUPTUOlxEJ3Olp2{jReDMAD2pS(A#^SBl1_756Q|fmD zN-+?+{ZFtS9#09ZsDt!c#u=-k9r`6g2hV{BIEe70uY8ZL+mnG_lX<;nr#@fX>ajwX z1_(I5>EaWQOZ|#cz=>no9P+I?OA5`5yBk+M^|^*7Mo?etBaFbb_u(>7j6tLW_f1bY zdxwgKyJK?)Cyz+sZEul?K!G_8?vEzKqJ=9}V73&Z zcXRf7-jMwZpP>g;?`77{jF>s)_w)}`vIgc`5v|bPH!7C6?>D}zS;646c9x>{Yr5wM9yVWHtFeeyK7T7SV5m|RjX%6?tETr89#45r5@XZk%vB4 zsMYraBHB*8*Avl6p?Rs+W&vJ#w|EWttVwh4G^dn{!>@vJk8nP_)4mLSzgrb@ZJ+9# zfsxLYoTQ9eRK5Vn%HKW6ni4moZ)$LeO1cJV{!iqIwatC(ht}1WvoI~H2WSw2J1KfR zwdyMx@>sPpGKeL-n7OiJ7xFI@uE1MoVK2k=& zFc+|D;oT_HC!T9jrFwKb%SqI_NBNXUWXTq0Uz)1O6gjQg?>BFKJPP17D0o+wSYdqG z`h4r0F)Qxx{Y)GC!xY>TZzA4!cEJTL!@cH1Zmx&j4f2!xlH30sv&kNax%MkiDbgtR z82j7M>l?8NgG3oFG6~*DxZ_#c{mFTw_i12VP}%oiG?k^!0vN5_5i32T@2L<9V8)VQ z@WWC%6cula{NoCfEd4@2A%@t8_Wdw_VApU_!uzEc{sQZr7A9NFKkrv}rP{y`^>vjG z=9cVS*6~jJjuOr0LoEEb%`qyzhV@nj#`y932kmeC5G?UjKqu zmp%7b42-_leiGmn7k=f;bF%rLxsw37>jdg3SQ7X*k~O?(6_^oi86Z`wkJek+s2IHO z^|(*2_w)7NZWRbGF0wP}RNe7AWdMugBMw2B(Uy;hhVf_u7|dyv7cUiGNp7|ooisUA z%aC};ZINM9*Bf@olbZduXB5hwGL>Bb9kQ^s;xqnM;K)r%I9*K)7E0XQpxhMttEMBm z3*rFXYWf;!y%63q4wcQvhdaPTlO23)lNDz!!_VCR5cT|BNYjxHwu$~m$BvkOLdvSt zu|yna9JxHp6>SQ}>~AU2FU}y;2QoV;^($1go}EW>uF7n;SU_ePet!}VY91GgopHYs zb>}x<`f59%l7p)G+tKQ6$vyQvJy##n{B&SZ3;VWLnbV+PIz-z4>BbL~86;9^rP!@T z&|f>5UsepNxIz@mOrYJNx=Sqvs1hIE%EC1gxX*(O@PyhdM0crG^>;=>nk>Qu;wu%l z?`GMW=#K_)PmFmQ3mo&0K@{I8x(1)kuU?*~$RX`jbAOd0pYEI6z=^)<4r+|km%f^! zf17f_u%TAlDsJ~TbjWCB=kC@0k^gQaNAoAI-FQ~KS?vwRp4WSfP%uJf*8x@3uq^w( z?(k%}+VRIQL=LX-IT+*d>)4ouS5{3T$C$_XXA{XjOLdDml@aG>-FGwhdF3|7%8%Jc zLu|Hc^Fd^ZZ{mG(Tz>q?=O2w=C^@5*0Jhs1+#Ch)px9Y)xRTMe^?KtXk9xJCKe}}X z1qLJKUPAkHt&FYDhvywKI^^N*w!R&$GiL+I5+Q==TH$)4k!tak8{6!;GtIommX}m` zJyBYIlBv04j zEb8sp_Ysw=X68xb|M;6^^&eU+gjY65aRvy4FIMc`;?|@x3W!yUH83;%{PL8kTDCkY z6DGl4jy4`pd6wVvfII`GcmPwIgnwvFq=7`GgA(heiq@XkqxNX&Qf0O8YISK*Hw+iHC|w__jc;c6RES`WYnjB=p4Nq`)Gw+2)6$$D}$8H}Y*{ZTcexmchP4 zQJI~}@j@n9u3!u{EV7@{Uz4&)2$ybQ@6YOY?^D>UyJ8asze)$cUImOmEev~5gqW-| zr6JN`#C>eylbM0kJMXDtDX>sL0oTs;J_=RW{)h3FvlW$*FX^M|K+*lXE)Z9VZ@B}} zVeWj!xMmXU7p^w(0(wRf~+C=>|Zc{kP+p_{IXlbWi3~7s3H1q#jUXVd6N7kUDc2)qy}} zYeOa?BBoi;!v_|Gp4o{1msj^iX&FdJ5I?u(Ltsq+rV8=#(>Xo9^z^ z((_xTeNPH(t-m`P6zyC7J)S~!ey#a@?0FRv{rmP6?F6dx6$C%KzTF55qMRZ;A*1?_ zwprf2Fa?Fp0^2E3=7;W*)~)nQkCTJKghYXmhj-j!nm)Tu?OP(9qle7I-&7k2fHC)O zBi=d8v_v6RErS>9FIHvX6er%I8)rop8Jc0AFT>Fp_(d2j$f_0cy*!Fnnj9bQ6Gv!P zd$z6(%+l@Hs(&A3&BVtZwOa|3#>3v4|igxl5A zepz=ArVui0+q|&~sBY@231(aN)+P?A{wyQ`aTzu+Av|DTw~!;YQ0&U9;a>x@^&afk zv1p^4*J)DH95D@yM(xTHDfX~y1L5BSZa0DMZ+{CTLk|(UN;|ePjLa1ri5ZW*{@gq` z<(vRmA?0;#UCO(!Lg5lYr8+bEpum<}xarouxI~|xI(>u;nR=~>MdZUKX`*Ko^53&1 z$!;?h3Qq~&18xIT5+q_1UsTYWdo9*w-9+E@*1X9Nrb;wjJfyG+Or#b5&3pjMCOe=ogd!;UsjN3rzI3- zOYOPXlUn12Y-hEZt7&a^05wT};3AA)DQodJ6l3E#k|f4RoL%OA0zvkt_47(=jD{Y~ z&IiC~9dUVYUmyQsm&|r0Ahd;!_t<-Iy^lELx4r^Jly1}GUFuGlM6K)6(spcXfPF*x z^rcqRsU6GPQX=>Zcg7g%TxCrlM4-x433Q<>=tAi<_? z@zIm+dosYVS)#S2?ZPxu&SftCMxd>29hXJDPru?&Y(A%K*!B7>5nkKks6ZDSa;2gH%@cBrYd43={+s`_lIyDfafRgsKs<8wO#W&6vAO$vVGIsC^+b&3WGABsKd*o0zb z0zR`VkfnGxW+CP(b`7$l%&mBzOcGZ;U6B|(Jh3?nk8hy4~LRX)NdN7x6tb}uE#gh_hripsW$ zTyM7Iwm8yY5=r7kCt0nq&^_0i1>vyhSyi)cgS4yZq@ZTiio znj37~?+Y$&rV7myoLcxRhkt;LEn$1Kuk1!cnU*L(Mux zx-r9P0};t+QvU?;DBU3#a&=K-d4a^zB!8qf^{`GL{;sob2yt208Hc00683N*aOcTF z=+2@mhg#MT8>xSmU!AcQRU(lBX%+De9o4jQytFxb|5yCU*)M_fPvz8t_4hn2M8hr6 z?q^{6e=MGg-hJliK5*L=lMTBf59f_CDDM8;l*y<=hCwG!X@ow3Tl5%Ok{#&Q3)4sQ zfU3$v8*^G-UI!V>I-#Qt!t~KsB9*tH>Xet_YLY`?Ha?|a1+J7N!q?h%bDjfBp+_vB zAp^FzZQevhL^NX@;WuplhI+U`9cV-DQGWU1-_|B5Ci7^!O*toC&(?XRL<41Q^pe0r-s0hPJ?CTeG)e|XkXc8y?Fu>;WEc@hQ^$~; zs}Ugjim8B5pBo|2QcmEr^TLi#I^z5jxRd20*qIdQ>i(R9ezbi?d0(cpft^|iL5{k( z0)HCPTCSCINb@$(A*_eK>MC!17p{GNwJ5x4vvT}?;@{YvOfC2L8? z^phY+dEISFKE3fsSK|t0WxZ8Y?0Q*S?hTaMZbxJyN@Il0>)e1ttd#Q<-M2XMTsa;F zaaV>84=9VkucQg+7T=hum~FvG5qRVw(~v*H5n(Fg6SIl9+HB3sxH3#r#8A)~Hts&c zh7439oWV|0uMu$Zm%b&Wl39U%;8H$6^&d2sd_7Vo_XKyKRuo*67;;H6D~hP%)HOfs zGprES25aRC_mvwbGLM-8Hu`tEzPh3MM1630#Nh{C@9`X^-P~x5IY5*_a}5sYd9R~{ z02&$!1Wh-VDP^0mJpotOuv^kF{7Z>SM<*gWir(DtEtA-no2+7YmM+rF92jFil$(KX zb|)a0>VEuw;W;+vr1XG7=V*gV$L#Nyv_#}9OORxImjh#mM$bvJeauyIbXV5InVmp@ zXQ_5f*TnWBS4UUTbY)+)N^Mip>?;tw}4kHQcm5W)n7@9h`ny_5Eb2i1G;h0 zArT`cRs_OtqN?k%MN~NQsqfW0)2ZgEjDrv=u;Z$j8`Lh`MEOJk=srY5*v7UKnXHv4 zFog1`Inm>3@K)dp1+;$#XgiTOOJ$$SDCwp~6v<8MG?vqo8|ho4y5WMIK!vwb?|Z7a zDk}E8=DhDdM2Z7re2KWm)Np~=oTJdSqi|&bcn`NUts-xIUd(@*eJJ&*@_@#-7#wBP zZ0srSKDNeThIca`vK~c<21h| za?o&Q7~$pe)UJ=TL;T+$80qx95_i2L&jTNSvdJ2EA2;_)bfc7Zr-%zzoZj^WeDPkS zxApmehA8K%%IE2}u^qUts0vR#E+3;XyaTrqos&E)zzr8~yT2$sOBW}V2Ese3c#FuI zHihaG)4E_};$!@TDmtj48*HE?eariqDbY za&JJ^O$9MymWE7i6aK?g>dqNl+Z<_82WWb1AL;UnH zw%YL0oSvfj#p2&`3Iv)6T~C?Aw@nej1LLzXEs@17H{b!X{U(%5 zb7|p=Zf>IR^@1x6eHlZ;p8H%k+YPDS3 zjm@|4I6advxHGjD8=}!jo&kXi^K%LdN2>>V6%J4WJ5dW@MM&jLT@Xt)^hvJFam3b>na}}Fh0Fu*TQS3 zxpnLBWWjQrh2!_d{j$r;lCQdqg-%Xu2nb;%CCF{RcjZrb<4w$GPDFa!pdY-G9Z8Up zi*39@zW_^d2Z)!v@h`nOgxN=AUS=v+hCo`vbhV>do9#ZaiwX!*>t>F)WW%$7ZiGDj zl-C;u?C6t>5K_cOo70dx7Znl>{~7SpD~xdj&@_E(w%Q#84zTt2+||u(3*qXhN**1V z%NaK?WNk){`h=Ie(Z4?&BMHt9e8~3jF_+T0S`45cII#XV>#lCeiOEHTAn?a;ee5Ch z+8hl4IaAubIm!uqTh8Da#M9LFC)z%F`+-Y$xfWaOY^hBx{y&*zF0swhWKw%BDqh+4 z7veG60^T_V@+N}vna;2_$9&AVJ}DGgmO^g@E{BZyCbhbGR4#q7j=3S)L&+&QKQJWA zAoVeHq(P36WAcuG6{cUII(o{V(x#vx5;70ebQ70r#ub+m6?LBtQ+Gug0 zA;7LjiZ?D8DGS7TFzFI}Cl_q_FUKke*xsBCtasm$xg}0Ni>G&muP2Ip^N78g4V6mg zy)JX4awtM_k*1IDh6wt-1YbRMq}% zvsTJYw)pS&gPqj&P#0~VIRXV|Qu5@*X2^aO>ZB&l@jK0|-nL5R(r|ZR9jN6pe69d5 z_?vNM1JAUQmzwpWG))1$4SU4lc){iQLub~*Z6)bc^HRk@({NrRuZ^BBebF&{>{#6Y eywaG^FdBgdYBRZijx>n~3G~SLVS|>-tN#HM3FCkO diff --git a/SCHNApps_old/doc/LaTeX/images/callBacks.svg b/SCHNApps_old/doc/LaTeX/images/callBacks.svg deleted file mode 100644 index 79fae637a..000000000 --- a/SCHNApps_old/doc/LaTeX/images/callBacks.svg +++ /dev/null @@ -1,507 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - Main app - - loadPlugin() - - constructor() - Plugin - - - linkPluginWith(Scene) - activate() - - - cb_initGL(Scene) - cb_recieved(Scene) - - - - - updateGL(Scene) - cb_redraw(Scene) - cb_updateMatrix(View) - - - foreach (View in Scene) - - - - - - - unloadPlugin() - disable() - - - - *methods that needs to be overloaded * - * - * - * - - - destructor() - unlinkPluginWith(Scene) - - - - cb_removingScene(Scene) - [actually removes scene] - - diff --git a/SCHNApps_old/doc/LaTeX/images/plugins.png b/SCHNApps_old/doc/LaTeX/images/plugins.png deleted file mode 100644 index 0e762add46ed782f9bedb47fba2f6224fbb0648f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11276 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�b|<~DS*m`OS~_>G&!mZ2&`#Y~*V+2+BjFE9 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 diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot1.png b/SCHNApps_old/doc/LaTeX/images/screenshot1.png deleted file mode 100644 index d999a45b94d470a1245af42297846c72b04ada29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15157 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 Z^_%~$HopD%{{qr|$prua diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot10.png b/SCHNApps_old/doc/LaTeX/images/screenshot10.png deleted file mode 100644 index 1948816cfdb266b287d180464a0a9c2c52fa076c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17675 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 F{|8srq6`24 diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot11.png b/SCHNApps_old/doc/LaTeX/images/screenshot11.png deleted file mode 100644 index 87d5cfb2ae322e8a080dc259487afbaee032beb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14885 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 KNQscH_kRIX)h!1A diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot14.png b/SCHNApps_old/doc/LaTeX/images/screenshot14.png deleted file mode 100644 index 47053298906d81cd9167e1e772a6a58fb14b56d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10605 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 diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot16.png b/SCHNApps_old/doc/LaTeX/images/screenshot16.png deleted file mode 100644 index 08d3d63d056f46a87d27dafd4863c38f6d5fa960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9670 zcmYj%byyqC7jA%1XmM$APjM~oP~2UMJH_3txLa{68l*^Zm!?4R;_gmx3(n2=yU%@| z`^RQycC)i{_Plf6BNMHvEQ9fm_#FTMz>t%bR0jYMc;W4IR7ChMmzQof{PfmYR?iIp zK*Rg*KmcUt62dQ{xXUR?p{%?k!h1u2Y$8VwzeHxMsp~G`0yo1FkX>r3Q zZI~+@eQcJ`!ah?$*twL7rNt>}@muwamGrUuu5IJxHY^5Y%m0G5M!>O_H<}-X{ z+iX~4#1w6ehiRO%%O;%(LNZ&s@c~JaI8kp;6!g-l3#qYXOHqM{@!mL56(jbp?prPs&Nv`*YaHfeCa;6R!M?K(ow%ooHQyv zDLF9mw%DR0ZC~M{^;>Zj%lyDOQ$;D_i-=$T2dIvx`4{EoJxnxTPgtS_mk`eY{*BZR z|D_>~wx&mj#R+SiVD`Cu5ild{<>T{675-FNUq5W|X%R1q&@%1Q?dB;}L*QzgDGh}E zeOlTnd3{JqV^hUqg`oY zOz{kp0HB`3*qF4?@q4N|{9a#R4-r`TU-1KMo7CyN_O4J@aJTk)@y_{l^sj~WuLy|7 zXxzaP4qfW~{okHCu|&OlIy?O*H2h?Y)_>W_{jtc)kk89CFfgc5P{HP*@=O!>sR_x< zm}`dGW?y*VX>!>vVh3S~n}fww)B(NSiT2vV=oL2xhK2}Yw5iW0{RGX93gqEeyjCpH zncr!Q4%oh0T9!sCj*~-g9`^J7L_CcQWNjAa9G2sxX`qfm7Oq%X2B(KjHWw*Z`)&^E zS&C)W1*-&P!c0PD4>XBFOS7~65sxT9k=G}*Y3mhSTwDDhe#{o=}7=D zHLZpOQ!z&BQ{$ttH|+xF+7q4%Mq6!`g+d}LSs0x`6)l>Qb%S%s4*rMd`YILnF7D0; zFea?5&dZ~Xe`SUFL7V*t2YU8?^_z1zh=`%L$3BdXFaE}&uXkbLi;Ii)-fC)-c_cg$ z5fM@{6TU|kT{O8Gy+1;b@|1GIUJyc5PM6-3a|naDj(-gnuoI%&=n8(NSqlq~wQyCr zz1da~UG#sPx6U7$m3$n@^_unsg-MR3#zk3zF8ueNa%n7(vba%hb2j|zz-N1T! z40LtxE(R$AU?;rQ4%LtOe)$;l&>Qkki4@(U`JP8Rs?wbSfil@1Yc>9?DCUG#*+@En zA$IyVJi^vP==*!D=0|$FUTxLym6o8~qOz}~OGzzFO-PNt1{l5Luk9p`e!Jqy8-9Y$swY0Q4yw1ci-Dada2YVh_+1Z1I(`7+( z#zg25@Ru>N!8*ZUuu`QAxlg8W>sdG1NJeelOH5I@is<9UQJL)a^ATJebQCw`1*qPpuipHubP_pfPdFpfyK`+Fc=U8 z1xf6(Ysi>X=&|s zC*b6ZQe??}tB3_^iZ19_Duqldt% z1C!3;okY&lN#ya__|mXdbx((w8u*<%K|aHo*>)zw3ht{-v#WBQdqA#?T?C937M&$dCtstWH;wuL*NRObkzx#>;liRZV{Mnbb##CLxV0$RP9bdZmD> zs;VNt4-XB!1=LUEJ2-xA?38XESYF?ak&Z9OQQaFQxa8-qZtvD{^mVt;cX=G7gF=^X zpxYKgMKCK9%r~J1dqn+yNYxF$*+*@-mL!v8K?bZXKYo}HWD#x;O2%7r6O#?PfnPQMw4IClEYH#O^|23rjo0DYUc zTB&+QTH4w3Re{&>!uY0h60wZ+pXK=w-Ne?lKxp-Te$dN*Mj>Y`_5+JAO!W0skQ^$g z><1m=H3~SP2zr=KJvliE3=Hh+6K`4bh1SV*J`Y$Ew$7Aik%5G(4>~{e4ZjKUGBqgY z%;;@z+QIT+Dam>htRdwfr{;(wvZjxuwO(^3*xJwGA67kBZ~k}-E_ktf`i5K(aLWMb zygjN?Iaz(YnKvHUy}Y~gE>!(n_OKkw=GwMm*a1rd9YVJ`@1o`(o@XjFYI|NHw5u@C z(HDAN4Mhq>Q`E$In(Ba*VMOn7Pk+(}`@~ zr;f6toA8!p-y&&JDk7SFrJ%*uLudAZVMH{a~AOnVb8(Sb*0EHFEa7z{UFks4S^ z@zXO4s)>z}d!-uH%s}FcqJ46V9_IhiyF?yS0tF$;Nq9J6Mt*uq$`({u>a@UKy}6Jx zruCQi@XElSjDbJn1;m_FPCbu~+XM0C#gvZt6%`e3=3DIOBmrq(xsDhp)fyJ#eBW+G zOs}p=VgEUJ=MgjdlQ4ox4%Y+c4@M+tNX=L^SAbEf8=nIQ4g}d!xDQn_C0C^$^ZBuW z%25bkiYl$hhXL+C(N)MJjM}hGG7P3M>A)@Y)at5mg>>gk`MN%5mgZM3;+&iuHp6yz zwZhhNReE`a+AjQQAw4~<-Ltc^qpjam&ZL9R-Nem_i~}Rt$C+gYd``VQYS80q1=v zUh4r~%F37tDv01uAF5<%v}~~|^q-zTRY#6%Z9EiYIZaR%4HoU)++e^Vn$-|H!c^P2 zb#Q=+jwFVp+N;|85Aa>NisA0a8A^!1IyvdGH=6bP_wRrI{-vjXz{0}f@n34Rg^Z}y z&hPK;QXwx*Jj2!ta&v_kK<~`2&SKTd`8UVhbhnv}7RYdMfT3TR@w$sgyt4oWELuI(J z{eHK{E?!<|^R^10lt^-4dJssG9$#8g(!$EBep8~}dc8X!mcZB#;N|Li33qZnMahMl zt5iNcJ(ZMztgWq`oX+wDz4QayJkQq1@bPzcb{aiT^l!z%b8ROJzaS~gV(%&P$5Ii$ zq~(vx5=8%*Ly>qO|;58p7Q?T zVODCYhNk8WFH^NP(}!5myN%HL`g*C@55n*kq|O>TR}EGvaI~>8DRsR*n1o9yu1HMk zr@rcU)`dpE%FM_pub|K{N=Y8{bdj5zt0MZ`*xC7%sv@#^bsxIJquL*7eYK;DDJv(Z z_sc(Pm$OPSPuY(DfH!OD=i&1%PsLoiqnY-`_{P)xx3qj8GC=R9Yrp^70_=A{#KK@U z+)F}Y`p>=IKn-=L-pD;yCPv1WtJ980SPvckyBfyS_l(Hs)g7+8|4wq!v}W~#^&&Cj zPgifbxw$zwI6i*-2o$$zS~@>JPf5YO9r7ZKNJ~pY1_Glbi{Nn0;U}Q)vY?dgY+?!uiYjixj_iJQ7eNIIJ9Q0>fX*&|fB&%0n}p*EEcK+a1vU zfM8Rbt{m~+s5q0SsnQbGJJ-aT$jG<2?OU_!cD9^yL>NHJBn9u5@o3q&(teA?asEG} z?=dVVRxp>GIy=&_$edEfQ85kJgj5a4oQ&LhQ^myEmo;Wr(#-$V) z7FI_Q8X9Vwt<9Kr>*O>&GgC7A)!f`%#tbY*Y4VX5-7h6I6?V4X;|Dv1^UBVS1v(_c zIwh}SYI@o@@P4^AmIVKVYji|m!i4G2ukhPE}hy~@1uscSJ-YuOXBlxaq+V8i%QP^F(!7>?!af(3Nqi5TDk8C!-_ddd1UJ=Zb2tf$e6)>2cmANrkSBASXNe6`nNfEdpS;+ z#LJIl-c^vl1ju=ZTpD@oml3=) z1r3e&bh`+_NstO?iU0(+S;0Cbilub z=RnY2mi5xo(i_oyAmi*|p!+fnspxuSc}ZWPv7>d!^~zq!chKi5HjHo?U|mY z&ReDR85CvF^$Q5zI`~8|T#IY{1k1?(uMHwGyK&H~OhG_l1Y2#lZZO8-J>78;tLm=) z$;o1P_}7z2d}%j6LVySluQjQVw=0aK-}NIvOz(w zE$}D~L)3XgOj=r6S9hTcwg%5bu;4~B3;Ug|buG6z74W;!b}(O0%24$8_dBe23v+R~ z|2HNs@f(SzNV4nnw6tGPX=bFX>jm>f;fI4_cpP;KD;9o#zZpp}S8Gi1;lnK)c7gEN zdsqtR`@TfFzN5**xa;>!^9SzwBYk2F zO(#mFIyH(a@}1ywFAt9R@r}-(r(?|z3!JsqT6yIb2S&(&FJnjiE}sD9)8B|9k?Yq? z)h*?c!Mc>54<}U#mX?+j{&#&L&rW!xo$_GAJPpm&;x{Rs(32LL%d58lPd93eUY6o6 zUoKq;MtfsuE5DqQ(#`GV_00|0>TI!Tf;YmC2C(1l)GQaIv9fkmN!3?V?cO|GstE97 z_IeHIR7BPFcGTU804s~Alm}~f30;Dh__}9AL(|T^mz_|qy-L&BLplc1dWt-`wuT8P z_M^p)QZw2{1|+W}QlheR7{m=C#9=tGDDipOVI5k~l&G|fLfKTj&NM3EG$ z3(9n&LuA2i2!KS$I=4BN^o6{Di${m%x}GgwL$`Jpw9g%&`+AtC+%3fYHhqMcT881^ zSpQhd{I0A>;UlBc*?1xRMOSWS)I<9b`GU3m=hGY)q&5q3Zz=wpjpHh~NUS#ULcf>>b?fo0N5&9^!x7yro&eA|=5aln^U}(9 zCkvoE?=7KZVlWoGj=A~3_m;G6!-|`kyTbRFFX1c~<16?oYw#2Z)q_ zq3DBTjMPdlV^dK4yxd+DqpWB~R-e&ojBEJfbTHe_+U z#>cB#a&Lnv1XR1$_`bAsRm*a`##0zsD7WlG{!@Q}iUG+fCP)*wWtEw+)H8s_Ct`j7 z(5SNha=xam0g~-%jkRa*nKQoQYHu~6WeeRt5$z@zLpKv z#O|S=v{)ZQMJ)U$0rs&@UoYEg|Bab8c6==W4U=Kp?o?gj=E++iY zCal?#HL9L_yFqbyt%f;`jv!3(O%fB1pu^)1J*O1i-tgVy( zA_y!6<`N|BP?7!1qc)CdmGiH7rdczRp~J##J0a)QBaRGxy*wE#czPz1r}s$nd;1Yn znflk{kJ_29Zr_y}%lx#x|BWko`JzM|5!RT}Pej3OB$H0{)7FR+O!!&#$e`en&$+R3 zQM%k8J?@|#6`s&V`6fCx=rC!R9n;DEw#WgRjwckT;0M;PnmvmDTv+v|PyF=oV@mrc z|F_W>TIk{!7d2l<2log5(5DT)hd(^e(+A7P|^99Cl-|> zQ3@gDy#gk*fY@n6+lxcYr}+FHhQg`y7jT?0LpQB*YmpM(@?ATh#q3{s!`(X#di=8& z7##uKmNrgpOi55bkPC9ISmuW;ZTdx}QyhcZ{WFeiY3R2LAfgXDKoy`5I5{Ae$5vBQ zOHNLfE}pdE8i&+Lkmc3x>>PJk4vRN7Py-&+F$0-aFt^&-tmU*8BiwLERVTlayfW$j-SA2Ac4 zrz`H9T;>%;AgeY1tQEZf9-agjbS#$zPgs2vNNQkVWiGF+Dy5fag=KSlu_g|p1lNow6rmv-8s-7T zy?uQqqO;~zb^Lgk@Bo;l{+NKbu}&V&&UJC#aw*L1N$V>Mz3h~*>$rU343_JILbm58 zq%Zo}Hv)OG%vmIY6Jx8zJsduAV`(D-)t=tXH)H2!E~XLzc|$htZZO?CXPg8#*9l8r zUY<-v+GJf)VZR!1MvMMzYF7T<&hg4r5eSupQ;T!SO+qackJf$9I>mXlR$_+aCbE_qh#gBHh1S(CD+xyo4`q zZ@#oyRo_TzI^4jPzI9$nhnn_RE+d5Ia_Zgt>~DVn0fHCp_ptx0EZmz#w<@}DoISOr z+0ETH6-q6VlC+31Czoqgj$Ug>G>t`|`Rr>k&UW5k;G&?A4!Yzb0Y0@^t2(15PV}h5 z;gB{YuTV7`78WieJyBU()un5IkB{39a;d0qJN&%nBPtq%DQ>{bYVV*n&`)=M|LtkT zEgaeBYHtt;V9A3PUR27YT^}@Xz#Bw57&JZe_V4ZyW1cn*_PLB+DbBQ0)-mHO^oIIZ zN#QSB{41_xS^#Cu8hLJ3p#0)Wj%bGvgk90YvOlF{*DM+c`273#)wpE?&S;4qcp4!% zG_*Jr;xryu(VopTqEoYZaSy=ewi}-iB~OgcnHZ*_=gTyF_YU)Imx1MDFL8uvB_r!c z){e3M+4lhE5l%>Rd{H@5MwL$O7pE&@G>Y{#@OET`%y$NPX5OTT2pNEwv+P3uR?)vY zXB3$VS$Gzv^T#w4gc~`mup672E(gK{U}F=y7j7(Bxw)#S%r%ExX2_C8%*5e^_5RpU z3yPp5zQBx9rT^oiY;BDq_}9SQ4wqycQx8F`c0OxtFO@FvAjflP$`Zar>4IJ+`)9fR zA6TZ#+Av=5Anb8FUwOat@v)P&dh>oRsz0Uem&?!M$D18CXkbgQv3zXjbOO_Dczg6pZX50K~D4M7sI)z+b-0 z=P6em9ojm6wZPNX{@&8m40rCnQ96@C_(@}nh>xJMDUID1!H~_nhkJq#JHJ}!2@LBJ*ywUt#?5+F9U6LfU3c@17WKesV@hvAL%6a4!5}37C9VRxZ&y*tf)SP& z_F5MY7t~!pt#a^_Wt|}+A?0hI5^``#(dXhx_B)QtQVmiO<2w6(#{T}T-)Q%5y2Q6O zHja+|3sho@WAk`>N?O@rD|*F!l5>fZmVjHp^M;|z!u z`0%Q!nST~FjNFuPKtwTWmDIn{NHC?dg!(tFDkHTg$S2-WJQUx0-|qP5XSPSLhA00l=EJuV1;bxFhe zRwgtS%EG02w99x`S}x&Kj#O=dQ~IxvygW2w=`SbZwI= zFq#_LH2KU5t~Gtu2DeMiCrddhCv|xhb+6yLVB>yl%Fd0+r_5rf)z#Op<V?l+Ov?uP! zdN#;gzX|>}BCJ3I)}z*8;5H<7{b5fcc%zS0!JR}GyUfFKF62@eZ;WfUFbMt04vt##zT)-ug$Ws$v%^w{FE73p3L);}cxTL6;02y+ zJcL=rG>1`)JI1{AY-d_)C|%C{vbwrr+Zq^cvvIUwv1V)s2ws!bi-tNxMxcLXex3lPE!p48>MEoOMNZ<-Hr{1u zRq%FZnqshNuj~~5*xy_rceMc28EO+Cu>d2lzPC^lOz@CI=5x$s6Ll_1&y#9ESI=9s zLl2$|sI<_iQR*jpV*u*Za$8Y(-=xE3#}MPQbqlate&G4NAx)h|ZM=jf#LBvHYot|X zGhk7cRka4Ou&T^%s@iKUU_CjQN)kf!!pG6kch?@b7c*Ze5sL3SrUa!>gWnsS7TUf6 zpwsH_{js(w(~v-fSGMA=-Gq!6cj)#^^b27RxcM_BI0 zbG~uQGsY@is>8+kr;N<4Kq<7!iD6YhsMnB7bTnMSWL5vt+Y!ySxyk9r(Lwz6{qX7g zhLvm3bAY2l>MZ^D!|CJE8!Ijk!pq9``GH}Z>g!-3dG`&9iUU24rKi1)sIkDlk-M+tNYJOl6? zq{UmQ-ctsCzNsOyd7ZkrEj72^FVAH3`cQto10uss(55li_hgSV%?u)~%9igU9#e42 zErf8Vg_^@*>&)(?)A#$3RnIbSv?T3NS9ko~O;d52Z0X;OHFjQVFC36$>u~NpW8S^H z?SA;k>fel8rWu_?O?VAV@?hwnsj-LwN6Jo9b^DU`s)eWqjXh8>Twt!0G7S^DPlO!> z4SRqMv1xL#Nht;tc7OMMTj7qFoR=2TzNa)iP$wSNz84KkmZt*_y&Wgvb(CCvKj~%S z@l=2nClL*=U707dERDV8NbBe47GsoB6pyYyD}H&R`j6p!)JoLzZVU5cW2Mnn|0VNMlxR78X0-+v+$DA2wf+ Zq@B}@y`Quw|Jz_CC#5V|^V#Iv{{iE{`?LT6 diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot17.png b/SCHNApps_old/doc/LaTeX/images/screenshot17.png deleted file mode 100644 index 03c6746229a049b03209066a4d1c317b1c6952ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12758 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 Unx`%Q{oz7hT3PD5glXvi0rrXRKL7v# diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot18.png b/SCHNApps_old/doc/LaTeX/images/screenshot18.png deleted file mode 100644 index cdccd44f489a05ddb41eb9075cb311fb24e9bcf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75321 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.zFk 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 bU+r^omP1YO=ZwfAB}Da_Cc0SB;^F@Rp+*dD diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot19.png b/SCHNApps_old/doc/LaTeX/images/screenshot19.png deleted file mode 100644 index c20698cfe8c6ff4ca86f89273d79848915f6d6f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113725 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 diff --git a/SCHNApps_old/doc/LaTeX/images/screenshot2.png b/SCHNApps_old/doc/LaTeX/images/screenshot2.png deleted file mode 100644 index d9e477e99f960b10aa96927039f3f8312e6c5a5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12802 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 a-!wTI1or_M;K1iKKx8Bo#H&ROga03%a8tw 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

9MCCv{O$+IEJlCn-HP5IO_StF=7&T6^3OvU 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Ⓢ_(L#m>ArTZv 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