From 1958283f3f1f3347e41a0031b169ee635e0263ce Mon Sep 17 00:00:00 2001
From: Pascal <engelerp@phys.ethz.ch>
Date: Thu, 27 Jul 2023 11:53:45 +0200
Subject: [PATCH] Added visibility manager for opacity and enable tracking

---
 gui/include/visibility_manager.hpp | 20 ++++++++++++++++++++
 gui/src/visibility_manager.cpp     | 14 ++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 gui/include/visibility_manager.hpp
 create mode 100644 gui/src/visibility_manager.cpp

diff --git a/gui/include/visibility_manager.hpp b/gui/include/visibility_manager.hpp
new file mode 100644
index 0000000..5add24b
--- /dev/null
+++ b/gui/include/visibility_manager.hpp
@@ -0,0 +1,20 @@
+#pragma once
+
+struct VisibilityManager {
+	static bool enableTop;
+	static bool enableBottom;
+
+	static float opacityMixer;
+
+	static float topOpacity();
+	static float bottomOpacity();
+	/*
+		Opacity Mixer:
+		0.f  - top transparent
+		1.f  - bottom transparent
+		0.5f - nothing transparent
+
+		alphaTop = std::max( 2.f * opacityMixer, 1.f );
+		alphaBottom = std::max( 2.f * ( 1.f - opacityMixer ) );
+	*/
+};
\ No newline at end of file
diff --git a/gui/src/visibility_manager.cpp b/gui/src/visibility_manager.cpp
new file mode 100644
index 0000000..095ece1
--- /dev/null
+++ b/gui/src/visibility_manager.cpp
@@ -0,0 +1,14 @@
+#include <visibility_manager.hpp>
+#include <algorithm>
+
+bool VisibilityManager::enableTop = true;
+bool VisibilityManager::enableBottom = true;
+
+float VisibilityManager::opacityMixer = 0.5;
+
+float VisibilityManager::topOpacity() {
+	return std::min(2.f * opacityMixer, 1.f);
+}
+float VisibilityManager::bottomOpacity() {
+	return std::min(2.f * (1.f - opacityMixer), 1.f);
+}
\ No newline at end of file
-- 
GitLab