shape_viz_core/layers/
background.rs1use crate::data::ChartData;
4use crate::error::Result;
5use crate::layers::{Layer, LayerStage};
6use crate::renderer::RenderContext;
7use crate::style::ChartStyle;
8use crate::theme::ChartTheme;
9use crate::viewport::Viewport;
10
11#[derive(Debug)]
13pub struct BackgroundLayer {
14 enabled: bool,
15 needs_render: bool,
16}
17
18impl BackgroundLayer {
19 pub fn new() -> Self {
21 Self {
22 enabled: true,
23 needs_render: true,
24 }
25 }
26}
27
28impl Default for BackgroundLayer {
29 fn default() -> Self {
30 Self::new()
31 }
32}
33
34impl Layer for BackgroundLayer {
35 fn name(&self) -> &str {
36 "Background"
37 }
38
39 fn stage(&self) -> LayerStage {
40 LayerStage::ScreenBackground
41 }
42
43 fn update(
44 &mut self,
45 _data: &ChartData,
46 _viewport: &Viewport,
47 _theme: &ChartTheme,
48 _style: &ChartStyle,
49 ) {
50 self.needs_render = true;
52 }
53
54 fn set_enabled(&mut self, enabled: bool) {
55 self.enabled = enabled;
56 self.needs_render = true;
57 }
58
59 fn render(
60 &self,
61 context: &mut RenderContext,
62 _render_pass: &mut wgpu::RenderPass,
63 ) -> Result<()> {
64 if !self.enabled {
65 return Ok(());
66 }
67 let viewport = context.viewport().clone();
68 let theme = context.theme().clone();
69 let rect = viewport.screen_rect;
70 context.draw_rect(rect, theme.colors.chart_background);
71 Ok(())
72 }
73
74 fn needs_render(&self) -> bool {
75 self.needs_render
76 }
77
78 fn z_order(&self) -> i32 {
79 -1000 }
81
82 fn is_enabled(&self) -> bool {
83 self.enabled
84 }
85}