summaryrefslogtreecommitdiff
path: root/src/render/pass/TexPassElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/pass/TexPassElement.cpp')
-rw-r--r--src/render/pass/TexPassElement.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/render/pass/TexPassElement.cpp b/src/render/pass/TexPassElement.cpp
new file mode 100644
index 00000000..05f756dc
--- /dev/null
+++ b/src/render/pass/TexPassElement.cpp
@@ -0,0 +1,44 @@
+#include "TexPassElement.hpp"
+#include "../OpenGL.hpp"
+
+#include <hyprutils/utils/ScopeGuard.hpp>
+using namespace Hyprutils::Utils;
+
+CTexPassElement::CTexPassElement(const CTexPassElement::SRenderData& data_) : data(data_) {
+ ;
+}
+
+void CTexPassElement::draw(const CRegion& damage) {
+ g_pHyprOpenGL->m_bEndFrame = data.flipEndFrame;
+
+ CScopeGuard x = {[]() {
+ //
+ g_pHyprOpenGL->m_bEndFrame = false;
+ }};
+
+ if (data.replaceProjection)
+ g_pHyprOpenGL->m_RenderData.monitorProjection = *data.replaceProjection;
+ g_pHyprOpenGL->renderTextureInternalWithDamage(data.tex, &data.box, data.a, data.damage.empty() ? damage : data.damage, data.round, data.syncTimeline, data.syncPoint);
+ if (data.replaceProjection)
+ g_pHyprOpenGL->m_RenderData.monitorProjection = g_pHyprOpenGL->m_RenderData.pMonitor->projMatrix;
+}
+
+bool CTexPassElement::needsLiveBlur() {
+ return false; // TODO?
+}
+
+bool CTexPassElement::needsPrecomputeBlur() {
+ return false; // TODO?
+}
+
+std::optional<CBox> CTexPassElement::boundingBox() {
+ return data.box.copy().scale(1.F / g_pHyprOpenGL->m_RenderData.pMonitor->scale).round();
+}
+
+CRegion CTexPassElement::opaqueRegion() {
+ return {}; // TODO:
+}
+
+void CTexPassElement::discard() {
+ ;
+}