How to create my own skin?

Well, first of all, please let me point out there's the possibility to switch off the bitmaps in the settings, so you should try to set the colors so that it's a nice (or at least usable) skin even without the bitmaps.

And don't worry about this long documentation, it's not as hard as it seems. Maybe you can even skip most of the stuff, look into the demo skin, and use the Properties and List of Screen Elementss.

General Structure

The mps (MortPlayer Skin) file has generally the structure of a Windows INI file, i.e., there are

Screen elements (sometimes abbreviated as "elements") are everything that can be displayed, i.e. buttons, texts, the playlist and sliders.

Properties (of Elements) are e.g. background color, label, and so on.
With the MortPlayer, the function (e.g. stopping the playback or modifying the volume) is not a property, but defined by the element name. This means, the element "Play" will always start/pause the playback.
Properties are definined in the following syntax:

<element name><property name>=<value>
More details are explained later on in the chapter screen elements.

Every value of such an entry is of a certain value type.
Value types are e.g. a color, a filename for an image, a text, etc.

How use this document?

For the first time reading, you should read it from top to bottom, and just skim over the tables, to get an impression how it works and what's possible. Besides, I've tried to write it in a way that everything you need to know in a chapter is explained before.
When creating a Skin, you'll probably start with the Sections to create a framework with the general informations. Afterwards, you'll look up the names and properties of the screen elements you need, and from there browse, if necessary, to the value type.

How to deploy?

You can either use a common ZIP archive, which should contain the files like they're put to the MortPlayer directory, i.e. the .mps file in the root of the archive, and, if necessary, the image subfolder(s).
Or you can use an .mpz file. Which is simply a ZIP archive with renamed extension. The structure must be as described above, and the archive's filename must equal the contained .mps file (except for the extension, of course), e.g. Test.mpz must contain a Test.mps.
To have the skin listed on my page, just send it to mort@sto-helit.de. Some screenshots would be nice, too.

Value Types

Fonts

The definitions differ between the sections.
The used fonts are defined in the [Fonts] and [SymbolFonts] sections.
For an screen element, the index of the font defined there has to be told.
For more, read the describtion of the [Fonts] section and the [SymbolFonts] section.

Strings

Well, simply some text (only one line!).
If you don't use quotes, leading and trailing spaces will be removed.

Colors

For color values, there are two valid formats: For some properties, "transparent" is possible (see properties list). With this, the background image or color is shown.

Images

Image parameters are simply the file names of the images. The images are searched in a subdirectory of the application which is named like the Skin (without the mpl extension). So if you Skin is named MySkin.mpl, the images have to be located in "\Program files\MortPlayer\MySkin" (application path varies with locale settings and installation data).
Relative subdirectories (e.g. buttons\button1\pressed.gif) are possible.

Not fitting images are stretched to the element dimensions. But it's better to use fitting images, because this can lead to ugly artifacts.

Positions

The position of an element is given in the format "<left>,<top>,<width>,<height>", all in pixels, starting from the upper left corner (which is 0,0). If the position entry isn't given, or is invalid, the element isn't shown!

Switches / Booleans

Some entries, like the "ShowLabel" property, have some kind of a "Switch".
Valid values are "1", "TRUE", and "ON" (switched on), or "0", "FALSE", and "OFF" (switched off). Invalid values are treaded like "off".


Sections

[Fonts] Section

Before you can use a font, you must define it in this section (including font size and attributes like "bold" or "italic").
But first of all, you must tell the number of defined fonts with

Count=<number>

For each font follows an entry in the following format:

Font<number>=<font name>,<size>,<bold?>,<italics?>
whereby <bold?> and <italics?> must be either 1 (on) or 0 (off).
Example: "Font1=Arial,12,1,0" would be the font Arial, sized 12pt, and bold.

To refer to such font defined here, you just have to tell the number of the font.
For example, the entry "ExitFont=2" would set the font of the "Exit" button to use the font which is defined here as "Font2".

These "normal" fonts are used at almost all screen elements. Symbols (see SymbolFonts) currently are only used for some buttons. Which ones is marked in the list of elements. If an own label is defined for such a button, the "non-symbol" (i.e. one of this list) font is used.

[SymbolFonts] Section

