+const GL::Font &Style::get_font() const
+{
+ if(!font)
+ throw logic_error("!font");
+ return *font;
+}
+
+const GL::Color &Style::get_font_color(State s) const
+{
+ if(s>=N_STATES_)
+ throw invalid_argument("Style::get_font_color");
+
+ return font_color[s];
+}
+
+const GL::Sampler &Style::get_sampler() const
+{
+ if(!sampler)
+ throw logic_error("!sampler");
+ return *sampler;
+}
+
+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 : nullptr);
+}
+
+bool Style::compare_states(State s1, State s2) const
+{
+ if(s1>=N_STATES_ || s2>=N_STATES_)
+ throw invalid_argument("Style::compare_states");
+
+ const GL::Color &c1 = font_color[s1];
+ const GL::Color &c2 = font_color[s2];
+ if(c1.r!=c2.r || c1.g!=c2.g || c1.b!=c2.b)
+ return true;
+
+ for(const Part &p: parts)
+ if(p.get_graphic(s1)!=p.get_graphic(s2))
+ return true;
+
+ return false;
+}