From 3fb15424bf7ca5b8cc4e5c8b8cf35a9c14e7123c Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 31 Oct 2018 11:43:55 +0100 Subject: [PATCH] Add option to disable recenter on visibility changed --- Polyhedron/demo/Polyhedron/MainWindow.cpp | 8 ++++++++ Polyhedron/demo/Polyhedron/Preferences.ui | 7 +++++++ Polyhedron/demo/Polyhedron/Scene.cpp | 8 +++++++- Polyhedron/demo/Polyhedron/Scene.h | 2 ++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index 8f779072f81..12b4cf28d43 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -1575,6 +1575,7 @@ void MainWindow::readSettings() QSettings settings; viewer->setAntiAliasing(settings.value("antialiasing", false).toBool()); viewer->setFastDrawing(settings.value("quick_camera_mode", true).toBool()); + scene->enableVisibilityRecentering(settings.value("offset_update", true).toBool()); viewer->textRenderer()->setMax(settings.value("max_text_items", 10000).toInt()); viewer->setTotalPass(settings.value("transparency_pass_number", 4).toInt()); CGAL::Three::Three::s_defaultSMRM = CGAL::Three::Three::modeFromName( @@ -1947,6 +1948,11 @@ void MainWindow::on_actionPreferences_triggered() QSettings settings; prefdiag.setupUi(&dialog); + prefdiag.offset_updateCheckBox->setChecked( + settings.value("offset_update", true).toBool()); + connect(prefdiag.offset_updateCheckBox, SIGNAL(toggled(bool)), + scene, SLOT(enableVisibilityRecentering(bool))); + prefdiag.antialiasingCheckBox->setChecked(settings.value("antialiasing", false).toBool()); connect(prefdiag.antialiasingCheckBox, SIGNAL(toggled(bool)), viewer, SLOT(setAntiAliasing(bool))); @@ -2042,6 +2048,8 @@ void MainWindow::on_actionPreferences_triggered() //write settings settings.setValue("antialiasing", prefdiag.antialiasingCheckBox->isChecked()); + settings.setValue("offset_update", + prefdiag.offset_updateCheckBox->isChecked()); settings.setValue("quick_camera_mode", prefdiag.quick_cameraCheckBox->isChecked()); settings.setValue("transparency_pass_number", diff --git a/Polyhedron/demo/Polyhedron/Preferences.ui b/Polyhedron/demo/Polyhedron/Preferences.ui index 0435444e306..474bdf0aff1 100644 --- a/Polyhedron/demo/Polyhedron/Preferences.ui +++ b/Polyhedron/demo/Polyhedron/Preferences.ui @@ -78,6 +78,13 @@ + + + + Visibility Changes Recenter + + + diff --git a/Polyhedron/demo/Polyhedron/Scene.cpp b/Polyhedron/demo/Polyhedron/Scene.cpp index 7e4e0fcf240..7de9e1ab986 100644 --- a/Polyhedron/demo/Polyhedron/Scene.cpp +++ b/Polyhedron/demo/Polyhedron/Scene.cpp @@ -1201,7 +1201,8 @@ void Scene::itemVisibilityChanged(CGAL::Three::Scene_item* item) && !item->isEmpty()) { //does not recenter - Q_EMIT updated_bbox(false); + if(visibility_recentering_enabled) + Q_EMIT updated_bbox(false); } } @@ -1662,3 +1663,8 @@ void Scene::adjustIds(Item_id removed_id) m_entries[i]->setId(i-1);//the signal is emitted before m_entries is amputed from the item, so new id is current id -1. } } + +void Scene::enableVisibilityRecentering(bool b) +{ + visibility_recentering_enabled = b; +} diff --git a/Polyhedron/demo/Polyhedron/Scene.h b/Polyhedron/demo/Polyhedron/Scene.h index aa778970fb7..9f33be6ee5f 100644 --- a/Polyhedron/demo/Polyhedron/Scene.h +++ b/Polyhedron/demo/Polyhedron/Scene.h @@ -208,6 +208,7 @@ public Q_SLOTS: void setItemA(int i); //!Sets the item_B as the item at index i . void setItemB(int i); + void enableVisibilityRecentering(bool); Q_SIGNALS: //generated automatically by moc @@ -280,6 +281,7 @@ private: QOpenGLShaderProgram program; QOpenGLVertexArrayObject* vao; mutable QOpenGLBuffer vbo[2]; + bool visibility_recentering_enabled; }; // end class Scene