]> git.tdb.fi Git - poefilter.git/blobdiff - source/appearance.cpp
Revamp appearance definitions
[poefilter.git] / source / appearance.cpp
diff --git a/source/appearance.cpp b/source/appearance.cpp
new file mode 100644 (file)
index 0000000..bdb25bc
--- /dev/null
@@ -0,0 +1,60 @@
+#include "appearance.h"
+#include "theme.h"
+
+using namespace std;
+using namespace Msp;
+
+Appearance::Appearance():
+       font_size(32),
+       sound_type(0),
+       sound_volume(100)
+{ }
+
+Appearance::Loader::Loader(Appearance &a, const Theme &t):
+       DataFile::ObjectLoader<Appearance>(a),
+       theme(t)
+{
+       add("alert_sound", &Appearance::sound_type, &Appearance::sound_volume);
+       add("background_color", &Loader::background_color);
+       add("background_color", &Loader::background_color_named);
+       add("border_color", &Loader::border_color);
+       add("border_color", &Loader::border_color_named);
+       add("font_size", &Loader::font_size);
+       add("text_color", &Loader::text_color);
+       add("text_color", &Loader::text_color_named);
+}
+
+void Appearance::Loader::background_color(unsigned r, unsigned g, unsigned b)
+{
+       obj.background_color = Color(r, g, b);
+}
+
+void Appearance::Loader::background_color_named(const string &name)
+{
+       obj.background_color = theme.get_color(name);
+}
+
+void Appearance::Loader::border_color(unsigned r, unsigned g, unsigned b)
+{
+       obj.border_color = Color(r, g, b);
+}
+
+void Appearance::Loader::border_color_named(const string &name)
+{
+       obj.border_color = theme.get_color(name);
+}
+
+void Appearance::Loader::font_size(float s)
+{
+       obj.font_size = theme.get_base_font_size()*s+0.5f;
+}
+
+void Appearance::Loader::text_color(unsigned r, unsigned g, unsigned b)
+{
+       obj.text_color = Color(r, g, b);
+}
+
+void Appearance::Loader::text_color_named(const string &name)
+{
+       obj.text_color = theme.get_color(name);
+}