summaryrefslogtreecommitdiff
path: root/src/render/ElementRenderer.hpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2026-03-29 00:41:45 +0300
committerGitHub <noreply@github.com>2026-03-28 21:41:45 +0000
commit38a7f03cf0e5ee116794a78581634ba3dab508fa (patch)
tree969891411b2af4e437a183004018cfc359a3057e /src/render/ElementRenderer.hpp
parentef2e8dfd5f7e6ee55fa7bc48e44974e64938d14a (diff)
renderer: refactor part 7: api fixes (#13631)
Part 7 of ujin's refactors --------- Co-authored-by: Vaxry <vaxry@vaxry.net>
Diffstat (limited to 'src/render/ElementRenderer.hpp')
-rw-r--r--src/render/ElementRenderer.hpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/render/ElementRenderer.hpp b/src/render/ElementRenderer.hpp
new file mode 100644
index 00000000..ed92b06f
--- /dev/null
+++ b/src/render/ElementRenderer.hpp
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "./pass/BorderPassElement.hpp"
+#include "./pass/ClearPassElement.hpp"
+#include "./pass/FramebufferElement.hpp"
+#include "./pass/PreBlurElement.hpp"
+#include "./pass/RectPassElement.hpp"
+#include "./pass/RendererHintsPassElement.hpp"
+#include "./pass/ShadowPassElement.hpp"
+#include "./pass/SurfacePassElement.hpp"
+#include "./pass/TexPassElement.hpp"
+#include "./pass/TextureMatteElement.hpp"
+#include "./pass/InnerGlowPassElement.hpp"
+#include <hyprutils/math/Region.hpp>
+
+namespace Render {
+ class IElementRenderer {
+ public:
+ IElementRenderer() = default;
+ virtual ~IElementRenderer() = default;
+
+ void drawElement(WP<IPassElement> element, const CRegion& damage);
+
+ protected:
+ virtual void draw(WP<CBorderPassElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CClearPassElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CFramebufferElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CPreBlurElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CRectPassElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CShadowPassElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CInnerGlowPassElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CTexPassElement> element, const CRegion& damage) = 0;
+ virtual void draw(WP<CTextureMatteElement> element, const CRegion& damage) = 0;
+
+ private:
+ void calculateUVForSurface(PHLWINDOW, SP<CWLSurfaceResource>, PHLMONITOR pMonitor, bool main = false, const Vector2D& projSize = {}, const Vector2D& projSizeUnscaled = {},
+ bool fixMisalignedFSV1 = false);
+
+ void drawRect(WP<CRectPassElement> element, const CRegion& damage);
+ void drawHints(WP<CRendererHintsPassElement> element, const CRegion& damage);
+ void drawPreBlur(WP<CPreBlurElement> element, const CRegion& damage);
+ void drawSurface(WP<CSurfacePassElement> element, const CRegion& damage);
+ void preDrawSurface(WP<CSurfacePassElement> element, const CRegion& damage);
+ void drawTex(WP<CTexPassElement> element, const CRegion& damage);
+ void drawTexMatte(WP<CTextureMatteElement> element, const CRegion& damage);
+ void drawCustom(WP<IPassElement> element, const CRegion& damage);
+ };
+}