X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftheme.cpp;h=7557caaa8c8f90083a323e39b9e0e7ffb168fd7f;hb=0388bdcffe5c2c3e720afa9aa911268eac9c32de;hp=3b09dc3f3fddd9540dcef643c25483f12c6c5151;hpb=fc27eb63c05d915d606e17992ecd5b7f68478101;p=poefilter.git diff --git a/source/theme.cpp b/source/theme.cpp index 3b09dc3..7557caa 100644 --- a/source/theme.cpp +++ b/source/theme.cpp @@ -4,19 +4,6 @@ using namespace std; using namespace Msp; -Color::Color(): - r(200), - g(200), - b(200) -{ } - -Color::Color(unsigned r_, unsigned g_, unsigned b_): - r(r_), - g(g_), - b(b_) -{ } - - Theme::Theme(): base_font_size(32) { } @@ -36,14 +23,39 @@ void Theme::set_base_font_size(unsigned size) base_font_size = size; } +void Theme::set_appearance(const string &name, const Appearance &app) +{ + appearances[name] = app; +} + +const Appearance &Theme::get_appearance(const string &name) const +{ + return get_item(appearances, name); +} + +const Appearance *Theme::find_appearance(const string &name) const +{ + AppearanceMap::const_iterator i = appearances.find(name); + return (i!=appearances.end() ? &i->second : 0); +} + Theme::Loader::Loader(Theme &t): DataFile::ObjectLoader(t) { + add("appearance", &Loader::appearance); add("base_font_size", &Theme::base_font_size); add("color", &Loader::color); } +void Theme::Loader::appearance(const string &name) +{ + Appearance app; + Appearance::Loader ldr(app, &obj); + load_sub_with(ldr); + obj.set_appearance(name, app); +} + void Theme::Loader::color(const string &name, unsigned r, unsigned g, unsigned b) { obj.set_color(name, Color(r, g, b));