#pragma once #include "Gradient.h" #include #include #include #define COLOR_THEME_DEFAULT 0 #define COLOR_THEME_BW 1 #define COLOR_THEME_SHARP 2 #define COLOR_THEME_RAD 3 #define COLOR_THEME_TOUCH 4 #define COLOR_THEME_HD 5 #define COLOR_THEME_RADAR 6 #define COLOR_THEME_MAX 7 class RGBColor { public: float r, g, b; RGBColor(float r, float g, float b) : r(r), g(g), b(b) { } RGBColor() : RGBColor(0, 0, 0) { } ~RGBColor() { } RGBColor & operator=(const RGBColor &other) { r = other.r; g = other.g; b = other.b; return *this; } }; class ColorTheme { public: RGBColor waterfallHighlight; RGBColor waterfallNew; RGBColor wfHighlight; RGBColor waterfallHover; RGBColor waterfallDestroy; RGBColor fftLine; RGBColor fftHighlight; RGBColor scopeLine; RGBColor tuningBar; RGBColor tuningBarUp; RGBColor tuningBarDown; RGBColor meterLevel; RGBColor meterValue; RGBColor text; RGBColor freqLine; RGBColor button; RGBColor buttonHighlight; RGBColor scopeBackground; RGBColor fftBackground; RGBColor generalBackground; Gradient waterfallGradient; std::string name; }; class ThemeMgr { public: ThemeMgr(); ~ThemeMgr(); ColorTheme *currentTheme; std::map themes; void setTheme(int themeId); int getTheme(); int themeId; static ThemeMgr mgr; }; class DefaultColorTheme: public ColorTheme { public: DefaultColorTheme(); }; class BlackAndWhiteColorTheme: public ColorTheme { public: BlackAndWhiteColorTheme(); }; class SharpColorTheme: public ColorTheme { public: SharpColorTheme(); }; class RadColorTheme: public ColorTheme { public: RadColorTheme(); }; class TouchColorTheme: public ColorTheme { public: TouchColorTheme(); }; class HDColorTheme: public ColorTheme { public: HDColorTheme(); }; class RadarColorTheme: public ColorTheme { public: RadarColorTheme(); };