Before you can use a symbol font, you must define it in this section.
Symbol fonts are used for the symbols on buttons like "Play/Stop" or "Pause".
But first of all, you must tell the number of defined fonts with

Count=<number>

For each font follows an entry in the following format:

Font<number>=<size>
Example: "Font1=14".

In former versions, bold and italics could be given optionally. These attributes are ignored since V3.0. Before, the bookdings font was used for symbols, now they are drawn by the program. To implement support for bold and italics wouldn't make up the effort.

To refer to a font defined here, you just have to tell the number of the font.
For example, the entry "PlayFont=2" would set the font of the "Play/Stop" button to use the font which is defined here as "Font2". (The "Play" button has a symbol, thus, a symbol font is used.)

Symbols fonts are currently only used for some buttons. Which ones is marked in the list of elements. If an own label is defined, the "non-symbol" font (i.e. from [Fonts]) is used.

[Default] Section

The Default section contains general informations and default values for all screen elements.

General informations

Default values for screen elements

All other possible values are the defaults for screen elements.
You can use all screen element entries.
This works for all [Screen<number>] sections and [SelScreen]. For example, if you define "ListBack=000000", the background of all lists is black - even in the selection dialog. Defaults can also be defined for single elements (e.g. TrackTitleText=ff0000 for red track titles in all screens), but usually this is less handy than defaults for group elements.
See also the entry priorities in the screen element entries description.

The [Screen<number>] Sections

(<Number> has to be replaces with a number (1, 2, 3, ...), of course)

For every screen, there has to be a screen section, so if you have two screens (Screens=2 in [Default] section), there must be a [Screen1] and a [Screen2] section.

Support for WM2003SE

