]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/style.cpp
Simplify constructors with C++11
[libs/gltk.git] / source / style.cpp
index d53ae240fcea168a1b4659e6d8ac4472ec79f69c..d1dea041dca0e010dcfa294c9252259c5fea2d60 100644 (file)
@@ -1,3 +1,4 @@
+#include <msp/core/algorithm.h>
 #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<GL::Sampler>("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)