X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstyle.cpp;h=f26112a6c14c688674b13cc7adb40c415adcc151;hb=a4d18206b6352b3240ad9697aed10e2066d160bd;hp=50c2e774d5477201502f77ac2e98ad270793ad85;hpb=11d1b67a9180a0e468b56e355fbe0c88d104ef72;p=libs%2Fgltk.git diff --git a/source/style.cpp b/source/style.cpp index 50c2e77..f26112a 100644 --- a/source/style.cpp +++ b/source/style.cpp @@ -6,11 +6,18 @@ using namespace std; namespace Msp { namespace GLtk { -Style::Style(Resources &r): - font(&r.get_default_font()), - font_size(font->get_native_size()) +Style::Style(): + font(0), + font_size(0) { } +const GL::Font &Style::get_font() const +{ + if(!font) + throw logic_error("!font"); + return *font; +} + const Part *Style::get_part(const string &name) const { for(PartSeq::const_iterator i=parts.begin(); i!=parts.end(); ++i) @@ -22,32 +29,42 @@ const Part *Style::get_part(const string &name) const Style::Loader::Loader(Style &s, Resources &r): - style(s), - res(r) + DataFile::CollectionObjectLoader(s, &r) { - add("font", &Style::font); + if(!obj.font) + { + obj.font = &get_collection().get_default_font(); + obj.font_size = obj.font->get_native_size(); + } + + add("font", &Loader::font); add("font_color", &Loader::font_color); - add("part", static_cast(&Loader::part)); - add("part", static_cast(&Loader::part)); - // Deprecated alias - add("special", static_cast(&Loader::part)); + add("font_size", &Style::font_size); + add("part", &Loader::part); + add("part", &Loader::unnamed_part); } -void Style::Loader::font_color(float r, float g, float b) +void Style::Loader::font(const string &n) { - style.font_color = GL::Color(r, g, b); + obj.font = &get_collection().get(n); + obj.font_size = obj.font->get_native_size(); } -void Style::Loader::part() +void Style::Loader::font_color(float r, float g, float b) { - part(string()); + obj.font_color = GL::Color(r, g, b); } void Style::Loader::part(const string &n) { Part p(n); - load_sub(p, res); - style.parts.push_back(p); + load_sub(p, get_collection()); + obj.parts.push_back(p); +} + +void Style::Loader::unnamed_part() +{ + part(string()); } } // namespace GLtk