feather_ui/render/domain/
mod.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2025 Fundament Research Institute <https://fundament.institute>
3
4use super::Renderable;
5use crate::{CrossReferenceDomain, PxRect, SourceID};
6use std::rc::Rc;
7use std::sync::Arc;
8
9pub mod line;
10
11pub struct Write {
12    pub(crate) id: std::sync::Weak<SourceID>,
13    pub(crate) domain: Arc<CrossReferenceDomain>,
14    pub(crate) base: Option<Rc<dyn Renderable>>,
15}
16
17impl Renderable for Write {
18    fn render(
19        &self,
20        area: PxRect,
21        driver: &crate::graphics::Driver,
22        compositor: &mut crate::render::CompositorView<'_>,
23    ) -> Result<(), crate::Error> {
24        if let Some(idref) = self.id.upgrade() {
25            self.domain.write_area(idref, area);
26        }
27
28        self.base
29            .as_ref()
30            .map(|x| x.render(area, driver, compositor))
31            .unwrap_or(Ok(()))
32    }
33}