too/views/
background.rs

1use crate::{
2    renderer::Rgba,
3    view::{Builder, Render, View},
4};
5
6#[derive(Copy, Clone)]
7#[must_use = "a view does nothing unless `show()` or `show_children()` is called"]
8pub struct Background {
9    bg: Rgba,
10}
11
12impl std::fmt::Debug for Background {
13    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14        self.bg.fmt(f)
15    }
16}
17
18impl Background {
19    pub fn new(bg: impl Into<Rgba>) -> Self {
20        Self { bg: bg.into() }
21    }
22}
23
24impl<'v> Builder<'v> for Background {
25    type View = Self;
26}
27
28impl View for Background {
29    type Args<'v> = Self;
30    type Response = ();
31
32    fn create(args: Self::Args<'_>) -> Self {
33        args
34    }
35
36    fn draw(&mut self, mut render: Render) {
37        render.fill_bg(self.bg);
38        self.default_draw(render);
39    }
40}