diff --git a/Makefile b/Makefile index 3d31304..887035c 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ FLAGS = -pipe CFLAGS = -Wall CFLAGS += -Ofast CFLAGS += -std=c++17 -#CFLAGS += -g +CFLAGS += -g #CFLAGS += -pg #required for rss-cli @@ -34,9 +34,9 @@ TARGET = dashboard.out MAKEFLAGS += --jobs=4 -DEFINITIONS = -DDATA='"$(DATA)"' -DEFINITIONS += -DDATA_IMG='"$(DATA_IMG)"' -DEFINITIONS += -DDATA_FONT='"$(DATA_FONT)"' +DEFINITIONS = -DDATA_='"$(DATA)"' +DEFINITIONS += -DDATA_IMG_='"$(DATA_IMG)"' +DEFINITIONS += -DDATA_FONT_='"$(DATA_FONT)"' all : $(OBJ) @echo LD $@ diff --git a/src/board.cpp b/src/board.cpp index 7c19d0a..c810e01 100644 --- a/src/board.cpp +++ b/src/board.cpp @@ -255,6 +255,10 @@ board::~board(){ SDL_Quit(); } +/////////////////////////////////////////////////////////////////////////////// +// Board init functions /////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + int board::init(){ SDL_Log("Init SDL...\n"); @@ -315,13 +319,68 @@ int board::init(){ // This is called to start the main loop. // This is where most of the logic lives void board::start(){ + initConstResources(); + SDL_Log("Starting main loop...\n"); for(;;){ } } +/////////////////////////////////////// +// Grab all constant resources from +// the configuration file, as well as +// all panel's configurations +void board::initConstResources(){ + //load all resrouces declared in config.hpp + std::string fullPath = DATA_DIR; + + SDL_Log("Base path: %s", fullPath.c_str()); + + //load images into memory + fullPath = DATA_IMG; + fullPath += "/"; + SDL_Log("Static images directory prefix: %s\n", fullPath.c_str()); + SDL_Log("Loading static images into working memory...\n"); + for(unsigned int i = 0; + i < (sizeof(IMAGE_LOCATIONS)/sizeof(IMAGE_LOCATIONS[0])); ++i){ + + SDL_Log("Loaded image %s at memory location %p\n", + IMAGE_LOCATIONS[i], + setImage(fullPath + IMAGE_LOCATIONS[0])); + } + SDL_Log("Loaded static images into working memory\n"); + + //load fonts into memory + fullPath = DATA_FONT; + fullPath += "/"; + SDL_Log("Loading fonts into working memory...\n"); + for(unsigned int i = 0; + i < (sizeof(FONT_LOCATIONS)/sizeof(FONT_LOCATIONS[0])); ++i){ + + SDL_Log("Loaded font %s %lu at memory location %p\n", + FONT_LOCATIONS[i]._name, + FONT_LOCATIONS[i]._size, + setFont({FONT_LOCATIONS[i]._name, FONT_LOCATIONS[i]._size})); + } + SDL_Log("Loaded fonts into working memory\n"); + + SDL_Log("Loading static strings into working memory...\n"); + for(unsigned int i = 0; + i < (sizeof(CONST_STRINGS)/sizeof(CONST_STRINGS[0])); ++i){ + SDL_Log("Loaded string (\"%s\") with font %s %lu at memory location %p\n", + CONST_STRINGS[i]._text, + CONST_STRINGS[i]._font_size._name, + CONST_STRINGS[i]._font_size._size, + setString(CONST_STRINGS[i]._text, + { CONST_STRINGS[i]._font_size._name, + CONST_STRINGS[i]._font_size._size })); + } + SDL_Log("Loaded static strings into working memory\n"); + +} + /////////////////////////////////////////////////////////////////////////////// // Memory Functions /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// @@ -350,7 +409,7 @@ TTF_Font* board::getFont(const font_and_size& fs){ if(_fonts.find(fs) != _fonts.end()) return _fonts.find(fs)->second.font(); - //Dynamic Fonts? Is the needed? + //TODO: Dynamic Fonts? Is the needed? //not found, return null return nullptr; } diff --git a/src/board.hpp b/src/board.hpp index 251ea0a..c5ba875 100644 --- a/src/board.hpp +++ b/src/board.hpp @@ -127,6 +127,7 @@ namespace dashboard { SDL_Texture_Wrapper, string_and_font_hash> _dynamic_strings; //TODO: Dynamic images? + //TODO: Dynamic Fonts? //local pointers to the globals SDL_Window* _window; diff --git a/src/config.def.hpp b/src/config.def.hpp index 384e99b..5b06253 100644 --- a/src/config.def.hpp +++ b/src/config.def.hpp @@ -74,7 +74,15 @@ constexpr int IMG_FLAGS = 0 // DATA_DIR // Where all resources will be // Keep this as DATA to use the install dir set in the makefile -constexpr char DATA_DIR[] = DATA; +constexpr char DATA_DIR[] = DATA_ ; + +// IMG_DIR +// Where all images are +// Keep this a DATA_IMG_ to use the DATA_IMG dir defined in the makefile +constexpr char DATA_IMG[] = DATA_IMG_; + +//TODO: Add directory prefix for each of these, and change it so it doesnt use +//that whole path as the key for the file // IMAGE_LOCATIONS // Locations of all static images used @@ -82,14 +90,27 @@ static const char* IMAGE_LOCATIONS[] = { "img/bmp_24.png", }; +// FONT_DIR +// Where all fonts are kept +// Keep this as FONT_DIR_ to use the DATA_FONT dir defined in the makefile +constexpr char DATA_FONT[] = DATA_FONT_; + // FONT_LOCATIONS // Locations of all fonts used -static const char* FONT_LOCATIONS[] = { - "font/ielianto-normal.ttf", +struct FONT_SIZE { + const char* _name; + const size_t _size; +}; +static const FONT_SIZE FONT_LOCATIONS[] = { + { "elianto-normal.ttf", 24 }, }; // CONST_STRINGS // All constant strings -static const char* CONST_STRINGS[] = { - +struct FONT_SIZE_STRING { + const char* _text; + const FONT_SIZE _font_size; +}; +static const FONT_SIZE_STRING CONST_STRINGS[] = { + { "Test string 12345", FONT_LOCATIONS[1] }, }; diff --git a/src/main.cpp b/src/main.cpp index 55cb3a1..c920780 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,13 +8,19 @@ #include "handler/handler.hpp" #include "board.hpp" +#include + int main(int argc, char** argv){ dashboard::handlers::setHandlers(); - dashboard::board _board; + dashboard::board _board(false); + + if(_board.init() != 0){ + std::cerr << "Due to errors, " << argv[0] + << " was unable to start, quitting!" << std::endl; + } _board.start(); - return 0; }