dais_ui/audience/
display.rs1use crate::widgets::SlideThumbnail;
6use dais_document::page::RenderedPage;
7
8pub struct AudienceDisplay {
10 thumbnail: SlideThumbnail,
11 last_image_rect: egui::Rect,
13}
14
15impl AudienceDisplay {
16 pub fn new() -> Self {
17 Self { thumbnail: SlideThumbnail::new(), last_image_rect: egui::Rect::NOTHING }
18 }
19
20 pub fn update(&mut self, ctx: &egui::Context, page: &RenderedPage, page_index: usize) {
22 self.thumbnail.update(ctx, page, page_index);
23 }
24
25 pub fn show(
28 &mut self,
29 ui: &mut egui::Ui,
30 zoom_region: Option<((f32, f32), f32)>,
31 ) -> egui::Rect {
32 let available = ui.available_size();
33 let response = if let Some((center, factor)) = zoom_region {
34 self.thumbnail.show_zoomed(ui, available, center, factor)
35 } else {
36 self.thumbnail.show(ui, available)
37 };
38 self.last_image_rect = response.rect;
39
40 self.last_image_rect
41 }
42
43 pub fn image_rect(&self) -> egui::Rect {
44 self.last_image_rect
45 }
46}
47
48impl Default for AudienceDisplay {
49 fn default() -> Self {
50 Self::new()
51 }
52}