diff options
| author | UjinT34 <41110182+UjinT34@users.noreply.github.com> | 2026-03-29 00:41:45 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-28 21:41:45 +0000 |
| commit | 38a7f03cf0e5ee116794a78581634ba3dab508fa (patch) | |
| tree | 969891411b2af4e437a183004018cfc359a3057e /src/render/ElementRenderer.hpp | |
| parent | ef2e8dfd5f7e6ee55fa7bc48e44974e64938d14a (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.hpp | 48 |
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); + }; +} |
