From 48e5bd96bc71f94f774eb92b00ef560b2f911c73 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sat, 16 Jul 2022 12:44:45 +0200 Subject: Added shadow colors animations and inactive col --- src/render/OpenGL.cpp | 4 ++-- src/render/Renderer.cpp | 7 +++++++ src/render/Renderer.hpp | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/render') diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index a8c669d7..07e4dfff 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -857,13 +857,13 @@ void CHyprOpenGLImpl::renderSnapshot(SLayerSurface** pLayer) { void CHyprOpenGLImpl::renderRoundedShadow(wlr_box* box, int round, int range, float a) { RASSERT(m_RenderData.pMonitor, "Tried to render shadow without begin()!"); RASSERT((box->width > 0 && box->height > 0), "Tried to render shadow with width/height < 0!"); + RASSERT(m_pCurrentWindow, "Tried to render shadow without a window!"); - static auto *const PSHADOWCOL = &g_pConfigManager->getConfigValuePtr("decoration:col.shadow")->intValue; static auto *const PSHADOWPOWER = &g_pConfigManager->getConfigValuePtr("decoration:shadow_render_power")->intValue; const auto SHADOWPOWER = std::clamp((int)*PSHADOWPOWER, 1, 4); - const auto col = CColor(*PSHADOWCOL); + const auto col = m_pCurrentWindow->m_cRealShadowColor.col(); float matrix[9]; wlr_matrix_project_box(matrix, box, wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform), 0, m_RenderData.pMonitor->output->transform_matrix); // TODO: write own, don't use WLR here diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index f9f7d0e3..e3e67a65 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -693,6 +693,13 @@ void CHyprRenderer::damageBox(const int& x, const int& y, const int& w, const in damageBox(&box); } +void CHyprRenderer::damageRegion(pixman_region32_t* rg) { + PIXMAN_DAMAGE_FOREACH(rg) { + const auto RECT = RECTSARR[i]; + damageBox(RECT.x1, RECT.y1, RECT.x2 - RECT.x1, RECT.y2 - RECT.y1); + } +} + void CHyprRenderer::renderDragIcon(SMonitor* pMonitor, timespec* time) { if (!(g_pInputManager->m_sDrag.dragIcon && g_pInputManager->m_sDrag.iconMapped && g_pInputManager->m_sDrag.dragIcon->surface)) return; diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp index c03c7117..97a0dc70 100644 --- a/src/render/Renderer.hpp +++ b/src/render/Renderer.hpp @@ -33,6 +33,7 @@ public: void damageWindow(CWindow*); void damageBox(wlr_box*); void damageBox(const int& x, const int& y, const int& w, const int& h); + void damageRegion(pixman_region32_t*); void damageMonitor(SMonitor*); bool applyMonitorRule(SMonitor*, SMonitorRule*, bool force = false); bool shouldRenderWindow(CWindow*, SMonitor*); -- cgit v1.2.3