diff --git a/build/cmake/AddMCRL2Binary.cmake b/build/cmake/AddMCRL2Binary.cmake
index 7e926b7d83..145e2c31c3 100644
--- a/build/cmake/AddMCRL2Binary.cmake
+++ b/build/cmake/AddMCRL2Binary.cmake
@@ -4,6 +4,13 @@ include(CMakeParseArguments)
cmake_minimum_required(VERSION 3.1)
find_package(Threads)
+macro(append_unique LIST_VAR VALUE)
+ list(FIND ${LIST_VAR} ${VALUE} _index)
+ if(_index EQUAL -1)
+ list(APPEND ${LIST_VAR} "${VALUE}")
+ endif()
+endmacro()
+
function(_add_library_tests TARGET_NAME)
file(GLOB librarytest "test/*.cpp")
file(GLOB libraryexample "example/*.cpp")
@@ -145,7 +152,6 @@ function(_add_mcrl2_binary TARGET_NAME TARGET_TYPE)
set(VALUE_KW "SOURCEDIR" "INCLUDEDIR" "COMPONENT" "DESCRIPTION" "MENUNAME" "ICON")
set(LIST_KW "SOURCES" "DEPENDS" "INCLUDE" "RESOURCES" "NOHEADERTEST")
cmake_parse_arguments("ARG" "${OPTION_KW}" "${VALUE_KW}" "${LIST_KW}" ${ARGN})
-
if(NOT ARG_COMPONENT)
if("${TARGET_TYPE}" STREQUAL "LIBRARY")
set(ARG_COMPONENT "Libraries")
@@ -175,38 +181,55 @@ function(_add_mcrl2_binary TARGET_NAME TARGET_TYPE)
(IS_GUI_BINARY AND NOT MCRL2_ENABLE_GUI_TOOLS))
return()
endif()
+
+ get_filename_component(SOURCEDIR_ABS ${ARG_SOURCEDIR} ABSOLUTE)
+ get_filename_component(INCLUDEDIR_ABS ${ARG_INCLUDEDIR} ABSOLUTE)
- foreach(SRC ${ARG_SOURCES})
- get_filename_component(SRC_ABS ${SRC} ABSOLUTE)
- if(NOT "${SRC_ABS}" STREQUAL "${SRC}")
- get_filename_component(SRC_ABS ${ARG_SOURCEDIR}/${SRC} ABSOLUTE)
+ foreach(_SRC ${ARG_SOURCES})
+ get_filename_component(_SRC_ABS ${_SRC} ABSOLUTE)
+
+ # TODO: Is this necessary/wanted?
+ if(NOT EXISTS ${_SRC_ABS})
+ file(GLOB_RECURSE _SRC_ABS "${SOURCEDIR_ABS}/${_SRC}")
+ if(NOT _SRC_ABS)
+ message(WARNING " - ${TARGET_NAME} - No SRC_ABS with GLOB_RECURSE or get_filename_component for file: ${_SRC}")
+ endif()
endif()
-
- get_filename_component(SRC_EXT ${SRC_ABS} EXT)
+ list(APPEND ARG_SOURCES_ABS ${_SRC_ABS})
+ endforeach()
+
+ foreach(_SRC_ABS ${ARG_SOURCES_ABS})
+ # Check if file extension requires extra work
+ get_filename_component(SRC_EXT ${_SRC_ABS} EXT)
if("${SRC_EXT}" STREQUAL ".g")
# This is a grammar file. Generate a .c file using DParser
- get_filename_component(SRC_BASE ${SRC_ABS} NAME_WE)
+ get_filename_component(SRC_BASE ${_SRC_ABS} NAME_WE)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/source)
set(PARSER_CODE ${CMAKE_CURRENT_BINARY_DIR}/source/${SRC_BASE}.c)
string(REGEX REPLACE "(.*)_syntax" "\\1" GRAMMAR_IDENT ${SRC_BASE})
add_custom_command(
OUTPUT ${PARSER_CODE}
- COMMAND make_dparser -A -H0 -i${GRAMMAR_IDENT} -o${PARSER_CODE} ${SRC_ABS}
- DEPENDS make_dparser ${SRC_ABS}
+ COMMAND make_dparser -A -H0 -i${GRAMMAR_IDENT} -o${PARSER_CODE} ${_SRC_ABS}
+ DEPENDS make_dparser ${_SRC_ABS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating ${GRAMMAR_IDENT} parser"
)
- add_custom_target(${LIBNAME}_${SRC_BASE} SOURCES ${SRC_ABS})
- set(SRC_ABS ${PARSER_CODE})
- set(DEPENDS ${DEPENDS} dparser)
- set(ARG_INCLUDE ${ARG_INCLUDE} ${CMAKE_SOURCE_DIR}/3rd-party/dparser)
+ add_custom_target(${LIBNAME}_${SRC_BASE} SOURCES ${_SRC_ABS})
+ set(_SRC_ABS ${PARSER_CODE})
+
+ append_unique(DEPENDS dparser)
+ append_unique(ARG_INCLUDE ${CMAKE_SOURCE_DIR}/3rd-party/dparser)
endif()
- set(ARG_INCLUDE ${ARG_INCLUDE} ${CMAKE_SOURCE_DIR}/3rd-party/sylvan/src)
- set(SOURCES ${SRC_ABS} ${SOURCES})
+
+ append_unique(ARG_INCLUDE ${CMAKE_SOURCE_DIR}/3rd-party/sylvan/src)
+ append_unique(SOURCES ${_SRC_ABS})
endforeach()
-
- file(GLOB_RECURSE TARGET_INCLUDE_FILES ${ARG_INCLUDEDIR}/*.h)
+ # TODO: Fix finding header files to not use GLOB_RECURSE.
+ # Potential fixes: - HEADERS list parameter
+ # - INCLUDE_DIR list parameter -> multiple include directories
+ file(GLOB_RECURSE TARGET_INCLUDE_FILES ${INCLUDEDIR_ABS}/*.h)
+
if("${TARGET_TYPE}" STREQUAL "LIBRARY")
if(NOT SOURCES)
# This is a header-only library. We're still going to make a static library
@@ -243,6 +266,7 @@ function(_add_mcrl2_binary TARGET_NAME TARGET_TYPE)
_add_resource_files(${TARGET_NAME} "${ARG_MENUNAME}" "${ARG_DESCRIPTION}" "${ARG_ICON}" SOURCES)
endif()
+
add_executable(${TARGET_NAME} ${SOURCES} ${TARGET_INCLUDE_FILES})
if(IS_GUI_BINARY)
@@ -257,7 +281,7 @@ function(_add_mcrl2_binary TARGET_NAME TARGET_TYPE)
get_target_property(IS_BUNDLE ${TARGET_NAME} MACOSX_BUNDLE)
endif()
- target_include_directories(${TARGET_NAME} PUBLIC ${ARG_INCLUDEDIR} ${ARG_INCLUDE})
+ target_include_directories(${TARGET_NAME} PUBLIC ${ARG_INCLUDEDIR} ${ARG_INCLUDE} )
if(DEPENDS)
target_link_libraries(${TARGET_NAME} ${DEPENDS})
diff --git a/examples/academic/abp/abp.lts b/examples/academic/abp/abp.lts
new file mode 100644
index 0000000000..035c0091c7
Binary files /dev/null and b/examples/academic/abp/abp.lts differ
diff --git a/libraries/gui/include/mcrl2/gui/arcball.h b/libraries/gui/include/mcrl2/gui/arcball.h
index f0a393d9db..8ed0ad6709 100644
--- a/libraries/gui/include/mcrl2/gui/arcball.h
+++ b/libraries/gui/include/mcrl2/gui/arcball.h
@@ -19,7 +19,7 @@ namespace mcrl2
namespace gui
{
-QQuaternion arcballRotation(const QPoint& p1, const QPoint& p2);
+QQuaternion arcballRotation(const QPoint& p1, const QPoint& p2, const float rotation_speed = 1.0f);
void applyRotation(const QQuaternion& rotation, bool reverse = false);
diff --git a/libraries/gui/source/arcball.cpp b/libraries/gui/source/arcball.cpp
index 0e5ce10bd1..fa36d4c85b 100644
--- a/libraries/gui/source/arcball.cpp
+++ b/libraries/gui/source/arcball.cpp
@@ -59,11 +59,11 @@ static QVector3D arcballVector(const QPoint& p)
return QVector3D(x, y, z).normalized();
}
-QQuaternion arcballRotation(const QPoint& p1, const QPoint& p2)
+QQuaternion arcballRotation(const QPoint& p1, const QPoint& p2, const float rotation_speed)
{
// update rotation based on the difference in mouse coordinates
QVector3D v1 = arcballVector(p1).normalized();
- QVector3D v2 = arcballVector(p2).normalized();
+ QVector3D v2 = arcballVector(p1 + rotation_speed * (p2 - p1)).normalized();
QVector3D cross = QVector3D::crossProduct(v1, v2);
float dot = QVector3D::dotProduct(v1, v2);
return QQuaternion(dot, cross);
diff --git a/tools/release/ltsgraph/camera.h b/tools/release/ltsgraph/camera.h
index fbe89a1439..57f96e6b61 100644
--- a/tools/release/ltsgraph/camera.h
+++ b/tools/release/ltsgraph/camera.h
@@ -83,9 +83,4 @@ class ArcballCameraView
QRect m_viewport;
};
-class ArcballCameraController
-{
-
-};
-
#endif // MCRL2_LTSGRAPH_CAMERA_H
diff --git a/tools/release/ltsgraph/mainwindow.h b/tools/release/ltsgraph/mainwindow.h
index 29d91cdd49..39d544f8f2 100644
--- a/tools/release/ltsgraph/mainwindow.h
+++ b/tools/release/ltsgraph/mainwindow.h
@@ -112,7 +112,7 @@ class MainWindow : public QMainWindow
void showEvent(QShowEvent* event) override;
private:
- Ui::MainWindow m_ui; ///< The user interface generated by Qt.
+ Ui::MainWindow m_ui; ///< The user interface generated by Qt.
GLWidget* m_glwidget; ///< The GLWidget containing the visualisation of the graph.
Graph::Graph m_graph; ///< The current Graph.
Graph::SpringLayout* m_layout; ///< The SpringLayout algorithm which is applied to the graph.
diff --git a/tools/release/ltsgraph/shaders.cpp b/tools/release/ltsgraph/shaders.cpp
index 595007ec72..ecf01ef390 100644
--- a/tools/release/ltsgraph/shaders.cpp
+++ b/tools/release/ltsgraph/shaders.cpp
@@ -79,6 +79,7 @@ bool GlobalShader::link()
namespace
{
+
/// \brief A vertex shader that produces a cubic Bezier curve.
const char* g_arcVertexShader =
diff --git a/tools/release/ltsview/CMakeLists.txt b/tools/release/ltsview/CMakeLists.txt
index 0244298653..b30c03269a 100644
--- a/tools/release/ltsview/CMakeLists.txt
+++ b/tools/release/ltsview/CMakeLists.txt
@@ -1,43 +1,60 @@
+# This file was autogenerated with genCMakeLists.py for LTSView
+# Version: 1
+
+# Make sure AUTOUIC knows where to find the .ui files.
+set(CMAKE_AUTOUIC_SEARCH_PATHS "./include/ui/ui_files/")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE")
add_mcrl2_tool(ltsview
MENUNAME "LTSView"
DESCRIPTION "Visualisation tool for large state spaces (mCRL2 toolset)"
ICON "mcrl2-green"
SOURCES
- infodock.ui
- mainwindow.ui
- markdock.ui
- markstateruledialog.ui
- savepicturedialog.ui
- settingsdialog.ui
- settingsdock.ui
- simdock.ui
- ltsview.qrc
- cluster.cpp
- conedb.cpp
- fsm_state_positioner.cpp
- infodock.cpp
- lts.cpp
- ltscanvas.cpp
- ltsmanager.cpp
- main.cpp
- mainwindow.cpp
- markdock.cpp
- markmanager.cpp
- markstateruledialog.cpp
- primitivefactory.cpp
- primitives.cpp
- rtree.cpp
- savepicturedialog.cpp
- settingsdialog.cpp
- settingsdock.cpp
- simdock.cpp
- simulation.cpp
- sp_state_positioner.cpp
- state.cpp
- transition.cpp
- vectors.cpp
- visobjectfactory.cpp
- visualizer.cpp
+ ./deprecated/source/scene.cpp
+ ./source/cluster.cpp
+ ./source/fsm_state_positioner.cpp
+ ./source/generic_visualizer/cameras/arcballcamera.cpp
+ ./source/generic_visualizer/glutil/glcolor.cpp
+ ./source/generic_visualizer/glutil/glluts.cpp
+ ./source/generic_visualizer/glutil/glmeshes.cpp
+ ./source/generic_visualizer/glutil/glprimitivefactories.cpp
+ ./source/lts.cpp
+ ./source/ltsmanager.cpp
+ ./source/main.cpp
+ ./source/markmanager.cpp
+ ./source/rtree.cpp
+ ./source/simulation.cpp
+ ./source/sp_state_positioner.cpp
+ ./source/state.cpp
+ ./source/transition.cpp
+ ./source/ui/graphicsinfodialog.cpp
+ ./source/ui/infodock.cpp
+ ./source/ui/mainwindow.cpp
+ ./source/ui/markdock.cpp
+ ./source/ui/markstateruledialog.cpp
+ ./source/ui/savepicturedialog.cpp
+ ./source/ui/settingsdialog.cpp
+ ./source/ui/settingsdock.cpp
+ ./source/ui/simdock.cpp
+ ./source/vectors.cpp
+ ./source/visualizer/conedb.cpp
+ ./source/visualizer/glwidget.cpp
+ ./source/visualizer/ltscanvas.cpp
+ ./source/visualizer/ltsview_visualizer/testscene.cpp
+ ./source/visualizer/ltsview_visualizer/vistreegenerator.cpp
+ ./source/visualizer/primitivefactory.cpp
+ ./source/visualizer/primitives.cpp
+ ./source/visualizer/visobjectfactory.cpp
+ ./source/visualizer/visualizer.cpp
+ # Qt wants .ui files in the sources variable.
+ ./include/ui/ui_files/graphicsinfodialog.ui
+ ./include/ui/ui_files/infodock.ui
+ ./include/ui/ui_files/mainwindow.ui
+ ./include/ui/ui_files/markdock.ui
+ ./include/ui/ui_files/markstateruledialog.ui
+ ./include/ui/ui_files/savepicturedialog.ui
+ ./include/ui/ui_files/settingsdialog.ui
+ ./include/ui/ui_files/settingsdock.ui
+ ./include/ui/ui_files/simdock.ui
DEPENDS
mcrl2_lts
mcrl2_gui
@@ -51,4 +68,6 @@ add_mcrl2_tool(ltsview
INCLUDE
${OPENGL_INCLUDE_DIR}
${TR_INCLUDE_DIR}
+ ${Boost_INCLUDE_DIRS}
+ "./include/generic_visualizer/;./include/generic_visualizer/glutil/;./include/ui/;./deprecated/include/;./include/visualizer/;./include/;./include/visualizer/ltsview_visualizer/;./include/generic_visualizer/cameras/"
)
diff --git a/tools/release/ltsview/CMakeLists.txt.user b/tools/release/ltsview/CMakeLists.txt.user
new file mode 100644
index 0000000000..7122abb715
--- /dev/null
+++ b/tools/release/ltsview/CMakeLists.txt.user
@@ -0,0 +1,366 @@
+
+
+
+
+
+ EnvironmentId
+ {4905be1e-2a07-435b-bf1f-49e7148af656}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+
+ 0
+ true
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 6
+
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop (x86-windows-msys-pe-64bit)
+ Desktop (x86-windows-msys-pe-64bit)
+ {b2273836-bedf-4154-baa0-c8f4ea408f32}
+ 0
+ 0
+ 0
+
+ Debug
+ -DCMAKE_GENERATOR:STRING=MinGW Makefiles
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ C:\Github\mCRL2\tools\release\build-ltsview-Desktop_x86_windows_msys_pe_64bit-Debug
+
+
+
+ all
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ -DCMAKE_GENERATOR:STRING=MinGW Makefiles
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ C:\Github\mCRL2\tools\release\build-ltsview-Desktop_x86_windows_msys_pe_64bit-Release
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -DCMAKE_GENERATOR:STRING=MinGW Makefiles
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ C:\Github\mCRL2\tools\release\build-ltsview-Desktop_x86_windows_msys_pe_64bit-RelWithDebInfo
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -DCMAKE_GENERATOR:STRING=MinGW Makefiles
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ 0
+ C:\Github\mCRL2\tools\release\build-ltsview-Desktop_x86_windows_msys_pe_64bit-Profile
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ -DCMAKE_GENERATOR:STRING=MinGW Makefiles
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ C:\Github\mCRL2\tools\release\build-ltsview-Desktop_x86_windows_msys_pe_64bit-MinSizeRel
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 5
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ ProjectExplorer.CustomExecutableRunConfiguration
+
+ false
+ true
+ false
+ true
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/tools/release/ltsview/cone-res=15.obj b/tools/release/ltsview/cone-res=15.obj
new file mode 100644
index 0000000000..8234df41d8
--- /dev/null
+++ b/tools/release/ltsview/cone-res=15.obj
@@ -0,0 +1,176 @@
+v 2 0 0
+v 1.82709 0.813473 0
+v 1.33826 1.48629 0
+v 0.618034 1.90211 0
+v -0.209057 1.98904 0
+v -1 1.73205 0
+v -1.61803 1.17557 0
+v -1.9563 0.415823 0
+v -1.9563 -0.415823 0
+v -1.61803 -1.17557 0
+v -1 -1.73205 0
+v -0.209057 -1.98904 0
+v 0.618034 -1.90211 0
+v 1.33826 -1.48629 0
+v 1.82709 -0.813473 0
+v 1 0 1
+v 0.913545 0.406737 1
+v 0.669131 0.743145 1
+v 0.309017 0.951057 1
+v -0.104528 0.994522 1
+v -0.5 0.866025 1
+v -0.809017 0.587785 1
+v -0.978148 0.207912 1
+v -0.978148 -0.207912 1
+v -0.809017 -0.587785 1
+v -0.5 -0.866025 1
+v -0.104528 -0.994522 1
+v 0.309017 -0.951057 1
+v 0.669131 -0.743145 1
+v 0.913545 -0.406737 1
+v 2 0 0
+v 1.82709 0.813473 0
+v 1.33826 1.48629 0
+v 0.618034 1.90211 0
+v -0.209057 1.98904 0
+v -1 1.73205 0
+v -1.61803 1.17557 0
+v -1.9563 0.415823 0
+v -1.9563 -0.415823 0
+v -1.61803 -1.17557 0
+v -1 -1.73205 0
+v -0.209057 -1.98904 0
+v 0.618034 -1.90211 0
+v 1.33826 -1.48629 0
+v 1.82709 -0.813473 0
+v 1 0 1
+v 0.913545 0.406737 1
+v 0.669131 0.743145 1
+v 0.309017 0.951057 1
+v -0.104528 0.994522 1
+v -0.5 0.866025 1
+v -0.809017 0.587785 1
+v -0.978148 0.207912 1
+v -0.978148 -0.207912 1
+v -0.809017 -0.587785 1
+v -0.5 -0.866025 1
+v -0.104528 -0.994522 1
+v 0.309017 -0.951057 1
+v 0.669131 -0.743145 1
+v 0.913545 -0.406737 1
+vn 0.707107 0 0.707107
+vn 0.645974 0.287606 0.707107
+vn 0.473147 0.525483 0.707107
+vn 0.218508 0.672499 0.707107
+vn -0.0739128 0.703233 0.707107
+vn -0.353553 0.612372 0.707107
+vn -0.572061 0.415627 0.707107
+vn -0.691655 0.147016 0.707107
+vn -0.691655 -0.147016 0.707107
+vn -0.572061 -0.415627 0.707107
+vn -0.353553 -0.612372 0.707107
+vn -0.0739128 -0.703233 0.707107
+vn 0.218508 -0.672499 0.707107
+vn 0.473147 -0.525483 0.707107
+vn 0.645974 -0.287606 0.707107
+vn 0.707107 0 0.707107
+vn 0.645974 0.287606 0.707107
+vn 0.473147 0.525483 0.707107
+vn 0.218508 0.672499 0.707107
+vn -0.0739128 0.703233 0.707107
+vn -0.353553 0.612372 0.707107
+vn -0.572061 0.415627 0.707107
+vn -0.691655 0.147016 0.707107
+vn -0.691655 -0.147016 0.707107
+vn -0.572061 -0.415627 0.707107
+vn -0.353553 -0.612372 0.707107
+vn -0.0739128 -0.703233 0.707107
+vn 0.218508 -0.672499 0.707107
+vn 0.473147 -0.525483 0.707107
+vn 0.645974 -0.287606 0.707107
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+f 1//1 2//2 16//16
+f 2//2 17//17 16//16
+f 2//2 3//3 17//17
+f 3//3 18//18 17//17
+f 3//3 4//4 18//18
+f 4//4 19//19 18//18
+f 4//4 5//5 19//19
+f 5//5 20//20 19//19
+f 5//5 6//6 20//20
+f 6//6 21//21 20//20
+f 6//6 7//7 21//21
+f 7//7 22//22 21//21
+f 7//7 8//8 22//22
+f 8//8 23//23 22//22
+f 8//8 9//9 23//23
+f 9//9 24//24 23//23
+f 9//9 10//10 24//24
+f 10//10 25//25 24//24
+f 10//10 11//11 25//25
+f 11//11 26//26 25//25
+f 11//11 12//12 26//26
+f 12//12 27//27 26//26
+f 12//12 13//13 27//27
+f 13//13 28//28 27//27
+f 13//13 14//14 28//28
+f 14//14 29//29 28//28
+f 14//14 15//15 29//29
+f 15//15 30//30 29//29
+f 15//15 1//1 30//30
+f 1//1 16//16 30//30
+f 31//31 33//33 32//32
+f 31//31 34//34 33//33
+f 31//31 35//35 34//34
+f 31//31 36//36 35//35
+f 31//31 37//37 36//36
+f 31//31 38//38 37//37
+f 31//31 39//39 38//38
+f 31//31 40//40 39//39
+f 31//31 41//41 40//40
+f 31//31 42//42 41//41
+f 31//31 43//43 42//42
+f 31//31 44//44 43//43
+f 31//31 45//45 44//44
+f 46//46 47//47 48//48
+f 46//46 48//48 49//49
+f 46//46 49//49 50//50
+f 46//46 50//50 51//51
+f 46//46 51//51 52//52
+f 46//46 52//52 53//53
+f 46//46 53//53 54//54
+f 46//46 54//54 55//55
+f 46//46 55//55 56//56
+f 46//46 56//56 57//57
+f 46//46 57//57 58//58
+f 46//46 58//58 59//59
+f 46//46 59//59 60//60
diff --git a/tools/release/ltsview/cone-res=20.obj b/tools/release/ltsview/cone-res=20.obj
new file mode 100644
index 0000000000..211c2a62f2
--- /dev/null
+++ b/tools/release/ltsview/cone-res=20.obj
@@ -0,0 +1,236 @@
+v 2 0 0
+v 1.90211 0.618034 0
+v 1.61803 1.17557 0
+v 1.17557 1.61803 0
+v 0.618034 1.90211 0
+v -2.06823e-13 2 0
+v -0.618034 1.90211 0
+v -1.17557 1.61803 0
+v -1.61803 1.17557 0
+v -1.90211 0.618034 0
+v -2 -4.14534e-13 0
+v -1.90211 -0.618034 0
+v -1.61803 -1.17557 0
+v -1.17557 -1.61803 0
+v -0.618034 -1.90211 0
+v 6.21358e-13 -2 0
+v 0.618034 -1.90211 0
+v 1.17557 -1.61803 0
+v 1.61803 -1.17557 0
+v 1.90211 -0.618034 0
+v 1 0 1
+v 0.951057 0.309017 1
+v 0.809017 0.587785 1
+v 0.587785 0.809017 1
+v 0.309017 0.951057 1
+v -1.03412e-13 1 1
+v -0.309017 0.951057 1
+v -0.587785 0.809017 1
+v -0.809017 0.587785 1
+v -0.951057 0.309017 1
+v -1 -2.07267e-13 1
+v -0.951057 -0.309017 1
+v -0.809017 -0.587785 1
+v -0.587785 -0.809017 1
+v -0.309017 -0.951057 1
+v 3.10679e-13 -1 1
+v 0.309017 -0.951057 1
+v 0.587785 -0.809017 1
+v 0.809017 -0.587785 1
+v 0.951057 -0.309017 1
+v 2 0 0
+v 1.90211 0.618034 0
+v 1.61803 1.17557 0
+v 1.17557 1.61803 0
+v 0.618034 1.90211 0
+v -2.06823e-13 2 0
+v -0.618034 1.90211 0
+v -1.17557 1.61803 0
+v -1.61803 1.17557 0
+v -1.90211 0.618034 0
+v -2 -4.14534e-13 0
+v -1.90211 -0.618034 0
+v -1.61803 -1.17557 0
+v -1.17557 -1.61803 0
+v -0.618034 -1.90211 0
+v 6.21358e-13 -2 0
+v 0.618034 -1.90211 0
+v 1.17557 -1.61803 0
+v 1.61803 -1.17557 0
+v 1.90211 -0.618034 0
+v 1 0 1
+v 0.951057 0.309017 1
+v 0.809017 0.587785 1
+v 0.587785 0.809017 1
+v 0.309017 0.951057 1
+v -1.03412e-13 1 1
+v -0.309017 0.951057 1
+v -0.587785 0.809017 1
+v -0.809017 0.587785 1
+v -0.951057 0.309017 1
+v -1 -2.07267e-13 1
+v -0.951057 -0.309017 1
+v -0.809017 -0.587785 1
+v -0.587785 -0.809017 1
+v -0.309017 -0.951057 1
+v 3.10679e-13 -1 1
+v 0.309017 -0.951057 1
+v 0.587785 -0.809017 1
+v 0.809017 -0.587785 1
+v 0.951057 -0.309017 1
+vn 0.707107 0 0.707107
+vn 0.672499 0.218508 0.707107
+vn 0.572061 0.415627 0.707107
+vn 0.415627 0.572061 0.707107
+vn 0.218508 0.672499 0.707107
+vn -7.3123e-14 0.707107 0.707107
+vn -0.218508 0.672499 0.707107
+vn -0.415627 0.572061 0.707107
+vn -0.572061 0.415627 0.707107
+vn -0.672499 0.218508 0.707107
+vn -0.707107 -1.4656e-13 0.707107
+vn -0.672499 -0.218508 0.707107
+vn -0.572061 -0.415627 0.707107
+vn -0.415627 -0.572061 0.707107
+vn -0.218508 -0.672499 0.707107
+vn 2.19683e-13 -0.707107 0.707107
+vn 0.218508 -0.672499 0.707107
+vn 0.415627 -0.572061 0.707107
+vn 0.572061 -0.415627 0.707107
+vn 0.672499 -0.218508 0.707107
+vn 0.707107 0 0.707107
+vn 0.672499 0.218508 0.707107
+vn 0.572061 0.415627 0.707107
+vn 0.415627 0.572061 0.707107
+vn 0.218508 0.672499 0.707107
+vn -7.3123e-14 0.707107 0.707107
+vn -0.218508 0.672499 0.707107
+vn -0.415627 0.572061 0.707107
+vn -0.572061 0.415627 0.707107
+vn -0.672499 0.218508 0.707107
+vn -0.707107 -1.4656e-13 0.707107
+vn -0.672499 -0.218508 0.707107
+vn -0.572061 -0.415627 0.707107
+vn -0.415627 -0.572061 0.707107
+vn -0.218508 -0.672499 0.707107
+vn 2.19683e-13 -0.707107 0.707107
+vn 0.218508 -0.672499 0.707107
+vn 0.415627 -0.572061 0.707107
+vn 0.572061 -0.415627 0.707107
+vn 0.672499 -0.218508 0.707107
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+f 1//1 2//2 21//21
+f 2//2 22//22 21//21
+f 2//2 3//3 22//22
+f 3//3 23//23 22//22
+f 3//3 4//4 23//23
+f 4//4 24//24 23//23
+f 4//4 5//5 24//24
+f 5//5 25//25 24//24
+f 5//5 6//6 25//25
+f 6//6 26//26 25//25
+f 6//6 7//7 26//26
+f 7//7 27//27 26//26
+f 7//7 8//8 27//27
+f 8//8 28//28 27//27
+f 8//8 9//9 28//28
+f 9//9 29//29 28//28
+f 9//9 10//10 29//29
+f 10//10 30//30 29//29
+f 10//10 11//11 30//30
+f 11//11 31//31 30//30
+f 11//11 12//12 31//31
+f 12//12 32//32 31//31
+f 12//12 13//13 32//32
+f 13//13 33//33 32//32
+f 13//13 14//14 33//33
+f 14//14 34//34 33//33
+f 14//14 15//15 34//34
+f 15//15 35//35 34//34
+f 15//15 16//16 35//35
+f 16//16 36//36 35//35
+f 16//16 17//17 36//36
+f 17//17 37//37 36//36
+f 17//17 18//18 37//37
+f 18//18 38//38 37//37
+f 18//18 19//19 38//38
+f 19//19 39//39 38//38
+f 19//19 20//20 39//39
+f 20//20 40//40 39//39
+f 20//20 1//1 40//40
+f 1//1 21//21 40//40
+f 41//41 43//43 42//42
+f 41//41 44//44 43//43
+f 41//41 45//45 44//44
+f 41//41 46//46 45//45
+f 41//41 47//47 46//46
+f 41//41 48//48 47//47
+f 41//41 49//49 48//48
+f 41//41 50//50 49//49
+f 41//41 51//51 50//50
+f 41//41 52//52 51//51
+f 41//41 53//53 52//52
+f 41//41 54//54 53//53
+f 41//41 55//55 54//54
+f 41//41 56//56 55//55
+f 41//41 57//57 56//56
+f 41//41 58//58 57//57
+f 41//41 59//59 58//58
+f 41//41 60//60 59//59
+f 61//61 62//62 63//63
+f 61//61 63//63 64//64
+f 61//61 64//64 65//65
+f 61//61 65//65 66//66
+f 61//61 66//66 67//67
+f 61//61 67//67 68//68
+f 61//61 68//68 69//69
+f 61//61 69//69 70//70
+f 61//61 70//70 71//71
+f 61//61 71//71 72//72
+f 61//61 72//72 73//73
+f 61//61 73//73 74//74
+f 61//61 74//74 75//75
+f 61//61 75//75 76//76
+f 61//61 76//76 77//77
+f 61//61 77//77 78//78
+f 61//61 78//78 79//79
+f 61//61 79//79 80//80
diff --git a/tools/release/ltsview/cone.obj b/tools/release/ltsview/cone.obj
new file mode 100644
index 0000000000..21d7ab7cd7
--- /dev/null
+++ b/tools/release/ltsview/cone.obj
@@ -0,0 +1,32 @@
+v 1 0 0
+v -0.5 0.866025 0
+v -0.5 -0.866025 0
+v 0.5 0 1
+v -0.25 0.433013 1
+v -0.25 -0.433013 1
+v 1 0 0
+v -0.5 0.866025 0
+v -0.5 -0.866025 0
+v 0.5 0 1
+v -0.25 0.433013 1
+v -0.25 -0.433013 1
+vn 0.894427 0 0.447214
+vn -0.447214 0.774597 0.447214
+vn -0.447214 -0.774597 0.447214
+vn 0.894427 0 0.447214
+vn -0.447214 0.774597 0.447214
+vn -0.447214 -0.774597 0.447214
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 -1
+vn 0 0 1
+vn 0 0 1
+vn 0 0 1
+f 1//1 2//2 4//4
+f 2//2 5//5 4//4
+f 2//2 3//3 5//5
+f 3//3 6//6 5//5
+f 3//3 1//1 6//6
+f 1//1 4//4 6//6
+f 7//7 9//9 8//8
+f 10//10 11//11 12//12
diff --git a/tools/release/ltsview/deprecated/include/scene.h b/tools/release/ltsview/deprecated/include/scene.h
new file mode 100644
index 0000000000..d8edacc39f
--- /dev/null
+++ b/tools/release/ltsview/deprecated/include/scene.h
@@ -0,0 +1,243 @@
+#ifndef SCENE_H
+#define SCENE_H
+
+#include
+#include
+#include
+#include
+#include
+
+#include "glscene.h"
+#include
+#include "cluster.h"
+
+#include "glvistree.h"
+#include "glscenegraph.h"
+#include "glmeshes.h"
+
+#include