Now I can have a config at the top that's loaded.

master
Zed A. Shaw 3 days ago
parent 84dafe2f2e
commit 9fab50277d
  1. 7
      parser.cpp
  2. 12
      slides.cpp
  3. 13
      slides.hpp

@ -10,7 +10,7 @@ using std::shared_ptr, std::string, nlohmann::json;
namespace fs = std::filesystem;
shared_ptr<SlideDeck> parse_slides(const string& md_file) {
shared_ptr<SlideDeck> slides = std::make_shared<SlideDeck>();
shared_ptr<SlideDeck> deck = std::make_shared<SlideDeck>();
dbc::check(fs::exists(md_file), "md file missing");
@ -33,6 +33,7 @@ shared_ptr<SlideDeck> 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<SlideDeck> 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<SlideDeck> parse_slides(const string& md_file) {
}
}
return slides;
return deck;
}

@ -49,10 +49,10 @@ void Slide::render(sf::RenderWindow& window) {
// $gui.debug_layout(window);
}
SlidesUI::SlidesUI(shared_ptr<SlideDeck> slides) {
dbc::check(slides != nullptr, "slides is null");
dbc::check(slides->size() > 0, "slide deck is empy");
$slides = slides;
SlidesUI::SlidesUI(shared_ptr<SlideDeck> 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();
}

@ -19,16 +19,21 @@ struct Slide {
void init(lel::Cell& cell);
void render(sf::RenderWindow& window);
};
}
;
using SlideSet = std::vector<Slide>;
using SlideDeck = std::vector<Slide>;
struct SlideDeck {
nlohmann::json config;
SlideSet slides;
};
struct SlidesUI {
guecs::UI $gui;
std::shared_ptr<SlideDeck> $slides = nullptr;
std::shared_ptr<SlideDeck> $deck = nullptr;
size_t $current = 0;
SlidesUI(std::shared_ptr<SlideDeck> slides);
SlidesUI(std::shared_ptr<SlideDeck> deck);
void init();
Slide& current();

Loading…
Cancel
Save