ES-DE/THEMES.md
2013-11-21 16:47:35 -06:00

122 lines
2.8 KiB
Markdown

Themes
======
EmulationStation allows each system to have its own "theme." A theme is a collection of resources defined in an XML document.
Themes are loaded like this:
1. Initialize to default values.
2. If `$HOME/.emulationstation/es_theme_default.xml` exists, load it.
3a. If there is a `theme.xml` present in the root of a system's `path` directory, load it.
3b. IF NOT, If `$HOME/.emulationstation/%SYSTEMNAME%/theme.xml` exists, load it.
Example
=======
```
<theme>
<listPrimaryColor>0000FF</listPrimaryColor>
<listSecondaryColor>00FF00</listSecondaryColor>
<listFont>
<path>./../all_themes/font.ttf</path>
<size>0.045</size>
</listFont>
<descriptionFont>
<path>./../all_themes/font.ttf</path>
<size>0.035</size>
</descriptionFont>
<backgroundImage>
<path>./theme/background.png</path>
<tile>true</tile>
</backgroundImage>
<headerImage>
<path>./theme/logo.png</path>
<tile>false</tile>
</headerImage>
<scrollSound>./../all_themes/scrollSound.wav</scrollSound>
</theme>
```
Themes must be enclosed in a `<theme>` tag.
All paths automatically expand `./` to the folder containing the theme.xml.
All paths automatically expand `~/` to the home directory ($HOME on Linux, %HOMEPATH% on Windows).
Stuff you can define
====================
Fonts
=====
Fonts are defined like so:
```
<resourceName>
<!-- Path is optional. -->
<path>./some/path/here.ttf</path>
<!-- Size is a percentage of screen height. Optional. -->
<size>0.035</size>
</resourceName>
```
`<listFont>` - Default size: 0.045.
`<descriptionFont>` - Default size: 0.035.
Colors
======
Colors are defined in hex, like this:
`<resourceName>00FF00FF</resourceName>`
or
`<resourceName>00FF00</resourceName>`
(without the alpha channel specified - will assume FF)
`<listPrimaryColor>` - Default: 0000FFFF.
`<listSecondaryColor>` - Default: 00FF00FF.
`<listSelectorColor>` - Default: 000000FF.
`<listSelectedColor>` - Default: 00000000.
`<descriptionColor>` - Default: 48474DFF.
Images
======
Images are defined like this:
```
<resourceName>
<path>./some/path/here.png</path>
<!-- Can be true or false. -->
<tile>true</tile>
</resourceName>
```
Pretty much any image format is supported.
`<backgroundImage>` - No default.
`<headerImage>` - No default.
`<infoBackgroundImage>` - No default.
Sounds
======
Sounds are defined like this:
`<resourceName>./some/path/here.wav</resourceName>`
Only .wav files are supported.
`<scrollSound>` - No default.
`<gameSelectSound>` - No default.
`<backSound>` - No default.
`<menuOpenSound>` - No default.
Nine Patches
============
EmulationStation borrows the concept of "nine patches" from Android (or "9-Slices"). Currently the implementation is very simple and hard-coded to only use 48x48px images (16x16px for each "patch"). Check the `data/resources` directory for some examples (button.png, frame.png).
-Aloshi
http://www.aloshi.com