aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/layout/tile.rs4
-rw-r--r--src/niri.rs3
-rw-r--r--src/render_helpers/mod.rs4
-rw-r--r--src/render_helpers/solid_color.rs33
-rw-r--r--src/window/mapped.rs4
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.,