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}