use crate::widgets::SlideThumbnail;
use dais_document::page::RenderedPage;
pub struct AudienceDisplay {
thumbnail: SlideThumbnail,
last_image_rect: egui::Rect,
}
impl AudienceDisplay {
pub fn new() -> Self {
Self { thumbnail: SlideThumbnail::new(), last_image_rect: egui::Rect::NOTHING }
}
pub fn update(&mut self, ctx: &egui::Context, page: &RenderedPage, page_index: usize) {
self.thumbnail.update(ctx, page, page_index);
}
pub fn show(
&mut self,
ui: &mut egui::Ui,
zoom_region: Option<((f32, f32), f32)>,
) -> egui::Rect {
let available = ui.available_size();
let response = if let Some((center, factor)) = zoom_region {
self.thumbnail.show_zoomed(ui, available, center, factor)
} else {
self.thumbnail.show(ui, available)
};
self.last_image_rect = response.rect;
self.last_image_rect
}
pub fn image_rect(&self) -> egui::Rect {
self.last_image_rect
}
}
impl Default for AudienceDisplay {
fn default() -> Self {
Self::new()
}
}