]> git.tdb.fi Git - poefilter.git/blob - source/theme.h
Add alpha channel support for colors
[poefilter.git] / source / theme.h
1 #ifndef THEME_H_
2 #define THEME_H_
3
4 #include <map>
5 #include <string>
6 #include <msp/datafile/objectloader.h>
7 #include "appearance.h"
8 #include "color.h"
9
10 class Theme
11 {
12 public:
13         class Loader: public Msp::DataFile::ObjectLoader<Theme>
14         {
15         public:
16                 Loader(Theme &);
17
18         private:
19                 void appearance(const std::string &);
20                 void color(const std::string &, unsigned, unsigned, unsigned);
21                 void color_alpha(const std::string &, unsigned, unsigned, unsigned, unsigned);
22         };
23
24 private:
25         typedef std::map<std::string, Color> ColorMap;
26         typedef std::map<std::string, Appearance> AppearanceMap;
27
28         ColorMap colors;
29         unsigned base_font_size;
30         AppearanceMap appearances;
31
32 public:
33         Theme();
34
35         void set_color(const std::string &, const Color &);
36         const Color &get_color(const std::string &) const;
37
38         void set_base_font_size(unsigned);
39         unsigned get_base_font_size() const { return base_font_size; }
40
41         void set_appearance(const std::string &, const Appearance &);
42         const Appearance &get_appearance(const std::string &) const;
43         const Appearance *find_appearance(const std::string &) const;
44 };
45
46 #endif