use crate::egui::Align2; use crate::{ctx_img, img, Margin, Slide}; use eframe::egui; use eframe::egui::{Frame, Ui, Vec2, Window}; /// The first slide in the cartoon. #[derive(Default)] pub struct Title { examples: Vec<egui::TextureHandle>, } impl Slide for Title { fn show(&mut self, ui: &mut Ui) { if self.examples.is_empty() { // For now, these images are somewhat like placeholders. self.examples = vec![ ctx_img!(ui.ctx(), "raymarching0.png"), ctx_img!(ui.ctx(), "raymarching1.png"), ctx_img!(ui.ctx(), "atom0.png"), ctx_img!(ui.ctx(), "atom1.png"), ctx_img!(ui.ctx(), "atom2.png"), ]; } for example in &self.examples { Window::new(example.name()) .title_bar(false) .resizable(false) // Reduce margin of example images. .frame(Frame::window(&ui.style()).margin(Margin::same(5.0))) .show(ui.ctx(), |ui| { ui.image(example, Vec2::splat(128.0)); }); } Window::new("title") .title_bar(false) .resizable(false) .anchor(Align2::CENTER_CENTER, Vec2::ZERO) .default_width(400.0) .frame(Frame::window(ui.style())) .show(ui.ctx(), |ui| { ui.vertical_centered(|ui| { ui.heading("Generative Art"); ui.label("By: Finn, Matthew, Nathan, Owen"); }); }); } }