diff --git a/Package/Environment/Common/Layouts/Default 16x9/Layout.xml b/Package/Environment/Common/Layouts/Default 16x9/Layout.xml index 9980327..0b3e1db 100644 --- a/Package/Environment/Common/Layouts/Default 16x9/Layout.xml +++ b/Package/Environment/Common/Layouts/Default 16x9/Layout.xml @@ -30,7 +30,7 @@ - + @@ -124,7 +124,7 @@ - + diff --git a/Package/Environment/Common/Layouts/Splash/Layout.xml b/Package/Environment/Common/Layouts/Default 16x9/Splash.xml similarity index 88% rename from Package/Environment/Common/Layouts/Splash/Layout.xml rename to Package/Environment/Common/Layouts/Default 16x9/Splash.xml index 5c668ee..5abef20 100644 --- a/Package/Environment/Common/Layouts/Splash/Layout.xml +++ b/Package/Environment/Common/Layouts/Default 16x9/Splash.xml @@ -1,4 +1,4 @@ - + diff --git a/Package/Environment/Common/Layouts/Splash/Age.otf b/Package/Environment/Common/Layouts/Splash/Age.otf deleted file mode 100644 index 5d76781..0000000 Binary files a/Package/Environment/Common/Layouts/Splash/Age.otf and /dev/null differ diff --git a/Package/Environment/Common/Layouts/Splash/logo.png b/Package/Environment/Common/Layouts/Splash/logo.png deleted file mode 100644 index 54bd5ac..0000000 Binary files a/Package/Environment/Common/Layouts/Splash/logo.png and /dev/null differ diff --git a/RetroFE/Source/Graphics/FontCache.cpp b/RetroFE/Source/Graphics/FontCache.cpp index fb00867..47fe0f1 100644 --- a/RetroFE/Source/Graphics/FontCache.cpp +++ b/RetroFE/Source/Graphics/FontCache.cpp @@ -52,11 +52,11 @@ void FontCache::Initialize() //todo: make bool TTF_Init(); } -Font *FontCache::GetFont(std::string fontPath) +Font *FontCache::GetFont(std::string fontPath, int fontSize, SDL_Color color) { Font *t = NULL; - std::map::iterator it = FontFaceMap.find(fontPath); + std::map::iterator it = FontFaceMap.find(BuildFontKey(fontPath, fontSize, color)); if(it != FontFaceMap.end()) { @@ -66,15 +66,24 @@ Font *FontCache::GetFont(std::string fontPath) return t; } +std::string FontCache::BuildFontKey(std::string font, int fontSize, SDL_Color color) +{ + std::stringstream ss; + ss << font << "_SIZE=" << fontSize << " RGB=" << color.r << "." << color.g << "." << color.b; + + return ss.str(); +} + bool FontCache::LoadFont(std::string fontPath, int fontSize, SDL_Color color) { - std::map::iterator it = FontFaceMap.find(fontPath); + std::string key = BuildFontKey(fontPath, fontSize, color); + std::map::iterator it = FontFaceMap.find(key); if(it == FontFaceMap.end()) { Font *f = new Font(); f->Initialize(fontPath, fontSize, color); - FontFaceMap[fontPath] = f; + FontFaceMap[key] = f; } return true; diff --git a/RetroFE/Source/Graphics/FontCache.h b/RetroFE/Source/Graphics/FontCache.h index a38bdf0..9552cf4 100644 --- a/RetroFE/Source/Graphics/FontCache.h +++ b/RetroFE/Source/Graphics/FontCache.h @@ -26,11 +26,12 @@ public: void DeInitialize(); FontCache(); bool LoadFont(std::string font, int fontSize, SDL_Color color); - Font *GetFont(std::string font); + Font *GetFont(std::string font, int fontSize, SDL_Color color); virtual ~FontCache(); private: std::map FontFaceMap; + std::string BuildFontKey(std::string font, int fontSize, SDL_Color color); }; diff --git a/RetroFE/Source/Graphics/PageBuilder.cpp b/RetroFE/Source/Graphics/PageBuilder.cpp index 3dde688..d4dc61b 100644 --- a/RetroFE/Source/Graphics/PageBuilder.cpp +++ b/RetroFE/Source/Graphics/PageBuilder.cpp @@ -47,8 +47,9 @@ static const int MENU_END = -2; // last item transitions here after it scroll static const int MENU_CENTER = -4; //todo: this file is starting to become a god class of building. Consider splitting into sub-builders -PageBuilder::PageBuilder(std::string layoutKey, Configuration &c, FontCache *fc) +PageBuilder::PageBuilder(std::string layoutKey, std::string layoutPage, Configuration &c, FontCache *fc) : LayoutKey(layoutKey) + , LayoutPage(layoutPage) , Config(c) , ScaleX(1) , ScaleY(1) @@ -77,7 +78,7 @@ Page *PageBuilder::BuildPage() std::string layoutName = LayoutKey; LayoutPath = Configuration::GetAbsolutePath() + "/Layouts/" + layoutName; - layoutFile = LayoutPath + "/Layout.xml"; + layoutFile = LayoutPath + "/" + LayoutPage + ".xml"; Logger::Write(Logger::ZONE_INFO, "Layout", "Initializing " + layoutFile); @@ -369,7 +370,7 @@ bool PageBuilder::BuildComponents(xml_node<> *layout, Page *page) else { FC->LoadFont(Font, FontSize, FontColor); - Text *c = new Text(value->value(), FC->GetFont(Font), FontColor, ScaleX, ScaleY); + Text *c = new Text(value->value(), FC->GetFont(Font, FontSize, FontColor), FontColor, ScaleX, ScaleY); ViewInfo *v = c->GetBaseViewInfo(); BuildViewInfo(componentXml, v); @@ -382,7 +383,7 @@ bool PageBuilder::BuildComponents(xml_node<> *layout, Page *page) for(xml_node<> *componentXml = layout->first_node("statusText"); componentXml; componentXml = componentXml->next_sibling("statusText")) { FC->LoadFont(Font, FontSize, FontColor); - Text *c = new Text("", FC->GetFont(Font), FontColor, ScaleX, ScaleY); + Text *c = new Text("", FC->GetFont(Font, FontSize, FontColor), FontColor, ScaleX, ScaleY); ViewInfo *v = c->GetBaseViewInfo(); BuildViewInfo(componentXml, v); @@ -431,13 +432,13 @@ void PageBuilder::LoadReloadableImages(xml_node<> *layout, std::string tagName, if(type) { FC->LoadFont(Font, FontSize, FontColor); - c = new ReloadableText(type->value(), FC->GetFont(Font), FontColor, LayoutKey, ScaleX, ScaleY); + c = new ReloadableText(type->value(), FC->GetFont(Font, FontSize, FontColor), FontColor, LayoutKey, ScaleX, ScaleY); } } else { FC->LoadFont(Font, FontSize, FontColor); - c = new ReloadableMedia(Config, type->value(), (tagName == "reloadableVideo"), FC->GetFont(Font), FontColor, ScaleX, ScaleY); + c = new ReloadableMedia(Config, type->value(), (tagName == "reloadableVideo"), FC->GetFont(Font, FontSize, FontColor), FontColor, ScaleX, ScaleY); xml_attribute<> *textFallback = componentXml->first_attribute("textFallback"); if(textFallback && Utils::ToLower(textFallback->value()) == "true") @@ -527,7 +528,7 @@ ScrollingList * PageBuilder::BuildMenu(xml_node<> *menuXml) // on default, text will be rendered to the menu. Preload it into cache. FC->LoadFont(Font, FontSize, FontColor); - menu = new ScrollingList(Config, ScaleX, ScaleY, FC->GetFont(Font), FontColor, LayoutKey, imageType); + menu = new ScrollingList(Config, ScaleX, ScaleY, FC->GetFont(Font, FontSize, FontColor), FontColor, LayoutKey, imageType); if(scrollTimeXml) { diff --git a/RetroFE/Source/Graphics/PageBuilder.h b/RetroFE/Source/Graphics/PageBuilder.h index fdc8986..b344491 100644 --- a/RetroFE/Source/Graphics/PageBuilder.h +++ b/RetroFE/Source/Graphics/PageBuilder.h @@ -30,12 +30,13 @@ class Configuration; class PageBuilder { public: - PageBuilder(std::string layoutKey, Configuration &c, FontCache *fc); + PageBuilder(std::string layoutKey, std::string layoutPage, Configuration &c, FontCache *fc); virtual ~PageBuilder(); Page *BuildPage(); private: std::string LayoutKey; + std::string LayoutPage; std::string LayoutPath; Configuration &Config; float ScaleX; diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index cdaaeb5..233a07b 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -452,7 +452,7 @@ Page *RetroFE::LoadPage() Config.GetProperty("layout", layoutName); - PageBuilder pb(layoutName, Config, &FC); + PageBuilder pb(layoutName, "Layout", Config, &FC); Page *page = pb.BuildPage(); if(!page) @@ -469,7 +469,10 @@ Page *RetroFE::LoadPage() Page *RetroFE::LoadSplashPage() { - PageBuilder pb("Splash", Config, &FC); + std::string layoutName; + Config.GetProperty("layout", layoutName); + + PageBuilder pb(layoutName, "Splash", Config, &FC); Page * page = pb.BuildPage(); page->Start();