If Amazon used this Bezos wouldn't have banned PowerPoint.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

67 lines
1.5 KiB

#include "app.hpp"
#include <fmt/xchar.h>
#include "parser.hpp"
#include "dbc.hpp"
void App::init() {
presenter.setPosition({0,0});
presenter.setFramerateLimit(FRAME_LIMIT);
presenter.setVerticalSyncEnabled(VSYNC);
slides = load_slides();
dbc::check(slides != nullptr, "ERROR in your .md file");
control_ui = std::make_shared<ControlUI>(presenter, controller, options.port);
control_ui->init();
control_ui->full_screen(false);
reloader.watch(options.deck_file);
reloader.watch(slides->$deck->config["layouts"]);
}
void App::change_slides() {
// save the current slide
auto current_slide = slides->$deck->current;
// load the new one
auto new_slides = load_slides();
if(new_slides) {
new_slides->set_slide(current_slide);
slides = new_slides;
}
}
void App::update() {
if(reloader.changed()) {
change_slides();
}
slides->update(presenter);
control_ui->update(slides);
}
void App::render() {
slides->render(presenter);
control_ui->render(controller, *slides->$deck);
presenter.display();
controller.display();
}
bool App::open() {
return controller.isOpen();
}
std::shared_ptr<SlidesUI> App::load_slides() {
auto deck = parse_slides(options.deck_file, [&](nlohmann::json& config) {
backend.set_font(config["font_file"]);
guecs::init(&backend);
});
fmt::println("FONT FILE: {}", backend.$font_file);
auto slides = std::make_shared<SlidesUI>(deck, options.pres_size);
slides->init();
return slides;
}