Skip to content
Snippets Groups Projects
s1_title.rs 1.57 KiB
Newer Older
use crate::egui::Align2;
Finn Bear's avatar
Finn Bear committed
use crate::{ctx_img, img, Margin, Slide};
Finn Bear's avatar
Finn Bear committed
use eframe::egui;
Finn Bear's avatar
Finn Bear committed
use eframe::egui::{Frame, Ui, Vec2, Window};
Finn Bear's avatar
Finn Bear committed

Finn Bear's avatar
Finn Bear committed
/// The first slide in the cartoon.
Finn Bear's avatar
Finn Bear committed
#[derive(Default)]
pub struct Title {
    examples: Vec<egui::TextureHandle>,
}

impl Slide for Title {
    fn show(&mut self, ui: &mut Ui) {
Finn Bear's avatar
Finn Bear committed
        if self.examples.is_empty() {
Finn Bear's avatar
Finn Bear committed
            // For now, these images are somewhat like placeholders.
Finn Bear's avatar
Finn Bear committed
            self.examples = vec![
Finn Bear's avatar
Finn Bear committed
                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"),
Finn Bear's avatar
Finn Bear committed
            ];
        }

Finn Bear's avatar
Finn Bear committed
        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));
                });
        }
Finn Bear's avatar
Finn Bear committed

Finn Bear's avatar
Finn Bear committed
        Window::new("title")
            .title_bar(false)
            .resizable(false)
            .anchor(Align2::CENTER_CENTER, Vec2::ZERO)
Finn Bear's avatar
Finn Bear committed
            .default_width(400.0)
            .frame(Frame::window(ui.style()))
            .show(ui.ctx(), |ui| {
Finn Bear's avatar
Finn Bear committed
                ui.vertical_centered(|ui| {
                    ui.heading("Generative Art");
Finn Bear's avatar
Finn Bear committed
                    ui.label("By: Finn, Matthew, Nathan, Owen");
Finn Bear's avatar
Finn Bear committed
                });
Finn Bear's avatar
Finn Bear committed
            });
Finn Bear's avatar
Finn Bear committed
    }
}