From 9fab50277de94f3d7395278db5e8ae5d847a9b35 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Sat, 16 Aug 2025 00:15:13 -0400 Subject: [PATCH] Now I can have a config at the top that's loaded. --- parser.cpp | 7 ++++--- slides.cpp | 12 ++++++------ slides.hpp | 13 +++++++++---- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/parser.cpp b/parser.cpp index 088fb86..d526105 100644 --- a/parser.cpp +++ b/parser.cpp @@ -10,7 +10,7 @@ using std::shared_ptr, std::string, nlohmann::json; namespace fs = std::filesystem; shared_ptr parse_slides(const string& md_file) { - shared_ptr slides = std::make_shared(); + shared_ptr deck = std::make_shared(); dbc::check(fs::exists(md_file), "md file missing"); @@ -33,6 +33,7 @@ shared_ptr parse_slides(const string& md_file) { config = json::parse(json_data); std::cout << "JSON: " << config << '\n'; } else if(line == "===") { + deck->config = config; fmt::println("START"); started = true; } else if(line == "---") { @@ -46,7 +47,7 @@ shared_ptr parse_slides(const string& md_file) { content += line + "\n"; } - slides->emplace_back(title, content, config); + deck->slides.emplace_back(title, content, config); config = json::parse("{}"); } else { fmt::println("JUNK: {}", line); @@ -55,5 +56,5 @@ shared_ptr parse_slides(const string& md_file) { } } - return slides; + return deck; } diff --git a/slides.cpp b/slides.cpp index 4b5e76a..d57d891 100644 --- a/slides.cpp +++ b/slides.cpp @@ -49,10 +49,10 @@ void Slide::render(sf::RenderWindow& window) { // $gui.debug_layout(window); } -SlidesUI::SlidesUI(shared_ptr slides) { - dbc::check(slides != nullptr, "slides is null"); - dbc::check(slides->size() > 0, "slide deck is empy"); - $slides = slides; +SlidesUI::SlidesUI(shared_ptr deck) { + dbc::check(deck != nullptr, "deck is null"); + dbc::check(deck->slides.size() > 0, "slide deck is empy"); + $deck = deck; $current = 0; $gui.position(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); @@ -78,11 +78,11 @@ void SlidesUI::init() { } Slide& SlidesUI::current() { - return $slides->at($current); + return $deck->slides.at($current); } void SlidesUI::next_slide() { - if($current < $slides->size() - 1) { + if($current < $deck->slides.size() - 1) { $current++; show_slide(); } diff --git a/slides.hpp b/slides.hpp index be30c8e..64580d8 100644 --- a/slides.hpp +++ b/slides.hpp @@ -19,16 +19,21 @@ struct Slide { void init(lel::Cell& cell); void render(sf::RenderWindow& window); -}; +} +; +using SlideSet = std::vector; -using SlideDeck = std::vector; +struct SlideDeck { + nlohmann::json config; + SlideSet slides; +}; struct SlidesUI { guecs::UI $gui; - std::shared_ptr $slides = nullptr; + std::shared_ptr $deck = nullptr; size_t $current = 0; - SlidesUI(std::shared_ptr slides); + SlidesUI(std::shared_ptr deck); void init(); Slide& current();