X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstyle.cpp;h=d53ae240fcea168a1b4659e6d8ac4472ec79f69c;hb=85e27a9f4678a20dc197d1f29fae3d0370e402d9;hp=369559d8095b358bac335e2fb2c5727eabbe0206;hpb=b61361ee9f1f049fb3c22a38f68c757c7ca54cd0;p=libs%2Fgltk.git diff --git a/source/style.cpp b/source/style.cpp index 369559d..d53ae24 100644 --- a/source/style.cpp +++ b/source/style.cpp @@ -20,7 +20,7 @@ const GL::Font &Style::get_font() const const GL::Color &Style::get_font_color(State s) const { - if(s>N_STATES_) + if(s>=N_STATES_) throw invalid_argument("Style::get_font_color"); return font_color[s]; @@ -35,6 +35,23 @@ const Part *Style::get_part(const string &name) const return 0; } +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(PartSeq::const_iterator i=parts.begin(); i!=parts.end(); ++i) + if(i->get_graphic(s1)!=i->get_graphic(s2)) + return true; + + return false; +} + Style::Loader::Loader(Style &s, Resources &r): DataFile::CollectionObjectLoader(s, &r)