]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/style.cpp
Add method to get a Part by name
[libs/gltk.git] / source / style.cpp
index b4ee82d10eff5d1e454ebf767430d0edd941ed17..8eb5de1e79cb7853a1828dfb12248551204ed787 100644 (file)
@@ -1,3 +1,10 @@
+/* $Id$
+
+This file is part of libmspgltk
+Copyright © 2007  Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
 #include "resources.h"
 #include "style.h"
 
@@ -6,10 +13,19 @@ using namespace std;
 namespace Msp {
 namespace GLtk {
 
-Style::Style():
-       font(0)
+Style::Style(Resources &r):
+       font(&r.get_default_font())
 { }
 
+const Part *Style::get_part(const string &name) const
+{
+       for(PartSeq::const_iterator i=parts.begin(); i!=parts.end(); ++i)
+               if(i->get_name()==name)
+                       return &*i;
+
+       return 0;
+}
+
 
 Style::Loader::Loader(Style &s, Resources &r):
        style(s),
@@ -17,12 +33,20 @@ Style::Loader::Loader(Style &s, Resources &r):
 {
        add("font",       &Style::font);
        add("font_color", &Loader::font_color);
-       add("part",       &Loader::part);
+       add("part",       static_cast<void (Loader::*)()>(&Loader::part));
+       add("part",       static_cast<void (Loader::*)(const std::string &)>(&Loader::part));
+       // Deprecated alias
+       add("special",    static_cast<void (Loader::*)(const std::string &)>(&Loader::part));
 }
 
 void Style::Loader::font_color(float r, float g, float b)
 {
-       style.font_color=GL::Color(r, g, b);
+       style.font_color = GL::Color(r, g, b);
+}
+
+void Style::Loader::part()
+{
+       part(string());
 }
 
 void Style::Loader::part(const string &n)