mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-07 21:46:00 +01:00
groupbar: improve gradient handling (#4390)
modified: src/render/decorations/CHyprGroupBarDecoration.cpp
This commit is contained in:
parent
955009655d
commit
2ba2c8aeee
1 changed files with 17 additions and 13 deletions
|
@ -243,7 +243,7 @@ CTitleTex::~CTitleTex() {
|
||||||
tex.destroyTexture();
|
tex.destroyTexture();
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderGradientTo(CTexture& tex, const CColor& grad) {
|
void renderGradientTo(CTexture& tex, CGradientValueData* grad) {
|
||||||
|
|
||||||
if (!g_pCompositor->m_pLastMonitor)
|
if (!g_pCompositor->m_pLastMonitor)
|
||||||
return;
|
return;
|
||||||
|
@ -261,8 +261,12 @@ void renderGradientTo(CTexture& tex, const CColor& grad) {
|
||||||
|
|
||||||
cairo_pattern_t* pattern;
|
cairo_pattern_t* pattern;
|
||||||
pattern = cairo_pattern_create_linear(0, 0, 0, bufferSize.y);
|
pattern = cairo_pattern_create_linear(0, 0, 0, bufferSize.y);
|
||||||
cairo_pattern_add_color_stop_rgba(pattern, 1, grad.r, grad.g, grad.b, grad.a);
|
|
||||||
cairo_pattern_add_color_stop_rgba(pattern, 0, grad.r, grad.g, grad.b, 0);
|
for (unsigned long i = 0; i < grad->m_vColors.size(); i++) {
|
||||||
|
cairo_pattern_add_color_stop_rgba(pattern, 1 - (double)(i + 1) / (grad->m_vColors.size() + 1), grad->m_vColors[i].r, grad->m_vColors[i].g, grad->m_vColors[i].b,
|
||||||
|
grad->m_vColors[i].a);
|
||||||
|
}
|
||||||
|
|
||||||
cairo_rectangle(CAIRO, 0, 0, bufferSize.x, bufferSize.y);
|
cairo_rectangle(CAIRO, 0, 0, bufferSize.x, bufferSize.y);
|
||||||
cairo_set_source(CAIRO, pattern);
|
cairo_set_source(CAIRO, pattern);
|
||||||
cairo_fill(CAIRO);
|
cairo_fill(CAIRO);
|
||||||
|
@ -290,13 +294,13 @@ void renderGradientTo(CTexture& tex, const CColor& grad) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void refreshGroupBarGradients() {
|
void refreshGroupBarGradients() {
|
||||||
static auto* const PGRADIENTS = &g_pConfigManager->getConfigValuePtr("group:groupbar:enabled")->intValue;
|
static auto* const PGRADIENTS = &g_pConfigManager->getConfigValuePtr("group:groupbar:enabled")->intValue;
|
||||||
static auto* const PENABLED = &g_pConfigManager->getConfigValuePtr("group:groupbar:gradients")->intValue;
|
static auto* const PENABLED = &g_pConfigManager->getConfigValuePtr("group:groupbar:gradients")->intValue;
|
||||||
|
|
||||||
static auto* const PGROUPCOLACTIVE = &g_pConfigManager->getConfigValuePtr("group:groupbar:col.active")->data;
|
CGradientValueData* PGROUPCOLACTIVE = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("group:groupbar:col.active")->data.get();
|
||||||
static auto* const PGROUPCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("group:groupbar:col.inactive")->data;
|
CGradientValueData* PGROUPCOLINACTIVE = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("group:groupbar:col.inactive")->data.get();
|
||||||
static auto* const PGROUPCOLACTIVELOCKED = &g_pConfigManager->getConfigValuePtr("group:groupbar:col.locked_active")->data;
|
CGradientValueData* PGROUPCOLACTIVELOCKED = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("group:groupbar:col.locked_active")->data.get();
|
||||||
static auto* const PGROUPCOLINACTIVELOCKED = &g_pConfigManager->getConfigValuePtr("group:groupbar:col.locked_inactive")->data;
|
CGradientValueData* PGROUPCOLINACTIVELOCKED = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("group:groupbar:col.locked_inactive")->data.get();
|
||||||
|
|
||||||
g_pHyprRenderer->makeEGLCurrent();
|
g_pHyprRenderer->makeEGLCurrent();
|
||||||
|
|
||||||
|
@ -310,10 +314,10 @@ void refreshGroupBarGradients() {
|
||||||
if (!*PENABLED || !*PGRADIENTS)
|
if (!*PENABLED || !*PGRADIENTS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
renderGradientTo(m_tGradientActive, ((CGradientValueData*)PGROUPCOLACTIVE->get())->m_vColors[0]);
|
renderGradientTo(m_tGradientActive, PGROUPCOLACTIVE);
|
||||||
renderGradientTo(m_tGradientInactive, ((CGradientValueData*)PGROUPCOLINACTIVE->get())->m_vColors[0]);
|
renderGradientTo(m_tGradientInactive, PGROUPCOLINACTIVE);
|
||||||
renderGradientTo(m_tGradientLockedActive, ((CGradientValueData*)PGROUPCOLACTIVELOCKED->get())->m_vColors[0]);
|
renderGradientTo(m_tGradientLockedActive, PGROUPCOLACTIVELOCKED);
|
||||||
renderGradientTo(m_tGradientLockedInactive, ((CGradientValueData*)PGROUPCOLINACTIVELOCKED->get())->m_vColors[0]);
|
renderGradientTo(m_tGradientLockedInactive, PGROUPCOLINACTIVELOCKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHyprGroupBarDecoration::onBeginWindowDragOnDeco(const Vector2D& pos) {
|
bool CHyprGroupBarDecoration::onBeginWindowDragOnDeco(const Vector2D& pos) {
|
||||||
|
|
Loading…
Reference in a new issue