X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstyle.cpp;h=d1dea041dca0e010dcfa294c9252259c5fea2d60;hb=9f38197854e699a6093a906ab43f4238f3cd2388;hp=d53ae240fcea168a1b4659e6d8ac4472ec79f69c;hpb=85e27a9f4678a20dc197d1f29fae3d0370e402d9;p=libs%2Fgltk.git diff --git a/source/style.cpp b/source/style.cpp index d53ae24..d1dea04 100644 --- a/source/style.cpp +++ b/source/style.cpp @@ -1,3 +1,4 @@ +#include #include "resources.h" #include "style.h" @@ -6,11 +7,6 @@ using namespace std; namespace Msp { namespace GLtk { -Style::Style(): - font(0), - font_size(0) -{ } - const GL::Font &Style::get_font() const { if(!font) @@ -26,13 +22,17 @@ const GL::Color &Style::get_font_color(State s) const return font_color[s]; } -const Part *Style::get_part(const string &name) const +const GL::Sampler &Style::get_sampler() const { - for(PartSeq::const_iterator i=parts.begin(); i!=parts.end(); ++i) - if(i->get_name()==name) - return &*i; + if(!sampler) + throw logic_error("!sampler"); + return *sampler; +} - return 0; +const Part *Style::get_part(const string &name) const +{ + auto i = find_if(parts, [&name](const Part &p){ return p.get_name()==name; }); + return (i!=parts.end() ? &*i : 0); } bool Style::compare_states(State s1, State s2) const @@ -45,8 +45,8 @@ bool Style::compare_states(State s1, State s2) const if(c1.r!=c2.r || c1.g!=c2.g || c1.b!=c2.b) return true; - for(PartSeq::const_iterator i=parts.begin(); i!=parts.end(); ++i) - if(i->get_graphic(s1)!=i->get_graphic(s2)) + for(const Part &p: parts) + if(p.get_graphic(s1)!=p.get_graphic(s2)) return true; return false; @@ -61,6 +61,8 @@ Style::Loader::Loader(Style &s, Resources &r): obj.font = &get_collection().get_default_font(); obj.font_size = obj.font->get_native_size(); } + if(!obj.sampler) + obj.sampler = &get_collection().get("linear_clamp.samp"); add("font", &Loader::font); add("font_color", &Loader::font_color_normal); @@ -68,6 +70,7 @@ Style::Loader::Loader(Style &s, Resources &r): add("font_size", &Style::font_size); add("part", &Loader::part); add("part", &Loader::unnamed_part); + add("sampler", &Style::sampler); } void Style::Loader::font(const string &n)