|
|
|
|
@ -6,17 +6,23 @@ |
|
|
|
|
#include <nlohmann/json.hpp> |
|
|
|
|
#include "dbc.hpp" |
|
|
|
|
#include <memory> |
|
|
|
|
#include "constants.hpp" |
|
|
|
|
#include "slides_ui.hpp" |
|
|
|
|
|
|
|
|
|
using std::string, std::wstring, std::shared_ptr, std::make_shared; |
|
|
|
|
using nlohmann::json; |
|
|
|
|
|
|
|
|
|
Slide::Slide(const string& title, const string& content, json& config) : |
|
|
|
|
Slide::Slide(const string& title, const string& content, json& config, json& deck_config) : |
|
|
|
|
$title(guecs::to_wstring(title)), |
|
|
|
|
$content(guecs::to_wstring(content)), |
|
|
|
|
$config(config) |
|
|
|
|
{ |
|
|
|
|
// first config the text with any font stuff from the deck
|
|
|
|
|
config_text($title_font, deck_config); |
|
|
|
|
config_text($content_font, deck_config); |
|
|
|
|
|
|
|
|
|
// then config it with the slide's config
|
|
|
|
|
config_text($title_font, $config); |
|
|
|
|
config_text($content_font, $config); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Slide::init(lel::Cell& cell) { |
|
|
|
|
@ -35,17 +41,10 @@ void Slide::init(lel::Cell& cell) { |
|
|
|
|
"[_|_|_]"); |
|
|
|
|
|
|
|
|
|
auto title = $gui.entity("title"); |
|
|
|
|
guecs::Text title_text{$title, TITLE_SIZE}; |
|
|
|
|
config_text(title_text); |
|
|
|
|
$gui.set<guecs::Text>(title, title_text); |
|
|
|
|
$gui.set<guecs::Text>(title, $title_font); |
|
|
|
|
|
|
|
|
|
auto content = $gui.entity("content"); |
|
|
|
|
guecs::Text content_text{ |
|
|
|
|
$content, |
|
|
|
|
CONTENT_SIZE, |
|
|
|
|
guecs::THEME.TEXT_COLOR, 20}; |
|
|
|
|
config_text(content_text); |
|
|
|
|
$gui.set<guecs::Text>(content, content_text); |
|
|
|
|
$gui.set<guecs::Text>(content, $content_font); |
|
|
|
|
|
|
|
|
|
if($config.contains("image")) { |
|
|
|
|
$gui.set<guecs::Sprite>(content, {$config["image"]}); |
|
|
|
|
@ -55,11 +54,11 @@ void Slide::init(lel::Cell& cell) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Slide::config_text(guecs::Text &result) { |
|
|
|
|
if($config.contains("font_size")) result.size = $config["font_size"]; |
|
|
|
|
void Slide::config_text(guecs::Text &result, nlohmann::json& config) { |
|
|
|
|
if(config.contains("font_size")) result.size = config["font_size"]; |
|
|
|
|
|
|
|
|
|
if($config.contains("font_color")) { |
|
|
|
|
std::vector<uint8_t> color = $config["font_color"]; |
|
|
|
|
if(config.contains("font_color")) { |
|
|
|
|
std::vector<uint8_t> color = config["font_color"]; |
|
|
|
|
|
|
|
|
|
dbc::check(color.size() == 4, "font_color on slide must have 4 values rgba"); |
|
|
|
|
|
|
|
|
|
@ -68,9 +67,9 @@ void Slide::config_text(guecs::Text &result) { |
|
|
|
|
color[0], color[1], color[2], color[3]}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if($config.contains("font_padding")) result.padding = $config["font_padding"]; |
|
|
|
|
if(config.contains("font_padding")) result.padding = config["font_padding"]; |
|
|
|
|
|
|
|
|
|
if($config.contains("font_centered")) result.centered = $config["font_centered"]; |
|
|
|
|
if(config.contains("font_centered")) result.centered = config["font_centered"]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Slide::render(sf::RenderWindow& window) { |
|
|
|
|
@ -159,6 +158,9 @@ void SlidesUI::show_slide() { |
|
|
|
|
if(slide.$config.contains("bg_color")) { |
|
|
|
|
auto color_conf = slide.$config["bg_color"]; |
|
|
|
|
color = {color_conf[0], color_conf[1], color_conf[2], color_conf[3]}; |
|
|
|
|
} else if($deck->config.contains("bg_color")) { |
|
|
|
|
auto color_conf = $deck->config["bg_color"]; |
|
|
|
|
color = {color_conf[0], color_conf[1], color_conf[2], color_conf[3]}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bg.set_color(color); |
|
|
|
|
|