To support VGA, landscape, or square screen, you can insert separate sections.
Screenn_VGA describes the VGA version, Screenn_LS means the landscape format, Screenn_square means the square format, Screenn_LS_VGA landscape in VGA resolution, and Screenn_square_VGA square screen in VGA resolution. To define an landscape variant of the first screnn, you have to include a [Screen1_LS] section, which, like [Screen1] contains all necessary data. The "general informations" (see below) will be taken from the corresponding [Screenn] section (i.e., you don't have to tell e.g. the name up to four times).
Note the landscape and square formats are variants, not additional screens. You can switch between landscape and portrait version of one screen simply by rotating the screen (Windows feature). Thus, a [Screenn] section is required, too.
If there's no VGA section, the screen is skaled on such devices. Sometimes the font might occur smaller or bigger, because the font informations can differ between the font sizes (e.g. omitted kerning, serifs, ...).
If there's no data for landscape format, MortPlayer either uses the square screen centered (if it exists) or the device will be switched back to portrait.

General informations

As with the [Default] section, there are general informations the the entries for the screen elements:

The display resolution is usually 240x320 or 480x640 (VGA) resp. 240x240 or 480x480 for square screen devices. The menu and title bar are each 26 (VGA: 52) pixels high. While MortPlayer supports "real VGA" (QVGA sizes on VGA displays), it uses the given background color fill the 26 pixels between the thinner bars and the "default VGA" position, i.e. with "real VGA", the VGA skin will be show "letter boxed". While it's technically possible to use the area between "default VGA" bottom and menu, or more by using "BackPos=0,26,...", you should refrain from it, so your skin will work fine on "unmodified" devices, too.
Examples:
QVGA ("old" screen size) portrait, fullscreen: 240x320
QVGA portrait, as window: 240x268
QVGA portrait, no menu or no title: 240x294
QVGA landscape, as window: 320x188
QVGA square, as window: 240x188
VGA landscape, as window: 640x376

Screen element informations

See screen elements.

[Alarm] Section

The contents of the alarm section is (almost) identical with the screen sections.
The special thing about it is only, that this screen is activated automatically if the alarm clock is "ringing", and isn't reachable otherwise. This is useful e.g. for a big clock and/or a big snooze button.
NextScreen or PrevScreen (both together is not possible!) both switch back to the screen that was active before the alarm screen.
All "extensions" for other screen sizes are supported, too, e.g. [Alarm_LS_VGA].

The [SelScreen] Section

This section defines how the selection dialog looks like. This dialog is shown if you press "Open" or for repeat/shuffle/preset, it the corresponding option is activated.

The rules described in the "screen elements" section apply here, too, except for the following exceptions:
This dialog consists of a title, a list box, and four buttons (Select, Back, Up, and Down). Since for most Skins it's fine enough to fit the colors and graphics, the elements are placed on their default position if the "Pos" property is omitted. While the buttons can be explicitly hidden by setting the position to "-1,-1,0,0", the title and list box must be shown.
If you don't specify a "TitleBack", it's transparent.
"SelBack" uses the color of "Back" as default, if it's not defined itself. In spite to group elements, this only works for the color, not for the other properties.
For the buttons, the "Label" property isn't supported.

To support the landscape format, there's the section [SelScreen_LS]. An explicit support for VGA is not implemented. I think it's enough if the dialog is created in a way that looks fine enough being drawn at a larger scale.

Since V3.3, hiding the title and menu bars is possible. (Fullscreen, HideTitle, HideMenu)

SelBackThe background
SelTitleThe title (the text above the list box)
SelListThe list box
ScrollThe scroll bars of the list box
SelSelectThe "Select" button
SelCancelThe "Back" button ("SelBack" was already used for background)
SelUpThe "Up" button (uses symbol font)
SelDownThe "Down" button (uses symbol font)

The [Wait] Section

In the Wait section, you can define how the wait box looks like. That's the thing that shows up e.g. at startup, displaying things like "Reading directory structure" and such.

The wait box consists of only one single label named "Wait". The position ("WaitPos=...") is relative to the upper left corner of the display. The background image is set with "WaitBackImg". All properties can be used.

As with [SelScreen], you can specify a [Wait_LS] section for landscape. If it's omitted, the wait screen of [Wait] is shown, but centered to the screen. For VGA devices, the QVGA settings are enlarged.

Please note that this box is shown at startup, too. Thus, it should look nice without a fitting background (like your Screen(s)).

In spite to the [Screen...], [Alarm] and [SelScreen] sections, any defaults in [Default] are ignored.


Entries for screen elements

All screen element entries are in the syntax

<element name><property>=<value>

All possible element names and their properties are in the list of screen elements. The necessary data type is told at the properties, too.

As an example, let's take the Play button, which starts the playback. In the list of buttons it's listed with the name "Play". In the list of properties for buttons there's among others the property "Back", which defines its background color. Additionally, next to the property stands the data type - for "Back", this is a color definition.
All this combines to a possible entry:

PlayBack=ffff00
This will set the background color of the Play button to yellow (yellow = red + green).

Group elements

For some kinds of elements, some properties can be defined for all elements of that type. This is done by replacing the name of a single element with a "group name", which includes all screen elements of a kind.
E.g. for buttons, this is the group name "Btn". This means, you can set the background color of all buttons very easyly with

BtnBack=<color>

In the lists of elements all group names are listed.
In the lists of properties you're told for which properties (mainly colors and fonts) it works.
Of course every property set this way can be overwritten for single elements.

Pseudo elements

"Pseudo elements" describe alternate states of "usual" elements.
For example, the Play button can operate as Pause (if something is played) and Resume (during a pause). This is signaled to the user with a corresponding symbol (for other elements sometimes labels). If the symbols shouldn't be drawn by the program (e.g. for engraving effects, structures, different colors, ...), you can use the pseudo elements "Pause" and "Paused" to set the images for Pause and Resume.
The pseudo elements are listed in the list of elements, too. They are marked and usually given right below the appropiate "real" element.

Priority of entries for screen elements

As shown, there are different possibilities to set the property of an element.
MortPlayer works in the following order to find the entry that is used.
The first found entry is used, the rest of the list is ignored.

An example:

[Default]
BtnBack=ffffff
[Screen1]
PlayBack=0000ff

By this, all buttons are white, except for the Play button on the first Screen, which is blue.


List of all screen elements and their properties

Here is listed for each element type, which elements exist and which properties are possible.

Backgroundelementsproperties
Buttonselementsproperties
Labelselementsproperties
Sliderselementsproperties
Listselementsproperties
Scroll barselementsproperties

Background

List of elements

In the usual Screens, there is just one element for the background, which is "Back". For the selection screen, it's "SelBack".

BackThe background
SelBackThe background of the selection dialog

Background - List of properties

Background images should be in a fitting size. Further informations about the default screen sizes are in the description of the [Screen] sections under "general informations".

Back in the [Default] section is used as default for SelBack. But this only works for the background color, not for the entire element (like with group elements).

The following properties are possible:

Pos=positionThe background location. Usually, you should omit this setting. If given, it defines the position and size of the player window. By this, you can support non default screen sizes or create "popup" windows (e.g. for navigation systems).
none=colorThe background color. The entry is only "Back" (or "SelBack"), because "(Sel)BackBack" would look quite stupid
Img=backgroundA background image

Buttons

List of elements

In MortPlayer, the function of a button is defined by its name. Thus, for each function there's an own button.

For some buttons, there are "pseudo elements", which can be used to define the images for an alternative state. For example, for "Play" and "Stop" the same button is used. Its function changes depending on whether something is played or not. If you want special effects, like an engaged or different colored button when playing, you have to enter both "PlayImg" and "StopImg". If the Img property of a pseudo element isn't defined, the images of the main element is used also in this state (e.g. "PlayImg" while playing).

'P' marks the "pseudo elements". With those, images for an alternate state can be defined.
'L' marks buttons which allow own labels.
'S' marks buttons which use the symbol font by default. If an own label is given (Label=...), a non-symbol font is used.
Buttons with parenthesized names shouldn't be used. They're only for backward compatibility.

Btn   Group element. A property defined for this element is the default for all buttons
BtnSymbolS  Special Group element. Only the "Font" property is supported. It sets the default symbol size (given in pixels, like a font size) for all buttons which use symbols (like Play, Stop, etc.)
OpenS LShows the "Open" dialog
OpenText  LLike "Open", but shows a text label instead of the symbol.
NextScreen   Switches to the next screen (usually labeled with the screen name of the next screen). See also comment!
PrevScreen   Switches to the previous screen (usually labeled with the screen name of the preceding screen). See also comment!
SwitchScreen  LShows a selection of all screens if there are more than two. If there are only two, the other one is activated. See also comment!
ChooseSkin  LShows the Skin selection (like "Select"->"Switch Skin" in the menu)
LoadSkin  LLoads a Skin given with "LoadSkinName" and optionally "LoadSkinScreen". See also comment!
Shuffle   The shuffle mode button
Repeat   The repeat mode button
SwitchSkip   Switches the function of Next, Prev, DirNext, and DirPrev between skipping files or lists.
SwitchSkipToFile P The "SwitchSkip" button in "Skip lists" mode. The only property that works with this pseudo element is "Img". All other properties are taken from "SwitchSkip".
Changer   Switches between Changer and Playlist mode.
ChangerPM P The Changer/Playlist mode toggle in Playlist Mode. The only property that works with this pseudo element is "Img". All other properties are taken from "Changer".
PlayS  The play/pause button.
PauseSP The play button, while something is played (i.e. causes pause). The only property that works with this pseudo element is "Img". All other properties are taken from "Play".
PausedSP The play button, while something is paused (i.e. causes resume). The only property that works with this pseudo element is "Img". All other properties are taken from "Play".
StopS LThe stop button.
PrevS  The button to skip to the previous track.
PrevDirSP The "Prev" button when set to skip lists (see SwitchSkip). The only property that works with this pseudo element is "Img". All other properties are taken from "Prev".
NextS  The button to skip the the next track.
NextDirSP The "Next" button when set to skip lists (see SwitchSkip). The only property that works with this pseudo element is "Img". All other properties are taken from "Next".
DirPrevS  Skips to the previous list.
DirPrevFileSP The "DirPrev" button when set to skip files (see SwitchSkip). The only property that works with this pseudo element is "Img". All other properties are taken from "DirPrev".
DirNextS  Skips to the next list.
DirNextFileSP The "DirNext" button when set to skip files (see SwitchSkip). The only property that works with this pseudo element is "Img". All other properties are taken from "DirNext".
FastForwardS  Fast forward (skip by time in settings, defaults to 5 seconds).
RewindS  Rewind (skip back by time in settings, defaults to 5 seconds).
Effects   Switch presets or show presets list
EffectsFx  LShows the sound effects (temporary preset)
EffectsEq  LShows the equalizer (temporary preset)
VolumeUp  LIncreases volume
VolumeDown  LDecreases volume
ExitS LCloses the MortPlayer
MinimizeS L"Minimizes" (hides) the MortPlayer
PowerOff  LStops playing and turns off device
Menu  LShows the popup menu
Favorites  LShows the favorites management
Settings  LShows the settings
Sleep   Shows the settings for sleep timer and alarm clock. The label countains alarm clock time and state, as well as the power off countdown if it's active. So keep some space for it...
Snooze  LSwitches off the deivice for a selectable timespan and then alerts again
AddBookmark  LAdds a bookmark
Bookmarks  LShows the bookmarks management
Streams  LShows the streams management
Presets  LShows the preset management
Add  LThe "+" button (add to playlist)
Remove  LThe "-" button (remove from playlist)
MoveSelUpS  Moves up the selection bar in the playlist
MoveSelDownS  Moves down the selection bar in the playlist
DeleteFile  LDeletes the selected file (both from playlist and file system)
TopS LThe "arrow up" button (move to top in playlist)
UpS LThe "arrow up" button (move up in playlist)
DownS LThe "arrow down" button (move down in playlist)
BottomS LThe "arrow up" button (move to bottom in playlist)
SaveAs  LSave the current playlist into a file whose name and position has to be entered
Save  LSave the current playlist (no filename query if an .mpl list was modified)
SelSelect   The "Select" button of the selection dialog. Only possible in SelScreen section.
SelCancel   The "Back" button of the selection dialog. Only possible in SelScreen section.
SelUpS  The "Up" button of the selection dialog. Only possible in SelScreen section.
SelDownS  The "Down" button of the selection dialog. Only possible in SelScreen section.
(Directories)  Llike "Favorites"
(PlayDir)  LLike "OpenText"
(SelectDir) P Not supported (PlayDir in Changer Mode)
(ShufflePlay)  LPlays all files in favorites shuffled in one playlist
(SortPlay)  LPlays all files in favorites sorted in one playlist
(SwitchSkipPlayDirs) P Not supported (SwitchSkip in Playlist Mode)
(Pause)   In former versions, Pause was a "real" button, while "Stop" wasn't. If there's a "PausePos" entry, all "Pause" informations are used for the Stop button (for backward compatibilty)

Notes to Skin/screen switch buttons:
If only "NextScreen" or "SwitchScreen" is used, they are handled equally: If there are less than three screens or the user disabled the Switch Screen option in "Settings"-"Handling", NextScreen is shown, otherwise SwitchScreen is shown, no matter which one is defined in the Skin.
Also, if only one of those buttons is defined, and PrevScreen is defined, too, that button will become "NextScreen" if the "SwitchScreen" button is shown. Because otherwise, there would be "Switch screen" (the selection) and "Previous screen", but no "Next screen" (since it's replaced with "Switch screen"), which is usually more often used than "Previous screen".
If both "NextScreen" and "SwitchScreen" are used in your screen, there'll be no changes at all.

Since V3.3, you can define the screen to which NextScreen or PrevScreen should switch. This is done by something like "NextScreen=3" or "PrevScreen=1". This option only has an effect if the user doesn't use extended screen switching or selection dialog for more than two screens per Skin.

Also since V3.3, there's "LoadSkin". This allows to switch to a Skin given in your Skin file. To do this, you have to enter the entry "LoadSkinName". For example, with "LoadSkinName=Night" the LoadSkin button will switch to the Night skin. Optionally, you can also define the contained screen you want to switch to with "LoadSkinScreen=screen no.". If the user didn't install the other Skin, an error message will be shown.

Buttons - List of properties

All elements of the type "Button" can have the following properties:

'G' marks properties which can be defined as defaults for the group element "Btn".
'S' marks properties which can be defined as defaults for the group element "BtnSymbol".
'P' marks properties which are allowed for the pseudo elements "ChangerPM", "SwitchSkipToFile", "SwitchSkipPlayDirs", "Pause", "Paused", "PrevDir", "NextDir", "DirPrevFile", "DirNextFile", and "SelectDir".
'T' marks propierties, where the "transparent" value is possible.

Pos=position    The position of the button
Back=colorG  TThe background color
Border=colorG   The border color
Text=colorG   The text color when the button is enabled
TextPressed=ColorG   The text color when the buttonn is pressed (if omitted, the Border color is used)
TextDisabled=colorG   The text color when the button is disabled
Font=font indexGS  The font for the button text.
SymbolFont=font indexG   Only for the group element "Btn". "BtnSymbolFont" sets the default font for all buttons with symbols (Play, Pause, etc.)
Img=default,pressed,disabled  P Images for the default, pressed and disabled state
ImgPos=position    The position of the image, relative to the button area (must be inside the button area)
ShowLabel=switchG   Only used if images or transparency are/is used. If you set this to "off", the text isn't drawn by the program. You shouldn't use this for buttons with varying labels, such as Play/Stop, Pause, and Repeat mode unless you also define images for the "pseudo buttons"
ShortLabel=switchG   Only available for Preset, Shuffle, and Repeat buttons. If enabled, short labels are used, e.g. "R trck" instead of "Repeat track >>".
LabelPos=position    The position of the label text, relative to the button area (everything outside of the button area will be clipped)
Label=string    The label text. Only supported for buttons which are marked with "L" in the element list.
Align=left|center|rightG   Alignment of the text.

Labels

List of elements

Labels with parenthesized names shouldn't be used. They're only for backward compatibility.

LabelGroup name. A property defined for this element is the default for all labels
TrackNameThe track name (either from tag information, or, if not available, the file name without path and extension)
TrackFileThe file name without path and extension (shouldn't be shown on a screen with TrackName, since it looks silly if the file name is shown double for files without tag informaitons)
TrackArtistThe artist (tag info)
TrackAlbumThe album (tag info)
TrackYearThe release year (tag info)
TrackNumberThe track number (tag info), preceded with "Track #" (english) or "Lied Nr. " (german).
TrackCombinationAny combination of track title, artist and album (for details, look at the description for the "label" property). If there are no informations in the file, the file name is displayed.
TrackTimeThe time already played. If you show this field, the time will not be displayed in the position slider.
TrackLengthThe length of the current track.
TrackChannelsChannels of the track (e.g. 2 channels).
TrackBitrateBitrate of the track (e.g. 192kbs). Will be wrong and not modified for VBR!
TrackSamplingRateSampling rate of the track (e.g. 44100).
TrackPathThe path where the track is located in (only the directory name itself, e.g. "My music" for "My documents\My music".
PlaylistNameEither "User defined playlist" or the directory name. This is used in the default skin above the playlist.
NextTrackDisplays the file name of the upcoming track.
VolumeLabelShows the volume in percent, handy in combination with VolumeUp/VolumeDown buttons
PreampLabelShows the preamp in percent
ClockA clock (HH:MM, 24 hours)
CoverA cover (cover.jpg/.png im Verzeichnis oder playlistname.jpg/.png für Playlists). An image (CoverImg) or the background (CoverBack=transparent) as well as the label text ("No cover available") are only shown if no cover is found. The text can be supressed with "CoverShowLabel=0" in this case, too.
SelTitleThe title in the selection dialog. Only possible in SelScreen section.
WaitThe wait display. Only possible in Wait section.
(TrackPathFile)Obsolete for "PlaylistName"

Labels - List of properties

All elements of the type "Label" can have the following properties:

'G' marks properties which can be defined as defaults for the group element "Label".
'T' marks propierties, where the "transparent" value is possible.
Pos=position  The position of the label
Back=colorGTThe background color
Border=colorG The border color (transparent = no border)
Text=colorG The text color
Font=font indexG The font for the text.
Img=background  A background image
Label=string  For the elements TrackYear, TrackNumber, and NextTrack: Sets the prefix, e.g. "Year: " or "Track No.: "
For the element TrackCombination: Defines what parts and how the tag informations are shown. The syntax is "separator|field|field|...". The "separator" is put between the fields if they aren't empty. For the fields, there are the placeholders %track% (song name), %artist%, and %album%. If there's no tag information for a placeholder, the whole field is omitted.
Line breaks can be used with "\n" (without quotes).
Example: "_|%track%|(%album%)|by %artist%" will result in "Song name_by Singer" if no album name was given in the tag informations.
Default is "\n|%track%|%artist%".
With all other labels, this property is ignored.
LabelPos=position  The position of the text, relative to the label area
Align=left|center|rightG Alignment of the text. Needs V2.1


Sliders

List of elements

SliderGroup name. A property defined for this element is the default for all sliders
PositionThe track position
VolumeThe volume
PreampThe preamp
BatteryBattery meter
PhoneSignalPhone signal strength (only shown on PhoneEdition devices)

Sliders - List of properties

All elements of the type "Slider" can have the following properties:

'G' marks properties which can be defined as defaults for the group element "Slider".

Pos=position The position of the slider
Back=colorGThe background color. Transparency is possible.
Prog=colorGThe background color for the progress area. Transparency is possible.
Border=colorGThe border color. Transparency is possible.
TextBack=colorGThe background color for the label. If not given, it's transparent, i.e., the progress or background color/image is visible behind the text. You should use this property only if the contrast would be to bad without.
Text=colorGThe label text color
Direction=right|up|left|downGThe direction in which the progress "grows". For example, if "up" is chosen, the bottom is "nothing" (silent, track start, resp. battery empty) and top "everything" (loud, track end, battery full/loading)
ShowLabel=switchGIf you set this to "off", the text isn't drawn by the program. This is nice for volume sliders which show what they do (e.g. ascending graphics), but you shouldn't switch off the progress text, because this will hide the playing time
As a "special feature", you can set "%" (e.g. "VolumeShowLabel=%"), which'll show the current percentage of the slider position.
There's a special handling for the position slider: PositionShowLabel hides only the standby text ("Track.Pos."). To hide the time display, use PositionShowTime=FALSE or use a TrackTime label in the Screen.
Font=font indexGThe font for the text.
Img=background,progress[,grip[,grip pressed[, grip disabled]]] Images for background and progress. The progress image is shown only to the corresponding left part. In between the progress and the background, optionally a "grip" is shown.
The grip image must be as high as the slider, the width doesn't matter as long as there's room for it to move... (Or vice versa, if you use up or down as direction)
If you don't want to use a grip, just omit the data, e.g. "VolumeImg=back.png,prog.png". It's similar with special images for pressed or disabled grips - if you omit them, the default grip is used.
If you don't know what I mean, just look at the volume images and how they work in the demo Skin... I know this doesn't enable all the nice effects possible with WinAmp, but it saves a lot of memory (images!) and work for both you (just two or three images to create...) and the program (well, and me... ;)).

Lists

List of elements

ListGroup name. A property defined for this element is the default for all lists
PlaylistThe playlist
SelListThe selection list. Only possible in SelScreen section.

The possible properties for liste are listed here

Lists - List of properties

All elements of the type "List" can have the following properties:

'G' marks properties which can be defined as defaults for the group element "List".
'T' marks propierties, where the "transparent" value is possible.

Pos=position  The position of the list
Back=colorGTThe background color
Border=colorGTThe border color
Text=colorG The text color for nonselected items
SelText=colorG The text color for selected items
SelBack=colorGTThe background color for selected items.
Font=font indexG The font for the items.
The Font property of the playlist can be overwritten by the user
Img=background  A background image. Scroll bars and selection bar will be drawn over it.

Scroll Bars

List of elements

ScrollThe scroll bars of the list box.

The possible properties for scroll bars are listed here

Scroll Bars - List of properties

There's only one Element of the type "Scroll Bars", which is "Scroll". It supports the following properties:

'T' marks propierties, where the "transparent" value is possible.

Width=number The width of the vertical scroll bar (should be an odd number, else the arrow might look funny)
Height=number The height of the horizontal scroll bar (should be an odd number, else the arrow might look funny)
Back=colorTThe background color (the slider area)
Border=colorTThe border color (should be the same as the list border)
Box=colorTThe color of the position box
BoxBorder=color The border color of the position box. This color is also used for the box itself when it is dragged.
Arrow=color The color for the arrows
ArrowPressed=color The color for pressed arrows (if omitted, ArrowBox is used)
ArrowBox=color The color for the box around the arrows
ArrowUpImg=default,pressed Images for the up arrow. Size is ScrollBarWidth x ScrollBarWidth
ArrowDownImg=default,pressed Images for the down arrow. Size is ScrollBarWidth x ScrollBarWidth
ArrowLeftImg=default,pressed Images for the left arrow. Size is ScrollBarHeight x ScrollBarHeight
ArrowRightImg=default,pressed Images for the right arrow. Size is ScrollBarHeight x ScrollBarHeight