1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#pragma once
#include "opengl_text.hh"
#include "surface.hh"
#include "cachemap.hh"
#include <boost/noncopyable.hpp>
#include <string>
/// abstract theme class
class Theme: boost::noncopyable {
protected:
Theme();
Theme(fs::path const& path); ///< creates theme from path
public:
/// background image for theme
Surface bg;
};
/// theme for song selection
class ThemeSongs: public Theme {
public:
ThemeSongs();
/// song display
SvgTxtTheme song;
/// ordering display
SvgTxtTheme order;
/// has hiscore display
SvgTxtTheme has_hiscore;
/// hiscores display
SvgTxtTheme hiscores;
};
/// theme for practice screen
class ThemePractice: public Theme {
public:
ThemePractice();
/// note
Surface note;
/// sharp sign
Surface sharp;
/// note name text
SvgTxtTheme note_txt;
};
/// theme for singing screen
class ThemeSing: public Theme {
public:
ThemeSing();
/// top background
Surface bg_top;
/// bottom background
Surface bg_bottom;
/// current lyrics line
SvgTxtTheme lyrics_now;
/// next lyrics line
SvgTxtTheme lyrics_next;
/// time display
SvgTxtTheme timer;
/// show the current song info
SvgTxtTheme songinfo;
};
/// theme for audio device screen
class ThemeAudioDevices: public Theme {
public:
ThemeAudioDevices();
/// device item
SvgTxtTheme device;
/// device item background
Surface device_bg;
/// comment text
SvgTxtTheme comment;
/// comment background
Surface comment_bg;
};
/// theme for intro screen
class ThemeIntro: public Theme {
public:
ThemeIntro();
/// back highlight for selected option
Surface back_h;
/// menu option texts
Cachemap<std::string, SvgTxtTheme> options;
/// selected menu option text
SvgTxtTheme option_selected;
/// menu comment text
SvgTxtTheme comment;
/// configuration comment text (short tip)
SvgTxtTheme short_comment;
/// configuration comment background
Surface comment_bg;
/// configuration comment background (short tip)
Surface short_comment_bg;
};
/// theme for instrument menu
class ThemeInstrumentMenu: public Theme {
public:
ThemeInstrumentMenu();
/// back highlight for selected option
Surface back_h;
/// menu option texts
Cachemap<std::string, SvgTxtTheme> options;
/// menu selected option text
SvgTxtTheme option_selected;
/// menu comment text
SvgTxtTheme comment;
/// menu comment background
//Surface comment_bg;
/// get a cached option test
SvgTxtTheme& getCachedOption(const std::string& text);
};
//at the moment just a copy of ThemeSongs
class ThemePlaylistScreen: public Theme {
public:
ThemePlaylistScreen();
/// menu option texts
Cachemap<std::string, SvgTxtTheme> options;
/// selected menu option text
SvgTxtTheme option_selected;
/// menu comment text
SvgTxtTheme comment;
/// configuration comment text (short tip)
SvgTxtTheme short_comment;
/// configuration comment background
Surface comment_bg;
/// configuration comment background (short tip)
Surface short_comment_bg;
};
|