feather_ui/render/
image.rs1use super::compositor::CompositorView;
5use crate::resource::Location;
6
7pub struct Instance {
8 pub image: Box<dyn Location>,
9 pub padding: crate::PxPerimeter,
10 pub dpi: f32,
11 pub resize: bool,
12}
13
14impl super::Renderable for Instance {
15 fn render(
16 &self,
17 area: crate::PxRect,
18 driver: &crate::graphics::Driver,
19 compositor: &mut CompositorView<'_>,
20 ) -> Result<(), crate::Error> {
21 let dim = area.dim() - self.padding.bottomright();
22 if dim.width <= 0.0 || dim.height <= 0.0 {
23 return Ok(());
24 }
25
26 driver.load(
27 self.image.as_ref(),
28 dim.ceil().to_i32(),
29 self.dpi,
30 self.resize,
31 |region| {
32 compositor.append_data(
33 area.topleft() + self.padding.topleft().to_vector(),
34 dim,
35 region.uv.min.to_f32(),
36 region.uv.size().to_f32(),
37 0xFFFFFFFF,
38 0.0,
39 region.index,
40 false,
41 );
42 Ok(())
43 },
44 )
45 }
46}