From 1789a3bf2a8791684bcbd19fe06d641d685f64b9 Mon Sep 17 00:00:00 2001 From: LionHeartP Date: Sun, 4 Oct 2026 08:20:08 +0300 Subject: [PATCH] borders/bars: chase hyprland --- borders-plus-plus/BorderppPassElement.cpp | 8 +++--- borders-plus-plus/BorderppPassElement.hpp | 6 ++--- borders-plus-plus/borderDeco.cpp | 10 ++++---- borders-plus-plus/borderDeco.hpp | 4 +-- borders-plus-plus/main.cpp | 2 +- hyprbars/BarPassElement.cpp | 12 ++++----- hyprbars/BarPassElement.hpp | 10 ++++---- hyprbars/barDeco.cpp | 30 +++++++++++------------ hyprbars/barDeco.hpp | 8 +++--- hyprbars/main.cpp | 2 +- 10 files changed, 46 insertions(+), 46 deletions(-) diff --git a/borders-plus-plus/BorderppPassElement.cpp b/borders-plus-plus/BorderppPassElement.cpp index 53772a47..4c580b49 100644 --- a/borders-plus-plus/BorderppPassElement.cpp +++ b/borders-plus-plus/BorderppPassElement.cpp @@ -7,15 +7,15 @@ CBorderPPPassElement::CBorderPPPassElement(const CBorderPPPassElement::SBorderPP ; } -std::vector> CBorderPPPassElement::draw() { - data.deco->drawPass(g_pHyprRenderer->m_renderData.pMonitor.lock(), data.a); +std::vector> CBorderPPPassElement::draw(Render::CRenderContext& ctx) { + data.deco->drawPass(ctx, ctx.m_data.pMonitor.lock(), data.a); return {}; } -bool CBorderPPPassElement::needsLiveBlur() { +bool CBorderPPPassElement::needsLiveBlur(Render::CRenderContext& ctx) { return false; } -bool CBorderPPPassElement::needsPrecomputeBlur() { +bool CBorderPPPassElement::needsPrecomputeBlur(Render::CRenderContext& ctx) { return false; } diff --git a/borders-plus-plus/BorderppPassElement.hpp b/borders-plus-plus/BorderppPassElement.hpp index 6d8abe5e..481b8424 100644 --- a/borders-plus-plus/BorderppPassElement.hpp +++ b/borders-plus-plus/BorderppPassElement.hpp @@ -13,9 +13,9 @@ class CBorderPPPassElement : public IPassElement { CBorderPPPassElement(const SBorderPPData& data_); virtual ~CBorderPPPassElement() = default; - virtual std::vector> draw() override; - virtual bool needsLiveBlur() override; - virtual bool needsPrecomputeBlur() override; + virtual std::vector> draw(Render::CRenderContext& ctx) override; + virtual bool needsLiveBlur(Render::CRenderContext& ctx) override; + virtual bool needsPrecomputeBlur(Render::CRenderContext& ctx) override; virtual const char* passName() override { return "CBorderPPPassElement"; diff --git a/borders-plus-plus/borderDeco.cpp b/borders-plus-plus/borderDeco.cpp index 2407b911..999e9766 100644 --- a/borders-plus-plus/borderDeco.cpp +++ b/borders-plus-plus/borderDeco.cpp @@ -67,7 +67,7 @@ std::string CBordersPlusPlus::getDisplayName() { return "Borders++"; } -void CBordersPlusPlus::draw(PHLMONITOR pMonitor, float const& a, const SP& presentation) { +void CBordersPlusPlus::draw(Render::CRenderContext& ctx, PHLMONITOR pMonitor, float const& a, const SP& presentation) { if (!validMapped(m_pWindow)) return; @@ -79,10 +79,10 @@ void CBordersPlusPlus::draw(PHLMONITOR pMonitor, float const& a, const SPm_renderPass.add(makeUnique(data)); + g_pHyprRenderer->addPassElement(ctx, makeUnique(data)); } -void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) { +void CBordersPlusPlus::drawPass(Render::CRenderContext& ctx, PHLMONITOR pMonitor, const float& a) { const auto PWINDOW = m_pWindow.lock(); static auto PROUNDING = CConfigValue("decoration:rounding"); @@ -136,9 +136,9 @@ void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) { if (fullBox.width < 1 || fullBox.height < 1) break; - g_pHyprOpenGL->scissor(nullptr); + g_pHyprOpenGL->scissor(ctx, nullptr); - g_pHyprOpenGL->renderBorder(fullBox, Config::CGradientValueData(CHyprColor{static_cast(vars.borderColors[i]->value())}), + g_pHyprOpenGL->renderBorder(ctx, fullBox, Config::CGradientValueData(CHyprColor{static_cast(vars.borderColors[i]->value())}), CHyprOpenGLImpl::SBorderRenderData{.round = NATURALROUND ? sc(ORIGINALROUND) : sc(rounding), .roundingPower = ROUNDINGPOWER, .borderSize = THISBORDERSIZE, diff --git a/borders-plus-plus/borderDeco.hpp b/borders-plus-plus/borderDeco.hpp index c5d2ea13..35cd9620 100644 --- a/borders-plus-plus/borderDeco.hpp +++ b/borders-plus-plus/borderDeco.hpp @@ -13,7 +13,7 @@ class CBordersPlusPlus : public IHyprWindowDecoration { virtual void onPositioningReply(const SDecorationPositioningReply& reply); - virtual void draw(PHLMONITOR pMonitor, float const& a, const SP& presentation) override; + virtual void draw(Render::CRenderContext& ctx, PHLMONITOR pMonitor, float const& a, const SP& presentation) override; virtual eDecorationType getDecorationType(); @@ -28,7 +28,7 @@ class CBordersPlusPlus : public IHyprWindowDecoration { virtual std::string getDisplayName(); private: - void drawPass(PHLMONITOR, float const& a); + void drawPass(Render::CRenderContext& ctx, PHLMONITOR, float const& a); SBoxExtents m_seExtents; diff --git a/borders-plus-plus/main.cpp b/borders-plus-plus/main.cpp index f0246692..9f176287 100644 --- a/borders-plus-plus/main.cpp +++ b/borders-plus-plus/main.cpp @@ -78,5 +78,5 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { } APICALL EXPORT void PLUGIN_EXIT() { - g_pHyprRenderer->m_renderPass.removeAllOfType("CBorderPPPassElement"); + g_pHyprRenderer->context().m_pass.removeAllOfType("CBorderPPPassElement"); } diff --git a/hyprbars/BarPassElement.cpp b/hyprbars/BarPassElement.cpp index 2f107317..8871609a 100644 --- a/hyprbars/BarPassElement.cpp +++ b/hyprbars/BarPassElement.cpp @@ -9,12 +9,12 @@ CBarPassElement::CBarPassElement(const CBarPassElement::SBarData& data_) : data( ; } -std::vector> CBarPassElement::draw() { - data.deco->renderPass(g_pHyprRenderer->m_renderData.pMonitor.lock(), data.a); +std::vector> CBarPassElement::draw(Render::CRenderContext& ctx) { + data.deco->renderPass(ctx, ctx.m_data.pMonitor.lock(), data.a); return {}; } -bool CBarPassElement::needsLiveBlur() { +bool CBarPassElement::needsLiveBlur(Render::CRenderContext&) { static auto PENABLEBLURGLOBAL = CConfigValue("decoration:blur:enabled"); CHyprColor color = data.deco->m_bForcedBarColor.value_or(CHyprColor{static_cast(g_pGlobalState->config.barColor->value())}); @@ -24,11 +24,11 @@ bool CBarPassElement::needsLiveBlur() { return SHOULDBLUR; } -std::optional CBarPassElement::boundingBox() { +std::optional CBarPassElement::boundingBox(Render::CRenderContext& ctx) { // Temporary fix: expand the bar bb a bit, otherwise occlusion gets too aggressive. - return data.deco->assignedBoxGlobal().translate(-g_pHyprRenderer->m_renderData.pMonitor->m_position).expand(10); + return data.deco->assignedBoxGlobal().translate(-ctx.m_data.pMonitor->m_position).expand(10); } -bool CBarPassElement::needsPrecomputeBlur() { +bool CBarPassElement::needsPrecomputeBlur(Render::CRenderContext&) { return false; } diff --git a/hyprbars/BarPassElement.hpp b/hyprbars/BarPassElement.hpp index 630fd9ee..8e9cfcb0 100644 --- a/hyprbars/BarPassElement.hpp +++ b/hyprbars/BarPassElement.hpp @@ -13,10 +13,10 @@ class CBarPassElement : public IPassElement { CBarPassElement(const SBarData& data_); virtual ~CBarPassElement() = default; - virtual std::vector> draw() override; - virtual bool needsLiveBlur() override; - virtual bool needsPrecomputeBlur() override; - virtual std::optional boundingBox() override; + virtual std::vector> draw(Render::CRenderContext& ctx) override; + virtual bool needsLiveBlur(Render::CRenderContext&) override; + virtual bool needsPrecomputeBlur(Render::CRenderContext&) override; + virtual std::optional boundingBox(Render::CRenderContext& ctx) override; virtual const char* passName() override { return "CBarPassElement"; @@ -28,4 +28,4 @@ class CBarPassElement : public IPassElement { private: SBarData data; -}; \ No newline at end of file +}; diff --git a/hyprbars/barDeco.cpp b/hyprbars/barDeco.cpp index c93d7ca4..d9914e92 100644 --- a/hyprbars/barDeco.cpp +++ b/hyprbars/barDeco.cpp @@ -354,7 +354,7 @@ size_t CHyprBar::getVisibleButtonCount(Config::INTEGER barButtonPadding, Config: return count; } -void CHyprBar::renderBarButtons(CBox* barBox, const float scale, const float a) { +void CHyprBar::renderBarButtons(Render::CRenderContext& ctx, CBox* barBox, const float scale, const float a) { if (g_pGlobalState->config.buttonsOnHover->value() && !m_bBarHovered) return; @@ -387,13 +387,13 @@ void CHyprBar::renderBarButtons(CBox* barBox, const float scale, const float a) scaledButtonSize}; buttonBox.round(); - g_pHyprOpenGL->renderRect(buttonBox, color, {.round = sc(std::round(scaledButtonSize / 2.0)), .roundingPower = 2.F}); + g_pHyprOpenGL->renderRect(ctx, buttonBox, color, {.round = sc(std::round(scaledButtonSize / 2.0)), .roundingPower = 2.F}); offset += scaledButtonsPad + scaledButtonSize; } } -void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float a) { +void CHyprBar::renderBarButtonsText(Render::CRenderContext& ctx, CBox* barBox, const float scale, const float a) { if (g_pGlobalState->config.buttonsOnHover->value() && !m_bBarHovered) return; @@ -441,7 +441,7 @@ void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float pos.round(); // snap to whole pixels, otherwise the icon is sampled at a half-pixel offset and blurs if (!ICONONHOVER || (ICONONHOVER && m_iButtonHoverState > 0)) - g_pHyprOpenGL->renderTexture(button.iconTex, pos, {.a = a}); + g_pHyprOpenGL->renderTexture(ctx, button.iconTex, pos, {.a = a}); offset += scaledButtonsPad + scaledButtonSize; bool currentBit = (m_iButtonHoverState & (1 << i)) != 0; @@ -453,7 +453,7 @@ void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float } } -void CHyprBar::draw(PHLMONITOR monitor, const float& a, const SP& presentation) { +void CHyprBar::draw(Render::CRenderContext& ctx, PHLMONITOR monitor, const float& a, const SP& presentation) { const auto ENABLED = g_pGlobalState->config.enabled->value(); if (m_bLastEnabledState != ENABLED) { @@ -470,10 +470,10 @@ void CHyprBar::draw(PHLMONITOR monitor, const float& a, const SPm_renderPass.add(makeUnique(data)); + Render::IHyprRenderer::addPassElement(ctx, makeUnique(data)); } -void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) { +void CHyprBar::renderPass(Render::CRenderContext& ctx, PHLMONITOR pMonitor, const float& a) { const auto PWINDOW = m_pWindow.lock(); static auto PENABLEBLURGLOBAL = CConfigValue("decoration:blur:enabled"); @@ -529,7 +529,7 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) { if (titleBarBox.w < 1 || titleBarBox.h < 1) return; - g_pHyprOpenGL->scissor(titleBarBox); + g_pHyprOpenGL->scissor(ctx, titleBarBox); if (ROUNDING) { // the +1 is a shit garbage temp fix until renderRect supports an alpha matte @@ -551,7 +551,7 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) { glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); windowBox.translate(WORKSPACEOFFSET).scale(pMonitor->m_scale).round(); - g_pHyprOpenGL->renderRect(windowBox, CHyprColor(0, 0, 0, 0), + g_pHyprOpenGL->renderRect(ctx, windowBox, CHyprColor(0, 0, 0, 0), CHyprOpenGLImpl::SRectRenderData{.round = sc(scaledRounding), .roundingPower = m_pWindow->presentation().roundingPower()}); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); @@ -561,10 +561,10 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) { if (SHOULDBLUR) g_pHyprOpenGL->renderRect( - titleBarBox, color, + ctx, titleBarBox, color, CHyprOpenGLImpl::SRectRenderData{.round = sc(scaledRounding), .roundingPower = m_pWindow->presentation().roundingPower(), .blur = true, .blurA = a}); else - g_pHyprOpenGL->renderRect(titleBarBox, color, + g_pHyprOpenGL->renderRect(ctx, titleBarBox, color, CHyprOpenGLImpl::SRectRenderData{.round = sc(scaledRounding), .roundingPower = m_pWindow->presentation().roundingPower()}); // render title @@ -605,15 +605,15 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) { const auto yOffset = std::round((BARBUF.y - m_pTextTex->m_size.y) / 2.0); CBox titleBox = {textBox.x + xOffset, textBox.y + yOffset, m_pTextTex->m_size.x, m_pTextTex->m_size.y}; - g_pHyprOpenGL->renderTexture(m_pTextTex, titleBox, {.a = a}); + g_pHyprOpenGL->renderTexture(ctx, m_pTextTex, titleBox, {.a = a}); } - renderBarButtons(&textBox, pMonitor->m_scale, a); + renderBarButtons(ctx, &textBox, pMonitor->m_scale, a); m_bButtonsDirty = false; - g_pHyprOpenGL->scissor(nullptr); + g_pHyprOpenGL->scissor(ctx, nullptr); - renderBarButtonsText(&textBox, pMonitor->m_scale, a); + renderBarButtonsText(ctx, &textBox, pMonitor->m_scale, a); m_bWindowSizeChanged = false; m_bTitleColorChanged = false; diff --git a/hyprbars/barDeco.hpp b/hyprbars/barDeco.hpp index 8bdf9133..e74333db 100644 --- a/hyprbars/barDeco.hpp +++ b/hyprbars/barDeco.hpp @@ -30,7 +30,7 @@ class CHyprBar : public IHyprWindowDecoration { virtual void onPositioningReply(const SDecorationPositioningReply& reply); - virtual void draw(PHLMONITOR monitor, const float& a, const SP& presentation); + virtual void draw(Render::CRenderContext& ctx, PHLMONITOR monitor, const float& a, const SP& presentation); virtual eDecorationType getDecorationType(); @@ -78,10 +78,10 @@ class CHyprBar : public IHyprWindowDecoration { Vector2D cursorRelativeToBar(); - void renderPass(PHLMONITOR, float const& a); + void renderPass(Render::CRenderContext& ctx, PHLMONITOR, float const& a); void renderBarTitle(const Vector2D& bufferSize, const float scale); - void renderBarButtons(CBox* barBox, const float scale, const float a); - void renderBarButtonsText(CBox* barBox, const float scale, const float a); + void renderBarButtons(Render::CRenderContext& ctx, CBox* barBox, const float scale, const float a); + void renderBarButtonsText(Render::CRenderContext& ctx, CBox* barBox, const float scale, const float a); void damageOnButtonHover(); bool inputIsValid(); diff --git a/hyprbars/main.cpp b/hyprbars/main.cpp index 2fec52e8..df0409a8 100644 --- a/hyprbars/main.cpp +++ b/hyprbars/main.cpp @@ -226,7 +226,7 @@ APICALL EXPORT void PLUGIN_EXIT() { for (auto& m : State::monitorState()->monitors()) m->m_scheduledRecalc = true; - g_pHyprRenderer->m_renderPass.removeAllOfType("CBarPassElement"); + g_pHyprRenderer->context().m_pass.removeAllOfType("CBarPassElement"); Desktop::Rule::windowEffects()->unregisterEffect(g_pGlobalState->barColorRuleIdx); Desktop::Rule::windowEffects()->unregisterEffect(g_pGlobalState->titleColorRuleIdx);