Can now change the layout for any slide.

master
Zed A. Shaw 3 days ago
parent ba911f8703
commit 142aa235a4
  1. 26
      assets/layouts.json
  2. 3
      sample/about-bezos.md
  3. 7
      src/main.cpp
  4. 9
      src/slides_ui.cpp

@ -1,18 +1,28 @@
{ {
"default_ui": [ "default_ui": [
"[t_left|t_center|t_right]", "[t_left|t_center|t_right]",
"[*%(300,500)slide|_|_|*%(200,500)alternate|_]", "[*%(100,600)slide]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_]", "[_]",
"[title|*%(200,100)description|_|_|_]" "[_]",
"[_]",
"[_]",
"[_]",
"[=title|=*%(200,100)description|_|_|_]"
], ],
"default_slide": [ "default_slide": [
"[=*%(300,200)title|_|_]", "[=*%(300,200)title|_|_|_|_]",
"[_|_|_]",
"[*%(300,600)content|_|_|*%(200,600)alt|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]"
],
"centered": [
"[=*%(300,200)title|_|_|_|_]",
"[_|_|_]", "[_|_|_]",
"[*%(300,600)content|_|_]", "[=*%(300,600)content]",
"[_|_|_]", "[_|_|_]",
"[_|_|_]", "[_|_|_]",
"[_|_|_]", "[_|_|_]",

@ -54,7 +54,8 @@ Bare content like this
--- ---
{ {
"font_size": 120, "font_size": 120,
"font_centered": true "font_centered": true,
"layout": "centered"
} }
One Word One Word
--- ---

@ -36,7 +36,7 @@ struct ChangeDetector {
sf::Clock timer{}; sf::Clock timer{};
std::filesystem::file_time_type last_mod_time = std::filesystem::last_write_time(input_md); std::filesystem::file_time_type last_mod_time = std::filesystem::last_write_time(input_md);
bool check_changed() { bool changed() {
if(timer.getElapsedTime().toDuration() > 500ms) { if(timer.getElapsedTime().toDuration() > 500ms) {
try { try {
auto mod_time = std::filesystem::last_write_time(input_md); auto mod_time = std::filesystem::last_write_time(input_md);
@ -89,7 +89,8 @@ int main(int argc, char *argv[]) {
dbc::check(control_ui.$status != nullptr, "bad ptr"); dbc::check(control_ui.$status != nullptr, "bad ptr");
ChangeDetector reloader{argv[1]}; ChangeDetector slides_reloader{argv[1]};
ChangeDetector layout_reloader{slides.$deck->config["layouts"]};
while(controller.isOpen()) { while(controller.isOpen()) {
while (const auto event = presenter.pollEvent()) { while (const auto event = presenter.pollEvent()) {
@ -106,7 +107,7 @@ int main(int argc, char *argv[]) {
presenter.display(); presenter.display();
controller.display(); controller.display();
if(reloader.check_changed()) { if(slides_reloader.changed() || layout_reloader.changed()) {
auto new_slides = load_slides(argv[1], backend); auto new_slides = load_slides(argv[1], backend);
if(new_slides) { if(new_slides) {

@ -153,11 +153,18 @@ void SlidesUI::show_slide() {
color = {color_conf[0], color_conf[1], color_conf[2], color_conf[3]}; color = {color_conf[0], color_conf[1], color_conf[2], color_conf[3]};
} }
std::string layout_name{"default_slide"};
if(slide.$config.contains("layout")) {
layout_name = slide.$config["layout"];
}
auto& layout = $layouts[layout_name];
bg.set_color(color); bg.set_color(color);
bg.init(); bg.init();
auto& cell = $gui.cell_for("slide"); auto& cell = $gui.cell_for("slide");
auto& layout = $layouts["default_slide"];
slide.init(cell, layout); slide.init(cell, layout);
} }

Loading…
Cancel
Save