#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 namespace Render { class IElementRenderer { public: IElementRenderer() = default; virtual ~IElementRenderer() = default; void drawElement(WP element, const CRegion& damage); protected: virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; virtual void draw(WP element, const CRegion& damage) = 0; private: void calculateUVForSurface(PHLWINDOW, SP, PHLMONITOR pMonitor, bool main = false, const Vector2D& projSize = {}, const Vector2D& projSizeUnscaled = {}, bool fixMisalignedFSV1 = false); void drawRect(WP element, const CRegion& damage); void drawHints(WP element, const CRegion& damage); void drawPreBlur(WP element, const CRegion& damage); void drawClear(WP element, const CRegion& damage); void drawSurface(WP element, const CRegion& damage); void preDrawSurface(WP element, const CRegion& damage); void drawTex(WP element, const CRegion& damage); void drawTexMatte(WP element, const CRegion& damage); void drawCustom(WP element, const CRegion& damage); }; }