diff --git a/BasePlugin/BaseInterface.hh b/BasePlugin/BaseInterface.hh index 7daa95e90bb50e89e266f651b0c04518f8b4d4d9..ae010f1856e03a0ea249f70c444597c918ad1fe8 100644 --- a/BasePlugin/BaseInterface.hh +++ b/BasePlugin/BaseInterface.hh @@ -101,6 +101,16 @@ class BaseInterface { */ virtual void pluginsInitialized() {}; + /** \brief Initialize Plugin step 2 alternative + * + * This slot is similar to the vanilla version without parameters but additionally passes plugin command line options + * as key-value pairs. For passing command line options, use e.g.: + * OpenFlipper -o key1=value1 -p key2=value2 + * or + * OpenFlipper --pluginoptions key1=value1;key2=value2 + */ + virtual void pluginsInitialized(QVector> const& _pluginOptions) {}; + /** @} */ diff --git a/BasePlugin/PluginFunctions.cc b/BasePlugin/PluginFunctions.cc index f84e42aa115ce832c2f350f6ab44d5a48c60ff18..8b0a503d2109335b796b081d7d83182e85036594 100644 --- a/BasePlugin/PluginFunctions.cc +++ b/BasePlugin/PluginFunctions.cc @@ -161,6 +161,13 @@ void disableExaminerLightHandling() { bool examinerLightHandling() { return internalLightHandling_; } +/** \brief DONT USE DIRECTLY!! + * + * Plugin command line options + * The container is set by the command line parser once + * and it is passed to the respective pluginsInitialized(...) method + */ +static QVector> pluginCommandLineOptions_; int viewerId() { return viewerId_; @@ -1262,4 +1269,14 @@ ObjectReferenceRange objectReferences(IteratorRestriction _restriction, DataType return ObjectReferenceRange(_restriction, _dataType); } +const QVector > &pluginCommandLineOptions() +{ + return pluginCommandLineOptions_; +} + +void setPluginCommandLineOptions(const QVector > &_pluginCommandLineOptions) +{ + pluginCommandLineOptions_ = _pluginCommandLineOptions; +} + } // End namespace PluginFunctions diff --git a/BasePlugin/PluginFunctionsCore.hh b/BasePlugin/PluginFunctionsCore.hh index 96a7bbf6c375c8779d3f7fb79c383764f2527c73..c3c5d4d054b52082e691ac1883eb86c5855a5eff 100644 --- a/BasePlugin/PluginFunctionsCore.hh +++ b/BasePlugin/PluginFunctionsCore.hh @@ -158,6 +158,21 @@ void removeObjectFromMap(int _objectId); /** @} */ +//======================================= +// Object container functions +/** @name Internal container for plugin options set via command line arguments +* @{ */ +//======================================= + +/// Get command line plugin settings as key-value pairs +DLLEXPORT +QVector> const& pluginCommandLineOptions(); + +/// Set the command line plugin settings ( DO NOT USE!! ) +/// This method is usually only called by the command line parser +DLLEXPORT +void setPluginCommandLineOptions(QVector> const& _pluginCommandLineOptions); + //======================================= // SceneGraph Generator Map /** @name Internal container for scenegraph widget generators diff --git a/Core/Core.cc b/Core/Core.cc index 8765c1cf58fcab5669ef35310e4d33d005efdbe6..cffbbe6d4f53b0f8f35c9a473a1140af90b7656f 100644 --- a/Core/Core.cc +++ b/Core/Core.cc @@ -254,7 +254,7 @@ Core::init() { connect(coreWidget_, SIGNAL(applyOptions()) , this, SLOT(applyOptions())); connect(coreWidget_, SIGNAL(saveOptions()) , this, SLOT(saveOptions())); connect(coreWidget_, SIGNAL(recentOpen(QAction*)) , this, SLOT(slotRecentOpen(QAction*))); - connect(coreWidget_, SIGNAL(exit()) , this, SLOT(slotExit())); + connect(coreWidget_, SIGNAL(exit()) , this, SLOT(slotExit()), Qt::QueuedConnection); // queue to avoid destroying the core widget during event handling connect( coreWidget_, SIGNAL( resizeViewers(int,int) ), this, SLOT( resizeViewers(int,int) ) ); diff --git a/Core/Core.hh b/Core/Core.hh index 98c853a8d35306b7f4a811156d4443baa67e5d1d..e2990fcc5cc710022f015b2068de3cf99159ea6f 100644 --- a/Core/Core.hh +++ b/Core/Core.hh @@ -404,6 +404,9 @@ signals: /// Called after all plugins are loaded void pluginsInitialized(); + /// Called after all plugins are loaded and additionally passes command line plugin options + void pluginsInitialized(QVector> const&); + /// Tell plugins that the visibility of an object has changed void visibilityChanged(int _id); diff --git a/Core/PluginLoader.cc b/Core/PluginLoader.cc index 06df573508ee17e08451d054cd42db568cbabb3e..cea03e3f4d9535dd95a298fc92e83d7cdd3899fb 100644 --- a/Core/PluginLoader.cc +++ b/Core/PluginLoader.cc @@ -81,6 +81,7 @@ #include "OpenFlipper/BasePlugin/SecurityInterface.hh" #include "OpenFlipper/BasePlugin/PluginConnectionInterface.hh" #include "OpenFlipper/BasePlugin/MetadataInterface.hh" +#include "OpenFlipper/BasePlugin/PluginFunctionsCore.hh" #include @@ -559,6 +560,8 @@ void Core::loadPlugins() emit pluginsInitialized(); + emit pluginsInitialized(PluginFunctions::pluginCommandLineOptions()); + emit log(LOGOUT,tr("Loaded %n Plugin(s)","",int(plugins().size())) ); } @@ -1046,6 +1049,9 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic if ( checkSlot( plugin , "pluginsInitialized()" ) ) connect(this,SIGNAL(pluginsInitialized()),plugin,SLOT(pluginsInitialized()), Qt::DirectConnection); + if ( checkSlot( plugin , "pluginsInitialized(QVector>const&)" ) ) + connect(this,SIGNAL(pluginsInitialized(QVector>const&)),plugin,SLOT(pluginsInitialized(QVector>const&)), Qt::DirectConnection); + if ( checkSignal(plugin,"setSlotDescription(QString,QString,QStringList,QStringList)") ) connect(plugin, SIGNAL(setSlotDescription(QString,QString,QStringList,QStringList)), this, SLOT(slotSetSlotDescription(QString,QString,QStringList,QStringList)) ); diff --git a/OpenFlipper.cc b/OpenFlipper.cc index 19254deace9965253c86d05398f2df88d2cf9550..7ac198d45c19deaf349f6f3f2af46fa53e38dbe9 100644 --- a/OpenFlipper.cc +++ b/OpenFlipper.cc @@ -53,6 +53,7 @@ #include "OpenFlipper/Core/Core.hh" #include "common/glew_wrappers.hh" +#include "OpenFlipper/BasePlugin/PluginFunctionsCore.hh" // Qt #include @@ -365,6 +366,10 @@ CommandLineParseResult parseCommandLine(QCommandLineParser &parser, QString *err QCommandLineOption profileOption("profile",QCoreApplication::translate("main","Request OpenGL context profile with profile set as compat or core"),QCoreApplication::translate("main","< compat | core >")); parser.addOption(profileOption); + + QCommandLineOption pluginOptionsOption(QStringList() << "o" << "pluginoptions",QCoreApplication::translate("main", "Pass options to plugins"), "key1=value1;key2=value2;..."); + parser.addOption(pluginOptionsOption); + const QCommandLineOption helpOption = parser.addHelpOption(); const QCommandLineOption versionOption = parser.addVersionOption(); @@ -454,6 +459,19 @@ CommandLineParseResult parseCommandLine(QCommandLineParser &parser, QString *err if(parser.isSet(coreProfileOption)) { OpenFlipper::Options::coreProfile(true, true); } + if(parser.isSet(pluginOptionsOption)) + { + QStringList poptions = parser.value(pluginOptionsOption).split(";"); + QVector> pcloptions; + for(auto s : poptions) + { + auto kvp = s.split("="); + auto key = kvp[0]; + auto value = kvp[1]; + pcloptions.push_back({key, value}); + } + PluginFunctions::setPluginCommandLineOptions(pcloptions); + } return CommandLineOk; } diff --git a/cmake/ACGQt.cmake b/cmake/ACGQt.cmake index 8f12b5214f6fa95c898346bdc6cdaaa7c73a1fc7..9370daba30e448dad880bfa35afa0cc5978b49c4 100644 --- a/cmake/ACGQt.cmake +++ b/cmake/ACGQt.cmake @@ -100,6 +100,55 @@ macro (acg_qt5) endif() endforeach(QT_PACKAGE) + if (Qt5Core_FOUND AND Qt5Widgets_FOUND + AND Qt5Gui_FOUND AND Qt5OpenGL_FOUND AND Qt5Network_FOUND + AND Qt5Script_FOUND AND Qt5ScriptTools_FOUND AND Qt5Sql_FOUND + AND Qt5Xml_FOUND AND Qt5XmlPatterns_FOUND AND Qt5Help_FOUND + AND Qt5UiTools_FOUND AND Qt5Concurrent_FOUND + AND Qt5PrintSupport_FOUND) + set (QT5_FOUND TRUE) + else() + if (NOT Qt5Core_FOUND) + message(FATAL_ERROR "Qt5Core not found!") + endif() + if (NOT Qt5Widgets_FOUND) + message(FATAL_ERROR "Qt5Widgets not found!") + endif() + if (NOT Qt5Gui_FOUND) + message(FATAL_ERROR "Qt5Gui not found!") + endif() + if (NOT Qt5OpenGL_FOUND) + message(FATAL_ERROR "Qt5OpenGL not found!") + endif() + if (NOT Qt5Network_FOUND) + message(FATAL_ERROR "Qt5Network not found!") + endif() + if (NOT Qt5Script_FOUND) + message(FATAL_ERROR "Qt5Script not found!") + endif() + if (NOT Qt5ScriptTools_FOUND) + message(FATAL_ERROR "Qt5ScriptTools not found!") + endif() + if (NOT Qt5Sql_FOUND) + message(FATAL_ERROR "Qt5Sql not found!") + endif() + if (NOT Qt5Xml_FOUND) + message(FATAL_ERROR "Qt5Xml not found!") + endif() + if (NOT Qt5XmlPatterns_FOUND) + message(FATAL_ERROR "Qt5XmlPatterns not found!") + endif() + if (NOT Qt5Help) + message(FATAL_ERROR "Qt5Help not found!") + endif() + if (NOT Qt5Concurrent_FOUND) + message(FATAL_ERROR "Qt5Concurrent not found!") + endif() + if (NOT Qt5PrintSupport_FOUND) + message(FATAL_ERROR "Qt5PrintSupport not found!") + endif() + endif() + endif(Qt5Core_FOUND) if (QT5_FOUND) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index cf13dbc6e9dba090012ba97ff7235bef4922ecb5..25b77c8fce0586ac8903f70398d2e6f8643153ff 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -20,9 +20,9 @@ set( CMAKE_CXX_STANDARD 11 ) # ACG Environment default settings # This is ugly but currently we need to work around the default installed 5.3 on debian -if ( EXISTS /ACG/acgdev/gcc-x86_64/qt-5.10.1/5.10.1/gcc_64/ ) +if ( EXISTS /ACG/acgdev/gcc-x86_64/qt-5.11.2/5.11.2/gcc_64 ) # Default to this install path for QT%_INSTALL_DIR - set (QT5_INSTALL_PATH /ACG/acgdev/gcc-x86_64/qt-5.10.1/5.10.1/gcc_64/ CACHE PATH "Qt5 install path set for ACG environment" ) + set (QT5_INSTALL_PATH /ACG/acgdev/gcc-x86_64/qt-5.11.2/5.11.2/gcc_64/ CACHE PATH "Qt5 install path set for ACG environment using QT 5.11.2" ) endif() if ( WIN32 ) @@ -37,9 +37,11 @@ endif() IF ( APPLE ) - IF(CMAKE_BUILD_TYPE MATCHES Debug) - message(WARNING "WARNING: Mac Debug mode might mix debug and release libraries (Webkit, ...), which causes strange errors. If you use ports to provide qt, you might want to disable Qt debug libraries to make sure only release qt libraries are linked to OpenFlippers debug build.") - ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) + set(CMAKE_MACOSX_RPATH 0) + + IF(CMAKE_BUILD_TYPE MATCHES Debug) + message(WARNING "WARNING: Mac Debug mode might mix debug and release libraries (Webkit, ...), which causes strange errors. If you use ports to provide qt, you might want to disable Qt debug libraries to make sure only release qt libraries are linked to OpenFlippers debug build.") + ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) endif() diff --git a/cmake/FindQwt6.cmake b/cmake/FindQwt6.cmake index d01f5bae7816075a575fa7d311d0557468898cac..7895d9fc1c6764669d78f18ffadede0fcc8f079f 100644 --- a/cmake/FindQwt6.cmake +++ b/cmake/FindQwt6.cmake @@ -32,16 +32,20 @@ elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 15.*" ) endif() if (QT5_FOUND) - if (${Qt5Core_VERSION_STRING} VERSION_EQUAL "5.10.1" ) - SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-x86_64/qwt-6.1.3-qt5.10.1") - else() - if (${Qt5Core_VERSION_STRING} VERSION_EQUAL "5.9.0" ) - SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-x86_64/qwt-6.1.3-qt5.9.0") - else() - if (${Qt5Core_VERSION_STRING} VERSION_EQUAL "5.8.0" OR ${Qt5Core_VERSION_STRING} VERSION_GREATER "5.5.1") - SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-x86_64/qwt-6.1.3-qt5.8.0") - else() - SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-4.9-x86_64/qwt-6.1-qt5") + if (${Qt5Core_VERSION_STRING} VERSION_EQUAL "5.11.2") + SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-x86_64/qwt-6.1.3-qt5.11.2") + else() + if (${Qt5Core_VERSION_STRING} VERSION_EQUAL "5.10.1" ) + SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-x86_64/qwt-6.1.3-qt5.10.1") + else() + if (${Qt5Core_VERSION_STRING} VERSION_EQUAL "5.9.0" ) + SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-x86_64/qwt-6.1.3-qt5.9.0") + else() + if (${Qt5Core_VERSION_STRING} VERSION_EQUAL "5.8.0" OR ${Qt5Core_VERSION_STRING} VERSION_GREATER "5.5.1") + SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-x86_64/qwt-6.1.3-qt5.8.0") + else() + SET(ACG_SEARCH_PATH "/ACG/acgdev/gcc-4.9-x86_64/qwt-6.1-qt5") + endif() endif() endif() endif() diff --git a/cmake/FindSUITESPARSE.cmake b/cmake/FindSUITESPARSE.cmake index 921ac21a74d67ee4513b9aa5042d60bbd2b5503e..a50d4eb9001da9cce8cfd685cd5ee5cc84b7ef79 100644 --- a/cmake/FindSUITESPARSE.cmake +++ b/cmake/FindSUITESPARSE.cmake @@ -1,6 +1,6 @@ # - Try to find SUITESPARSE # Once done this will define -# +# # SUITESPARSE_FOUND - system has SUITESPARSE # SUITESPARSE_INCLUDE_DIRS - the SUITESPARSE include directory # SUITESPARSE_LIBRARIES - Link these to use SUITESPARSE @@ -37,7 +37,7 @@ if( WIN32 ) elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 14.*" ) SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2015/x32/") endif() - + FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h PATHS "C:\\libs\\win32\\SuiteSparse\\Include" @@ -53,21 +53,21 @@ if( WIN32 ) # find path suitesparse library - FIND_PATH( SUITESPARSE_LIBRARY_DIRS + FIND_PATH( SUITESPARSE_LIBRARY_DIRS NAMES amd.lib libamd.lib - PATHS "C:\\libs\\win32\\SuiteSparse\\libs" + PATHS "C:\\libs\\win32\\SuiteSparse\\libs" "${VS_SEARCH_PATH}" PATH_SUFFIXES suitesparse-4.2.1/lib64 suitesparse-metis-for-windows-1.2.2-install/lib64 ) - + # if we found the library, add it to the defined libraries IF ( SUITESPARSE_LIBRARY_DIRS ) if ( EXISTS "${SUITESPARSE_LIBRARY_DIRS}/libamd.lib" ) list ( APPEND SUITESPARSE_LIBRARIES optimized;libamd;optimized;libcamd;optimized;libccolamd;optimized;libcholmod;optimized;libcolamd;optimized;metis;optimized;libspqr;optimized;libumfpack;debug;libamdd;debug;libcamdd;debug;libccolamdd;debug;libcholmodd;debug;libspqrd;debug;libumfpackd;debug;libcolamdd;debug;metisd;optimized;liblapack;debug;liblapackd;optimized;suitesparseconfig;debug;suitesparseconfigd ) - else() + else() list ( APPEND SUITESPARSE_LIBRARIES optimized;amd;optimized;camd;optimized;ccolamd;optimized;cholmod;optimized;colamd;optimized;metis;optimized;spqr;optimized;umfpack;debug;amdd;debug;camdd;debug;ccolamdd;debug;cholmodd;debug;spqrd;debug;umfpackd;debug;colamdd;debug;metisd;optimized;blas;optimized;libf2c;optimized;lapack;debug;blasd;debug;libf2cd;debug;lapackd ) - endif() - + endif() + if(EXISTS "${CHOLMOD_INCLUDE_DIR}/SuiteSparseQR.hpp") SET(SUITESPARSE_SPQR_VALID TRUE CACHE BOOL "SuiteSparseSPQR valid") else() @@ -78,45 +78,34 @@ if( WIN32 ) FIND_LIBRARY( SUITESPARSE_SPQR_LIBRARY NAMES libspqr PATHS ${SUITESPARSE_LIBRARY_DIRS} ) - IF (SUITESPARSE_SPQR_LIBRARY) + IF (SUITESPARSE_SPQR_LIBRARY) list ( APPEND SUITESPARSE_LIBRARIES optimized;libspqr;debug;libspqrd) ENDIF (SUITESPARSE_SPQR_LIBRARY) endif() - - - ENDIF( SUITESPARSE_LIBRARY_DIRS ) - -else( WIN32 ) - IF( APPLE) - FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h - PATHS /opt/local/include/ufsparse ) - - FIND_PATH( SUITESPARSE_LIBRARY_DIR - NAMES libSuiteSparse.dylib - PATHS /opt/local/lib ) - list ( APPEND SUITESPARSE_LIBRARY_DIRS ${SUITESPARSE_LIBRARY_DIR} ) - list ( APPEND SUITESPARSE_LIBRARIES SuiteSparse) + ENDIF( SUITESPARSE_LIBRARY_DIRS ) - ELSE(APPLE) - FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h - PATHS /usr/local/include - /usr/include - /usr/include/suitesparse/ +else( WIN32 ) + FIND_PATH( CHOLMOD_INCLUDE_DIR cholmod.h + PATHS /usr/local/include + /usr/include + /usr/include/suitesparse/ + /opt/local/include/ ${CMAKE_SOURCE_DIR}/MacOS/Libs/cholmod PATH_SUFFIXES cholmod/ CHOLMOD/ ) - - FIND_PATH( SUITESPARSE_LIBRARY_DIR - NAMES libcholmod.so - PATHS /usr/lib - /usr/lib64 + + FIND_PATH( SUITESPARSE_LIBRARY_DIR + NAMES libcholmod.so libcholmod.dylib + PATHS /usr/lib + /usr/lib64 /usr/local/lib + /opt/local/lib /usr/lib/x86_64-linux-gnu ) + list ( APPEND SUITESPARSE_LIBRARY_DIRS ${SUITESPARSE_LIBRARY_DIR} ) - ENDIF(APPLE) # Add cholmod include directory to collection include directories IF ( CHOLMOD_INCLUDE_DIR ) @@ -141,12 +130,12 @@ else( WIN32 ) # list ( APPEND SUITESPARSE_LIBRARIES spqr) list ( APPEND SUITESPARSE_LIBRARIES umfpack) # endif() - + # Metis and spqr are optional FIND_LIBRARY( SUITESPARSE_METIS_LIBRARY NAMES metis PATHS ${SUITESPARSE_LIBRARY_DIR} ) - IF (SUITESPARSE_METIS_LIBRARY) + IF (SUITESPARSE_METIS_LIBRARY) list ( APPEND SUITESPARSE_LIBRARIES ${SUITESPARSE_METIS_LIBRARY}) ENDIF(SUITESPARSE_METIS_LIBRARY) @@ -160,13 +149,13 @@ else( WIN32 ) FIND_LIBRARY( SUITESPARSE_SPQR_LIBRARY NAMES spqr PATHS ${SUITESPARSE_LIBRARY_DIR} ) - IF (SUITESPARSE_SPQR_LIBRARY) + IF (SUITESPARSE_SPQR_LIBRARY) list ( APPEND SUITESPARSE_LIBRARIES spqr) ENDIF (SUITESPARSE_SPQR_LIBRARY) endif() - - ENDIF( SUITESPARSE_LIBRARY_DIR ) - + + ENDIF( SUITESPARSE_LIBRARY_DIR ) + endif( WIN32 ) IF (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES) @@ -177,4 +166,3 @@ IF (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES) ELSE (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES) SET( SUITESPARSE_FOUND FALSE ) ENDIF (SUITESPARSE_INCLUDE_DIRS AND SUITESPARSE_LIBRARIES) - diff --git a/libs_required/ACG/Scenegraph/TextureNode.cc b/libs_required/ACG/Scenegraph/TextureNode.cc index 70f14b7482eada3dda63264d16af0a0d8d382c24..2d435f6fd9b4f923ada8b6c7a3e54e4fe9e6afb9 100644 --- a/libs_required/ACG/Scenegraph/TextureNode.cc +++ b/libs_required/ACG/Scenegraph/TextureNode.cc @@ -502,26 +502,27 @@ void TextureNode::enter(GLState& _state , const DrawModes::DrawMode& _drawmode) open_volume_mesh_texture_draw_modes_ )) { if(_state.compatibilityProfile()) - ACG::GLState::enable( GL_TEXTURE_2D ); + ACG::GLState::enable( GL_TEXTURE_2D ); - mipmapping_globally_active_ = _state.mipmapping_allowed(); - - // Check if mipmapping status has changed - if(_state.mipmapping_allowed() != last_mipmapping_status_) { - - // Update mipmaps - updateMipmaps(mipmapping_globally_active_ && mipmapping_); - - // Keep track of changes - last_mipmapping_status_ = _state.mipmapping_allowed(); - - } - - if ( !textures_.empty() ) { - textures_[activeTexture_].tex->bind(); - } - if(_state.compatibilityProfile()) - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, tex_mode_ ); + mipmapping_globally_active_ = _state.mipmapping_allowed(); + + // Check if mipmapping status has changed + if(_state.mipmapping_allowed() != last_mipmapping_status_) { + + // Update mipmaps + updateMipmaps(mipmapping_globally_active_ && mipmapping_); + + // Keep track of changes + last_mipmapping_status_ = _state.mipmapping_allowed(); + + } + + if ( !textures_.empty() ) { + textures_[activeTexture_].tex->bind(); + } + + if(_state.compatibilityProfile()) + glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, tex_mode_ ); // if (_drawmode & DrawModes::SOLID_FACES_COLORED_2DTEXTURED_FACE_SMOOTH_SHADED) // glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); diff --git a/libs_required/OpenMesh b/libs_required/OpenMesh index 054e9985276cc8badd6a74f3621cc21de8936198..14052c8532582ed27b3db83ff7f878ab267fad2b 160000 --- a/libs_required/OpenMesh +++ b/libs_required/OpenMesh @@ -1 +1 @@ -Subproject commit 054e9985276cc8badd6a74f3621cc21de8936198 +Subproject commit 14052c8532582ed27b3db83ff7f878ab267fad2b diff --git a/widgets/aboutWidget/aboutWidget.ui b/widgets/aboutWidget/aboutWidget.ui index 582521d7f8db8e4da49e5331eed9852088bba4a5..d298e06ce9f068e4743f4b2c725bef82372a71dc 100644 --- a/widgets/aboutWidget/aboutWidget.ui +++ b/widgets/aboutWidget/aboutWidget.ui @@ -18,7 +18,7 @@ - 0 + 1 @@ -67,36 +67,41 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">The source code and binaries are published on OpenFlipper.org based on</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">the following license:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">=====================================</span></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">%1</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">Copyright (C) 2001-2014 by Computer Graphics Group, RWTH Aachen</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">Copyright (C) 2001-2018 by Computer Graphics Group, RWTH Aachen</span></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">www.openflipper.org</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">%1 is free software: you can redistribute it and/or modify</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">it under the terms of the GNU Lesser General Public License as</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">published by the Free Software Foundation, either version 3 of</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">the License, or (at your option) any later version with the</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">following exceptions:</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">If other files instantiate templates or use macros</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">or inline functions from this file, or you compile this file and</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">link it with other files to produce an executable, this file does</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">not by itself cause the resulting executable to be covered by the</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">GNU Lesser General Public License. This exception does not however</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">invalidate any other reasons why the executable file might be</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">covered by the GNU Lesser General Public License.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">%1 is distributed in the hope that it will be useful,</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">GNU Lesser General Public License for more details.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">You should have received a copy of the GNU LesserGeneral Public</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">License along with OpenFlipper. If not,</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">see &lt;http://www.gnu.org/licenses/&gt;.</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">=====================================</span></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">BSD 3-clause</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">Redistribution and use in source and binary forms, with or without</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> modification, are permitted provided that the following conditions are met: </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">1. Redistributions of source code must retain the above copyright notice,</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> this list of conditions and the following disclaimer.</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">2. Redistributions in binary form must reproduce the above copyright</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> notice, this list of conditions and the following disclaimer in the</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> documentation and/or other materials provided with the distribution.</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">3. Neither the name of the copyright holder nor the names of its</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> contributors may be used to endorse or promote products derived from</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> this software without specific prior written permission.</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;"> </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:11pt;">=====================================</span></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:11pt;"><br /></p></body></html>