render/shadow: Adjust alpha by light/dark mode

This commit is contained in:
Victoria Brekenfeld 2025-12-16 19:16:32 +01:00 committed by Victoria Brekenfeld
parent 1e0c4f9b05
commit d1fb9087b2
3 changed files with 8 additions and 5 deletions

View file

@ -26,6 +26,7 @@ pub struct ShadowParameters {
scale: f64, scale: f64,
alpha: f32, alpha: f32,
radius: [u8; 4], radius: [u8; 4],
dark_mode: bool,
} }
type ShadowCache = RefCell<HashMap<CosmicMappedKey, (ShadowParameters, PixelShaderElement)>>; type ShadowCache = RefCell<HashMap<CosmicMappedKey, (ShadowParameters, PixelShaderElement)>>;
@ -47,12 +48,14 @@ impl ShadowShader {
radius: [u8; 4], radius: [u8; 4],
alpha: f32, alpha: f32,
scale: f64, scale: f64,
dark_mode: bool,
) -> PixelShaderElement { ) -> PixelShaderElement {
let params = ShadowParameters { let params = ShadowParameters {
geo, geo,
scale, scale,
alpha, alpha,
radius, radius,
dark_mode,
}; };
let ceil = |logical: f64| (logical * scale).ceil() / scale; let ceil = |logical: f64| (logical * scale).ceil() / scale;
@ -81,7 +84,7 @@ impl ShadowShader {
let softness = 25.; let softness = 25.;
let spread = 5.; let spread = 5.;
let offset = [0., 5.]; let offset = [0., 5.];
let color = [0., 0., 0., 0.35]; let color = [0., 0., 0., if dark_mode { 0.45 } else { 0.35 }];
let radius = radius.map(|r| ceil(r as f64)); let radius = radius.map(|r| ceil(r as f64));
let radius = [ let radius = [
radius[3], // top_left radius[3], // top_left

View file

@ -711,6 +711,7 @@ impl CosmicStack {
radii, radii,
if activated { alpha } else { alpha * 0.75 }, if activated { alpha } else { alpha * 0.75 },
output_scale.x, output_scale.x,
theme.cosmic().is_dark,
)) ))
.into(), .into(),
) )

View file

@ -372,6 +372,7 @@ impl CosmicWindow {
let is_tiled = p.is_tiled(); let is_tiled = p.is_tiled();
let activated = p.window.is_activated(false); let activated = p.window.is_activated(false);
let appearance = p.appearance_conf.lock().unwrap(); let appearance = p.appearance_conf.lock().unwrap();
let theme = p.theme.lock().unwrap();
if p.window.is_maximized(false) { if p.window.is_maximized(false) {
return None; return None;
@ -388,10 +389,7 @@ impl CosmicWindow {
if !should_draw_shadow { if !should_draw_shadow {
return None; return None;
} }
let mut radii = p let mut radii = theme
.theme
.lock()
.unwrap()
.cosmic() .cosmic()
.radius_s() .radius_s()
.map(|x| if x < 4.0 { x } else { x + 4.0 }) .map(|x| if x < 4.0 { x } else { x + 4.0 })
@ -425,6 +423,7 @@ impl CosmicWindow {
radii, radii,
if activated { alpha } else { alpha * 0.75 }, if activated { alpha } else { alpha * 0.75 },
output_scale.x, output_scale.x,
theme.cosmic().is_dark,
)) ))
.into(), .into(),
) )