Compare commits

..

6 Commits

Author SHA1 Message Date
Kiko
ff20757e7d
Merge a89c800c7f into a5a34934df 2024-07-12 18:32:02 +00:00
Kiko
a89c800c7f
Merge branch 'YaLTeR:main' into main 2024-07-12 18:31:59 +00:00
K's Thinkpad
bb300b6290 fixed the problem with 0 alpha would cause information loss 2024-07-12 20:23:18 +02:00
Tglman
a5a34934df feat: add metadata for generate deb package with cargo deb 2024-07-12 16:58:30 +03:00
K's Thinkpad
f223b6d2a7 added tests for alpha in oklch longer 2024-07-12 14:23:23 +02:00
Kiko
4c80ab922f
Merge branch 'YaLTeR:main' into main 2024-07-12 11:50:06 +00:00
6 changed files with 76 additions and 7 deletions

View File

@ -141,3 +141,14 @@ assets = [
[package.metadata.generate-rpm.requires]
alacritty = "*"
fuzzel = "*"
[package.metadata.deb]
depends = "alacritty, fuzzel"
assets = [
["target/release/niri", "usr/bin/", "755"],
["resources/niri-session", "usr/bin/", "755"],
["resources/niri.desktop", "/usr/share/wayland-sessions/", "644"],
["resources/niri-portals.conf", "/usr/share/xdg-desktop-portal/", "644"],
["resources/niri.service", "/usr/lib/systemd/user/", "644"],
["resources/niri-shutdown.target", "/usr/lib/systemd/user/", "644"],
]

View File

@ -529,7 +529,8 @@ impl Color {
impl From<Color> for [f32; 4] {
fn from(c: Color) -> Self {
let [r, g, b, a] = [c.r, c.g, c.b, c.a].map(|x| x as f32 / 255.);
[r * a, g * a, b * a, a]
//[r * a, g * a, b * a, a]
[r, g, b, a]
}
}
@ -2853,6 +2854,10 @@ mod tests {
to: Color::new(0, 128, 255, 255),
angle: 180,
relative_to: GradientRelativeTo::WorkspaceView,
in_ : GradientInterpolation {
color_space: GradientColorSpace::Srgb,
hue_interpol: HueInterpolation::Shorter,
}
}),
inactive_gradient: None,
},

View File

@ -0,0 +1,51 @@
use niri::render_helpers::border::BorderRenderElement;
use niri_config::{CornerRadius, GradientInterpolation, HueInterpolation, GradientColorSpace};
use smithay::backend::renderer::element::RenderElement;
use smithay::backend::renderer::gles::GlesRenderer;
use smithay::utils::{Logical, Physical, Rectangle, Size};
use super::TestCase;
pub struct GradientOklchAlpha {
gradient_format: GradientInterpolation,
}
impl GradientOklchAlpha {
pub fn new(_size: Size<i32, Logical>) -> Self {
Self {
gradient_format: GradientInterpolation{
color_space: GradientColorSpace::Oklch,
hue_interpol: HueInterpolation::Longer
}
}
}
}
impl TestCase for GradientOklchAlpha {
fn render(
&mut self,
_renderer: &mut GlesRenderer,
size: Size<i32, Physical>,
) -> Vec<Box<dyn RenderElement<GlesRenderer>>> {
let (a, b) = (size.w / 6, size.h / 3);
let size = (size.w - a * 2, size.h - b * 2);
let area = Rectangle::from_loc_and_size((a, b), size).to_f64();
[BorderRenderElement::new(
area.size,
Rectangle::from_loc_and_size((0., 0.), area.size),
self.gradient_format,
[1., 0., 0., 1.],
[0., 1., 0., 0.],
0.,
Rectangle::from_loc_and_size((0., 0.), area.size),
0.,
CornerRadius::default(),
1.,
)
.with_location(area.loc)]
.into_iter()
.map(|elem| Box::new(elem) as _)
.collect()
}
}

View File

@ -13,6 +13,7 @@ pub mod gradient_oklch_shorter;
pub mod gradient_oklch_longer;
pub mod gradient_oklch_increasing;
pub mod gradient_oklch_decreasing;
pub mod gradient_oklch_alpha;
pub mod layout;
pub mod tile;
pub mod window;

View File

@ -5,6 +5,7 @@ use std::env;
use std::sync::atomic::Ordering;
use adw::prelude::{AdwApplicationWindowExt, NavigationPageExt};
use cases::gradient_oklch_alpha::GradientOklchAlpha;
use cases::tile::Tile;
use cases::window::Window;
use gtk::prelude::{
@ -126,6 +127,7 @@ fn build_ui(app: &adw::Application) {
s.add(GradientOklchLonger::new, "Gradient - Oklch Longer");
s.add(GradientOklchIncreasing::new, "Gradient - Oklch Increasing");
s.add(GradientOklchDecreasing::new, "Gradient - Oklch Decreasing");
s.add(GradientOklchAlpha::new, "Gradient - Alpha");
let content_headerbar = adw::HeaderBar::new();

View File

@ -98,16 +98,15 @@ vec3 oklab_to_linear(vec3 color){
vec4 color_mix(vec4 color1, vec4 color2, float color_ratio) {
// srgb
vec4 color_out;
if (colorspace == 0.0) {
return mix(color1, color2, color_ratio);
color_out = mix(color1, color2, color_ratio);
color_out.rgb = color_out.rgb * color_out.a;
return color_out;
}
vec4 color_out;
color1.rgb /= color1.a != 0.0 ? color1.a : 1.0;
color2.rgb /= color2.a != 0.0 ? color2.a : 1.0;
color1.rgb = vec3(
srgb_to_linear(color1.r),
srgb_to_linear(color1.g),