feather_ui/render/domain/
mod.rs1use 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}