1use chargrid_core::*;
2
3pub struct Fill<C: Component> {
4 pub component: C,
5 pub background: Rgba32,
6}
7
8impl<C: Component> Component for Fill<C> {
9 type Output = C::Output;
10 type State = C::State;
11 fn render(&self, state: &Self::State, ctx: Ctx, fb: &mut FrameBuffer) {
12 let size = self.component.size(state, ctx);
13 for y in 0..(size.height() as i32) {
14 for x in 0..(size.width() as i32) {
15 let coord = Coord::new(x, y);
16 fb.set_cell_relative_to_ctx(
17 ctx,
18 coord,
19 0,
20 RenderCell {
21 style: Style {
22 background: Some(self.background),
23 ..Default::default()
24 },
25 character: Some(' '),
26 },
27 );
28 }
29 }
30 self.component.render(state, ctx, fb);
31 }
32 fn update(&mut self, state: &mut Self::State, ctx: Ctx, event: Event) -> Self::Output {
33 self.component.update(state, ctx, event)
34 }
35 fn size(&self, state: &Self::State, ctx: Ctx) -> Size {
36 self.component.size(state, ctx)
37 }
38}