From f223b6d2a755021e676e8b5002582574bc9e9bcc Mon Sep 17 00:00:00 2001 From: K's Thinkpad Date: Fri, 12 Jul 2024 14:19:53 +0200 Subject: [PATCH] added tests for alpha in oklch longer --- .../src/cases/gradient_oklch_alpha.rs | 51 +++++++++++++++++++ niri-visual-tests/src/cases/mod.rs | 1 + niri-visual-tests/src/main.rs | 2 + 3 files changed, 54 insertions(+) create mode 100644 niri-visual-tests/src/cases/gradient_oklch_alpha.rs diff --git a/niri-visual-tests/src/cases/gradient_oklch_alpha.rs b/niri-visual-tests/src/cases/gradient_oklch_alpha.rs new file mode 100644 index 0000000..6d518e6 --- /dev/null +++ b/niri-visual-tests/src/cases/gradient_oklch_alpha.rs @@ -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) -> 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, + ) -> Vec>> { + 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() + } +} diff --git a/niri-visual-tests/src/cases/mod.rs b/niri-visual-tests/src/cases/mod.rs index 27fba10..4b01e33 100644 --- a/niri-visual-tests/src/cases/mod.rs +++ b/niri-visual-tests/src/cases/mod.rs @@ -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; diff --git a/niri-visual-tests/src/main.rs b/niri-visual-tests/src/main.rs index 5aca63f..89358b8 100644 --- a/niri-visual-tests/src/main.rs +++ b/niri-visual-tests/src/main.rs @@ -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();