summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-16 12:44:45 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-16 12:44:45 +0200
commit48e5bd96bc71f94f774eb92b00ef560b2f911c73 (patch)
tree3d703572b5c7b68068c712f90ed10238846dd714 /src/render
parentb2650928eac06e3181ad07efe6ec55b2550f89b8 (diff)
Added shadow colors animations and inactive col
Diffstat (limited to 'src/render')
-rw-r--r--src/render/OpenGL.cpp4
-rw-r--r--src/render/Renderer.cpp7
-rw-r--r--src/render/Renderer.hpp1
3 files changed, 10 insertions, 2 deletions
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*);