render/shadow: Adjust alpha by light/dark mode
This commit is contained in:
parent
1e0c4f9b05
commit
d1fb9087b2
3 changed files with 8 additions and 5 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue