diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/layout/tile.rs | 4 | ||||
| -rw-r--r-- | src/niri.rs | 3 | ||||
| -rw-r--r-- | src/render_helpers/mod.rs | 4 | ||||
| -rw-r--r-- | src/render_helpers/solid_color.rs | 33 | ||||
| -rw-r--r-- | src/window/mapped.rs | 4 |
5 files changed, 23 insertions, 25 deletions
diff --git a/src/layout/tile.rs b/src/layout/tile.rs index 167ff2c6..a701e96f 100644 --- a/src/layout/tile.rs +++ b/src/layout/tile.rs @@ -758,8 +758,8 @@ impl<W: LayoutElement> Tile<W> { geo.size, Rectangle::from_loc_and_size((0., 0.), geo.size), GradientInterpolation::default(), - Color::from_array_premul(elem.color()), - Color::from_array_premul(elem.color()), + Color::from_color32f(elem.color()), + Color::from_color32f(elem.color()), 0., Rectangle::from_loc_and_size((0., 0.), geo.size), 0., diff --git a/src/niri.rs b/src/niri.rs index 7a79c0f4..33ca7d6d 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -32,7 +32,7 @@ use smithay::backend::renderer::element::{ }; use smithay::backend::renderer::gles::GlesRenderer; use smithay::backend::renderer::sync::SyncPoint; -use smithay::backend::renderer::Unbind; +use smithay::backend::renderer::{Color32F, Unbind}; use smithay::desktop::utils::{ bbox_from_surface_tree, output_update, send_dmabuf_feedback_surface_tree, send_frames_surface_tree, surface_presentation_feedback_flags_from_states, @@ -1137,6 +1137,7 @@ impl State { .unwrap_or(DEFAULT_BACKGROUND_COLOR) .to_array_unpremul(); background_color[3] = 1.; + let background_color = Color32F::from(background_color); if let Some(state) = self.niri.output_state.get_mut(output) { if state.background_buffer.color() != background_color { diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs index f69eec05..1af6aeab 100644 --- a/src/render_helpers/mod.rs +++ b/src/render_helpers/mod.rs @@ -8,7 +8,7 @@ use smithay::backend::renderer::element::utils::{Relocate, RelocateRenderElement use smithay::backend::renderer::element::{Kind, RenderElement}; use smithay::backend::renderer::gles::{GlesMapping, GlesRenderer, GlesTexture}; use smithay::backend::renderer::sync::SyncPoint; -use smithay::backend::renderer::{Bind, ExportMem, Frame, Offscreen, Renderer}; +use smithay::backend::renderer::{Bind, Color32F, ExportMem, Frame, Offscreen, Renderer}; use smithay::reexports::wayland_server::protocol::wl_buffer::WlBuffer; use smithay::reexports::wayland_server::protocol::wl_shm; use smithay::utils::{Logical, Physical, Point, Rectangle, Scale, Size, Transform}; @@ -302,7 +302,7 @@ fn render_elements( .context("error starting frame")?; frame - .clear([0., 0., 0., 0.], &[output_rect]) + .clear(Color32F::TRANSPARENT, &[output_rect]) .context("error clearing")?; for element in elements { diff --git a/src/render_helpers/solid_color.rs b/src/render_helpers/solid_color.rs index 5ce29f47..cdda19c8 100644 --- a/src/render_helpers/solid_color.rs +++ b/src/render_helpers/solid_color.rs @@ -1,6 +1,6 @@ use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage}; use smithay::backend::renderer::utils::{CommitCounter, OpaqueRegions}; -use smithay::backend::renderer::{Frame as _, Renderer}; +use smithay::backend::renderer::{Color32F, Frame as _, Renderer}; use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size}; /// Smithay's solid color buffer, but with fractional scale. @@ -9,7 +9,7 @@ pub struct SolidColorBuffer { id: Id, size: Size<f64, Logical>, commit: CommitCounter, - color: [f32; 4], + color: Color32F, } /// Render element for a [`SolidColorBuffer`]. @@ -18,7 +18,7 @@ pub struct SolidColorRenderElement { id: Id, geometry: Rectangle<f64, Logical>, commit: CommitCounter, - color: [f32; 4], + color: Color32F, kind: Kind, } @@ -34,10 +34,10 @@ impl Default for SolidColorBuffer { } impl SolidColorBuffer { - pub fn new(size: impl Into<Size<f64, Logical>>, color: [f32; 4]) -> Self { + pub fn new(size: impl Into<Size<f64, Logical>>, color: impl Into<Color32F>) -> Self { SolidColorBuffer { id: Id::new(), - color, + color: color.into(), commit: CommitCounter::default(), size: size.into(), } @@ -51,15 +51,17 @@ impl SolidColorBuffer { } } - pub fn set_color(&mut self, color: [f32; 4]) { + pub fn set_color(&mut self, color: impl Into<Color32F>) { + let color = color.into(); if color != self.color { self.color = color; self.commit.increment(); } } - pub fn update(&mut self, size: impl Into<Size<f64, Logical>>, color: [f32; 4]) { + pub fn update(&mut self, size: impl Into<Size<f64, Logical>>, color: impl Into<Color32F>) { let size = size.into(); + let color = color.into(); if size != self.size || color != self.color { self.size = size; self.color = color; @@ -67,7 +69,7 @@ impl SolidColorBuffer { } } - pub fn color(&self) -> [f32; 4] { + pub fn color(&self) -> Color32F { self.color } @@ -84,12 +86,7 @@ impl SolidColorRenderElement { kind: Kind, ) -> Self { let geo = Rectangle::from_loc_and_size(location, buffer.size()); - let color = [ - buffer.color[0] * alpha, - buffer.color[1] * alpha, - buffer.color[2] * alpha, - buffer.color[3] * alpha, - ]; + let color = buffer.color * alpha; Self::new(buffer.id.clone(), geo, buffer.commit, color, kind) } @@ -97,7 +94,7 @@ impl SolidColorRenderElement { id: Id, geometry: Rectangle<f64, Logical>, commit: CommitCounter, - color: [f32; 4], + color: Color32F, kind: Kind, ) -> Self { SolidColorRenderElement { @@ -109,7 +106,7 @@ impl SolidColorRenderElement { } } - pub fn color(&self) -> [f32; 4] { + pub fn color(&self) -> Color32F { self.color } @@ -136,7 +133,7 @@ impl Element for SolidColorRenderElement { } fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> { - if self.color[3] == 1f32 { + if self.color.is_opaque() { let rect = Rectangle::from_loc_and_size((0., 0.), self.geometry.size) .to_physical_precise_down(scale); OpaqueRegions::from_slice(&[rect]) @@ -146,7 +143,7 @@ impl Element for SolidColorRenderElement { } fn alpha(&self) -> f32 { - self.color[3] + self.color.a() } fn kind(&self) -> Kind { diff --git a/src/window/mapped.rs b/src/window/mapped.rs index 9963d7b6..727473b9 100644 --- a/src/window/mapped.rs +++ b/src/window/mapped.rs @@ -290,8 +290,8 @@ impl Mapped { geo.size, Rectangle::from_loc_and_size((0., 0.), geo.size), GradientInterpolation::default(), - Color::from_array_premul(elem.color()), - Color::from_array_premul(elem.color()), + Color::from_color32f(elem.color()), + Color::from_color32f(elem.color()), 0., Rectangle::from_loc_and_size((0., 0.), geo.size), 0., |
