diff --git a/README.md b/README.md index c7ab61b..4e6c2bf 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,8 @@ -#### Theming -See the [example](https://github.com/friedkeenan/nx-hbmenu/releases/download/2.0.1/hbtheme.cfg) in the releases for the correct structure. In short, there are two seperate entries for the dark and light system themes, but you only need to make a them for one of them for it to work. If there are any colors missing, the missing color is set to #800080 (purple), and if anything else is wrong the theme won't take effect. You place the hbtheme.cfg file on the root of the SD card and then you should be good to go. - #### Usage See [Homebrew_Applications](http://switchbrew.org/index.php?title=Homebrew_Applications) for SD layout and applications, etc. See [Switchbrew](http://switchbrew.org/index.php?title=Homebrew_Menu) for hbmenu docs. #### Download -The latest release is available from the [releases](https://github.com/friedkeenan/nx-hbmenu/releases/latest) page. +The latest release is available from the [releases](https://github.com/switchbrew/nx-hbmenu/releases/latest) page. #### Building Build with ```make nx``` or just run ```make```. @@ -14,3 +11,4 @@ Build with ```make nx``` or just run ```make```. * This uses code based on 3DS [new-hbmenu](https://github.com/fincs/new-hbmenu). * [nanojpeg](https://svn.emphy.de/nanojpeg/trunk/nanojpeg/nanojpeg.c) is used for handling JPEG icons. This library doesn't support lossless JPEG. + diff --git a/common/theme.c b/common/theme.c index 13954ee..02dfb6f 100644 --- a/common/theme.c +++ b/common/theme.c @@ -7,119 +7,120 @@ #include "hbmenu_logo_dark_bin.h" color_t colorFromSetting(config_setting_t *rgba) { - if(rgba==NULL) - return MakeColor(128,0,128,255); - return MakeColor(config_setting_get_int_elem(rgba, 0), config_setting_get_int_elem(rgba, 1), config_setting_get_int_elem(rgba, 2), config_setting_get_int_elem(rgba, 3)); + if(rgba==NULL) + return MakeColor(128,0,128,255); + return MakeColor(config_setting_get_int_elem(rgba, 0), config_setting_get_int_elem(rgba, 1), config_setting_get_int_elem(rgba, 2), config_setting_get_int_elem(rgba, 3)); } + void themeStartup(ThemePreset preset) { config_t *cfg = NULL; cfg = (config_t *) malloc(sizeof(config_t)); config_init(cfg); config_setting_t *theme; color_t text, frontWave, middleWave, backWave, background, highlight, separator; - int waveBlending; - const char *AText, *BText; - bool good_cfg=false; + int waveBlending; + const char *AText, *BText; + bool good_cfg=false; switch (preset) { case THEME_PRESET_LIGHT: - if (config_read_file(cfg, "/hbtheme.cfg")) { - theme=config_lookup(cfg, "lightTheme"); - if (theme != NULL) { - text = colorFromSetting(config_lookup(cfg, "lightTheme.textColor")); - frontWave = colorFromSetting(config_lookup(cfg, "lightTheme.frontWaveColor")); - middleWave = colorFromSetting(config_lookup(cfg, "lightTheme.middleWaveColor")); - backWave = colorFromSetting(config_lookup(cfg, "lightTheme.backWaveColor")); - background = colorFromSetting(config_lookup(cfg, "lightTheme.backgroundColor")); - highlight = colorFromSetting(config_lookup(cfg, "lightTheme.highlightColor")); - separator = colorFromSetting(config_lookup(cfg, "lightTheme.separatorColor")); - good_cfg = config_setting_lookup_int(theme, "enableWaveBlending", &waveBlending); - good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonAText", &AText); - good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonBText", &BText); - } - } - if (good_cfg) { - themeCurrent = (theme_t) { - .textColor = text, - .frontWaveColor = frontWave, - .middleWaveColor = middleWave, - .backWaveColor = backWave, - .backgroundColor = background, - .highlightColor = highlight, - .separatorColor = separator, - .enableWaveBlending = waveBlending, - .buttonAText = AText, - .buttonBText = BText, - //.buttonAImage = button_a_light_bin, - //.buttonBImage = button_b_light_bin, - .hbmenuLogoImage = hbmenu_logo_light_bin - }; - } else { - themeCurrent = (theme_t) { - .textColor = MakeColor(0, 0, 0, 255), - .frontWaveColor = MakeColor(100, 212, 250, 255), - .middleWaveColor = MakeColor(100, 153, 255, 255), - .backWaveColor = MakeColor(154, 171, 255, 255), - .backgroundColor = MakeColor(233, 236, 241, 255), - .highlightColor = MakeColor(91, 237, 224, 255), - .separatorColor = MakeColor(219, 218, 219, 255), - .enableWaveBlending = 0, - .buttonAText = "\uE0E0", - .buttonBText = "\uE0E1", - //.buttonAImage = button_a_light_bin, - //.buttonBImage = button_b_light_bin, - .hbmenuLogoImage = hbmenu_logo_light_bin - }; + if (config_read_file(cfg, "/hbtheme.cfg")) { + theme=config_lookup(cfg, "lightTheme"); + if (theme != NULL) { + text = colorFromSetting(config_lookup(cfg, "lightTheme.textColor")); + frontWave = colorFromSetting(config_lookup(cfg, "lightTheme.frontWaveColor")); + middleWave = colorFromSetting(config_lookup(cfg, "lightTheme.middleWaveColor")); + backWave = colorFromSetting(config_lookup(cfg, "lightTheme.backWaveColor")); + background = colorFromSetting(config_lookup(cfg, "lightTheme.backgroundColor")); + highlight = colorFromSetting(config_lookup(cfg, "lightTheme.highlightColor")); + separator = colorFromSetting(config_lookup(cfg, "lightTheme.separatorColor")); + good_cfg = config_setting_lookup_int(theme, "enableWaveBlending", &waveBlending); + good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonAText", &AText); + good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonBText", &BText); + } + } + if (good_cfg) { + themeCurrent = (theme_t) { + .textColor = text, + .frontWaveColor = frontWave, + .middleWaveColor = middleWave, + .backWaveColor = backWave, + .backgroundColor = background, + .highlightColor = highlight, + .separatorColor = separator, + .enableWaveBlending = waveBlending, + .buttonAText = AText, + .buttonBText = BText, + //.buttonAImage = button_a_light_bin, + //.buttonBImage = button_b_light_bin, + .hbmenuLogoImage = hbmenu_logo_light_bin + }; + } else { + themeCurrent = (theme_t) { + .textColor = MakeColor(0, 0, 0, 255), + .frontWaveColor = MakeColor(100, 212, 250, 255), + .middleWaveColor = MakeColor(100, 153, 255, 255), + .backWaveColor = MakeColor(154, 171, 255, 255), + .backgroundColor = MakeColor(233, 236, 241, 255), + .highlightColor = MakeColor(91, 237, 224, 255), + .separatorColor = MakeColor(219, 218, 219, 255), + .enableWaveBlending = 0, + .buttonAText = "\uE0E0", + .buttonBText = "\uE0E1", + //.buttonAImage = button_a_light_bin, + //.buttonBImage = button_b_light_bin, + .hbmenuLogoImage = hbmenu_logo_light_bin + }; } break; case THEME_PRESET_DARK: - if (config_read_file(cfg, "/hbtheme.cfg")) { - theme=config_lookup(cfg, "darkTheme"); - if (theme != NULL) { - text = colorFromSetting(config_lookup(cfg, "darkTheme.textColor")); - frontWave = colorFromSetting(config_lookup(cfg, "darkTheme.frontWaveColor")); - middleWave = colorFromSetting(config_lookup(cfg, "darkTheme.middleWaveColor")); - backWave = colorFromSetting(config_lookup(cfg, "darkTheme.backWaveColor")); - background = colorFromSetting(config_lookup(cfg, "darkTheme.backgroundColor")); - highlight = colorFromSetting(config_lookup(cfg, "darkTheme.highlightColor")); - separator = colorFromSetting(config_lookup(cfg, "darkTheme.separatorColor")); - good_cfg = config_setting_lookup_int(theme, "enableWaveBlending", &waveBlending); - good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonAText", &AText); - good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonBText", &BText); - } - } - if (good_cfg) { - themeCurrent = (theme_t) { - .textColor = text, - .frontWaveColor = frontWave, - .middleWaveColor = middleWave, - .backWaveColor = backWave, - .backgroundColor = background, - .highlightColor = highlight, - .separatorColor = separator, - .enableWaveBlending = waveBlending, - .buttonAText = AText, - .buttonBText = BText, - //.buttonAImage = button_a_dark_bin, - //.buttonBImage = button_b_dark_bin, - .hbmenuLogoImage = hbmenu_logo_dark_bin - }; - } else { - themeCurrent = (theme_t) { - .textColor = MakeColor(255, 255, 255, 255), - .frontWaveColor = MakeColor(96, 204, 204, 255), - .middleWaveColor = MakeColor(66, 154, 159, 255), - .backWaveColor = MakeColor(73, 103, 169, 255), - .backgroundColor = MakeColor(45, 45, 50, 255), - .highlightColor = MakeColor(91, 237, 224, 255), - .separatorColor = MakeColor(219, 218, 219, 255), - .enableWaveBlending = 0, - .buttonAText = "\uE0A0", - .buttonBText = "\uE0A1", - //.buttonAImage = button_a_dark_bin, - //.buttonBImage = button_b_dark_bin, - .hbmenuLogoImage = hbmenu_logo_dark_bin - }; + if (config_read_file(cfg, "/hbtheme.cfg")) { + theme=config_lookup(cfg, "darkTheme"); + if (theme != NULL) { + text = colorFromSetting(config_lookup(cfg, "darkTheme.textColor")); + frontWave = colorFromSetting(config_lookup(cfg, "darkTheme.frontWaveColor")); + middleWave = colorFromSetting(config_lookup(cfg, "darkTheme.middleWaveColor")); + backWave = colorFromSetting(config_lookup(cfg, "darkTheme.backWaveColor")); + background = colorFromSetting(config_lookup(cfg, "darkTheme.backgroundColor")); + highlight = colorFromSetting(config_lookup(cfg, "darkTheme.highlightColor")); + separator = colorFromSetting(config_lookup(cfg, "darkTheme.separatorColor")); + good_cfg = config_setting_lookup_int(theme, "enableWaveBlending", &waveBlending); + good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonAText", &AText); + good_cfg = good_cfg && config_setting_lookup_string(theme, "buttonBText", &BText); + } + } + if (good_cfg) { + themeCurrent = (theme_t) { + .textColor = text, + .frontWaveColor = frontWave, + .middleWaveColor = middleWave, + .backWaveColor = backWave, + .backgroundColor = background, + .highlightColor = highlight, + .separatorColor = separator, + .enableWaveBlending = waveBlending, + .buttonAText = AText, + .buttonBText = BText, + //.buttonAImage = button_a_dark_bin, + //.buttonBImage = button_b_dark_bin, + .hbmenuLogoImage = hbmenu_logo_dark_bin + }; + } else { + themeCurrent = (theme_t) { + .textColor = MakeColor(255, 255, 255, 255), + .frontWaveColor = MakeColor(96, 204, 204, 255), + .middleWaveColor = MakeColor(66, 154, 159, 255), + .backWaveColor = MakeColor(73, 103, 169, 255), + .backgroundColor = MakeColor(45, 45, 50, 255), + .highlightColor = MakeColor(91, 237, 224, 255), + .separatorColor = MakeColor(219, 218, 219, 255), + .enableWaveBlending = 0, + .buttonAText = "\uE0A0", + .buttonBText = "\uE0A1", + //.buttonAImage = button_a_dark_bin, + //.buttonBImage = button_b_dark_bin, + .hbmenuLogoImage = hbmenu_logo_dark_bin + }; } break; } diff --git a/common/theme.h b/common/theme.h index 7ef20ab..e7bfb56 100644 --- a/common/theme.h +++ b/common/theme.h @@ -28,6 +28,7 @@ typedef enum } ThemePreset; color_t colorFromSetting(config_setting_t *rgba); + void themeStartup(ThemePreset preset); theme_t themeCurrent;