view include/gui/theme.h @ 347:a0aa8c8c4307

dep/anitomy: port to use UCS-4 rather than wide strings rationale: wide strings are not the same on every platform, and might not even be Unicode. (while they usually are, its possible that they are not) I was *going* to change StringToInt to use a string stream, but outputting to an integer doesn't seem to work at all with UCS-4, even though it ought to, so I just rolled my own that uses the arabic digits only.
author Paper <paper@paper.us.eu.org>
date Sun, 23 Jun 2024 10:32:09 -0400
parents 657fda1b9cac
children
line wrap: on
line source

#ifndef MINORI_GUI_THEME_H_
#define MINORI_GUI_THEME_H_

#include <array>

namespace Theme {

enum class Theme {
	Default,
	Light,
	Dark
};

constexpr std::array<Theme, 3> Themes{
	Theme::Default,
	Theme::Light,
	Theme::Dark
};

class ThemeManager final {
public:
	ThemeManager(Theme theme = Theme::Default);
	void SetTheme(Theme theme);
	Theme GetTheme() const;
	bool IsInDarkTheme() const;
	void RepaintCurrentTheme();

private:
	void SetToDarkTheme();
	void SetToLightTheme();
	void SetStyleSheet(Theme theme);
	Theme GetCurrentOSTheme() const;
	Theme theme;
};

} // namespace Theme

#endif // MINORI_GUI_THEME_H_