]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/style.cpp
Support different font colors in different states
[libs/gltk.git] / source / style.cpp
index f26112a6c14c688674b13cc7adb40c415adcc151..369559d8095b358bac335e2fb2c5727eabbe0206 100644 (file)
@@ -18,6 +18,14 @@ const GL::Font &Style::get_font() const
        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 Part *Style::get_part(const string &name) const
 {
        for(PartSeq::const_iterator i=parts.begin(); i!=parts.end(); ++i)
@@ -38,6 +46,7 @@ Style::Loader::Loader(Style &s, Resources &r):
        }
 
        add("font",       &Loader::font);
+       add("font_color", &Loader::font_color_normal);
        add("font_color", &Loader::font_color);
        add("font_size",  &Style::font_size);
        add("part",       &Loader::part);
@@ -50,9 +59,16 @@ void Style::Loader::font(const string &n)
        obj.font_size = obj.font->get_native_size();
 }
 
-void Style::Loader::font_color(float r, float g, float b)
+void Style::Loader::font_color_normal(float r, float g, float b)
+{
+       font_color(NORMAL, r, g, b);
+}
+
+void Style::Loader::font_color(State s, float r, float g, float b)
 {
-       obj.font_color = GL::Color(r, g, b);
+       for(unsigned i=0; i<N_STATES_; ++i)
+               if((i&s)==s)
+                       obj.font_color[i] = GL::Color(r, g, b);
 }
 
 void Style::Loader::part(const string &n)