Launcher: Added a default background option for themes

Currently in a theme the background files are named `background_<tab name>.png`. The problem is that sometimes retro-go adds new tabs, which causes themes to have missing backgrounds.

So I added a fallback. Theme can now provide a file named `background.png` that will be used when a tab-specific background isn't found. This also enables themes to provide a single background file if they don't want per-tab ones.
This commit is contained in:
Alex Duchesne 2025-03-17 13:25:39 -04:00
parent 66c194a9b0
commit df74f0734a
5 changed files with 66 additions and 6 deletions

View File

@ -12,6 +12,7 @@ A theme is a folder placed in `sd:/retro-go/themes` containing the following fil
````
/retro-go/themes
└── example
├── background.png
├── background_*.png
├── banner_*.png
├── logo_*.png
@ -21,11 +22,12 @@ A theme is a folder placed in `sd:/retro-go/themes` containing the following fil
| Name | Format | Description | Required |
|--|--|--|--|
| theme.json | JSON | Contains the theme metadata (description, author, colors, etc) | Yes |
| preview.png | PNG 160x120 | Theme preview to be displayed in the theme selector | No |
| background_X.png | PNG 320x240 | Launcher backgrounds where X is the name of the launcher tab | No |
| banner_X.png | PNG 272x24 | Launcher banners where X is the name of the launcher tab | No |
| logo_X.png | PNG 46x50 | Launcher logos where X is the name of the launcher tab | No |
| `theme.json` | JSON | Contains the theme metadata (description, author, colors, etc) | Yes |
| `preview.png` | PNG 160x120 | Theme preview to be displayed in the theme selector | No |
| `background.png` | PNG 320x240 | Launcher's default background | No |
| `background_<tab_name>.png` | PNG 320x240 | Launcher's per-tab backgrounds | No |
| `banner_<tab_name>.png` | PNG 272x24 | Launcher's per-tab banners | No |
| `logo_<tab_name>.png` | PNG 46x50 | Launcher's per-tab logos | No |
### theme.json

View File

@ -400,7 +400,9 @@ void gui_draw_background(tab_t *tab, int shade)
if (!tab->background)
{
tab->background = gui_get_image("background", tab->name);
tab->background = gui_get_image("background", tab->name); // Try background_<tabname>.png
if (!tab->background)
tab->background = gui_get_image("background", NULL); // Fallback to a background.png
tab->background_shade = 0;
if (tab->background && (tab->background->width != gui.width || tab->background->height != gui.height))
{

3
themes/classic/README.md Normal file
View File

@ -0,0 +1,3 @@
This is the classic theme built into retro-go at compile time.
It is meant to replicate the look of early retro-go builds.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

53
themes/classic/theme.json Normal file
View File

@ -0,0 +1,53 @@
{
"description": "Classic Retro-Go Theme",
"website": "https://github.com/ducalex/retro-go/",
"author": "ducalex",
"dialog": {
"__comment": "This section contains global dialog colors",
"background": "0x0010",
"foreground": "0xFFFF",
"border": "0x0010",
"header": "0xFFFF",
"scrollbar": "0xFFFF",
"shadow": "none",
"item_standard": "0xFFFF",
"item_disabled": "0x8410",
"item_message": "0xBDF7"
},
"launcher_1": {
"__comment": "This section contains launcher colors variant 1",
"background": "0x0000",
"foreground": "0xFFDE",
"list_standard_bg": "transparent",
"list_standard_fg": "0x8410",
"list_selected_bg": "transparent",
"list_selected_fg": "0xFFFF"
},
"launcher_2": {
"__comment": "This section contains launcher colors variant 2",
"background": "0x0000",
"foreground": "0xFFDE",
"list_standard_bg": "transparent",
"list_standard_fg": "0x8410",
"list_selected_bg": "transparent",
"list_selected_fg": "0x07E0"
},
"launcher_3": {
"__comment": "This section contains launcher colors variant 3",
"background": "0x0000",
"foreground": "0xFFDE",
"list_standard_bg": "transparent",
"list_standard_fg": "0x8410",
"list_selected_bg": "0xFFFF",
"list_selected_fg": "0x0000"
},
"launcher_4": {
"__comment": "This section contains launcher colors variant 4",
"background": "0x0000",
"foreground": "0xFFDE",
"list_standard_bg": "transparent",
"list_standard_fg": "0xAD55",
"list_selected_bg": "0xFFFF",
"list_selected_fg": "0x0000"
}
}