The Hitchhiker's Guide to PM123 skins

This document isn't meant to be a step-by-step guide to creating PM123 skins. Rather it's meant to be a throughout reference. We suggest you study some of our example skins (if you don't have a net connection, please look for PM123SKN.ZIP in a BBS near you) to see how skins are constructed. Basically skins are constructed from a .SKN file and one of more bitmap files (.BMP, .GIF, etc) or a .PAK file (which is a bundle file that wraps the skin's bitmaps into one file).

.SKN file structure


The .SKN file is a skin definition file. It contains the filenames of all bitmaps to be replaced, all new bitmap positions and other definitions. It's a simple text file. Lines beginning with ; or # are considered as comments.

If you want to change a bitmap, it's defined like this:

resource,bitmap

For example, replacing the background:

1900,mybmp/bg.bmp

If you want to change a bitmap position, it's defined like this:

position:x,y

For example, changing volume bar's location to (10, 10):

25:10,10

Special resources can be toggled on like this:

resource,1

Special resources that control PM123 interface


Resource numberResource explanation
1 Bright 3D shade color, in format RRR/GGG/BBB
2 Dark 3D shade color, in format RRR/GGG/BBB
3 (obsolete)
4 Color of seek slider border, in format RRR/GGG/BBB
5 Playlist position indicator color, in format RRR/GGG/BBB
6 Disable 3D-shading of the "statistics area"
7 Disable 3D-shading of the volume bar
8 A string to be displayed on skin load
9 Disable 3D-shading of the player window
10 Disable the seek slider border
20 Width of the filename display (in characters) for regular mode
21 Width the seek slider area in pixels
22 Width of the filename display (in characters) for small mode
23 Initial font, 0 or 1
24 Space between main timer digits (in pixels).
26 Make volume bar horizontal
27 Give volume bar a handle you can grab (resource 1620)
28 Draw bitrates with digits from resource 1830 to 1839
29 Draw playlist indicator with resources 1660 to 1669.
30 The bundle file for this skin (.PAK file) created with PM123 Skin Utility

Bitmap resources


Resource numberResource explanation
1200 to 1209 Digits 0-9 for the main ("big") timer.
1210 Main timer separator ':'
1211 Darkened main timer separator ':'
1400 to 1445 Font 1, charset
"abcdefghijklmnopqrstuvwxyz-_&.0123456789 ()äö:"
('a' is 1400, 'b' is 1401, and so on)"
1601 Stereo mode
1602 Mono mode
1608 No channels (unknown, no file loaded) mode
1610 Seek slider handle
1611 Background bitmap for small mode (if not defined, default background will be used)
1612 Background bitmap for tiny mode (if not defined, default background will be used)
1620 Volume slider handle bitmap (only if enabled)
1630 Volume bar
1631 Indicator for single file play
1632 Indicator for playlist play
1633 Indicator for no file loaded
1640 to 1649 Digits 0-9 for "time left" and "playlist" left timers
1650 Separator (':') for "time left" and "playlist" left timers
1651 Dark 0 digit for "time left" and "playlist" left timers
1652 Darkened separator (':') for "time left" and "playlist" left timers
1660 to 1669 Digits 0-9 for playlist total/index displays. Only used if resource 29 is enabled.
1800 to 1814 Bitmaps for bitrates 0 (no bitrate), 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256. Not used if resource 28 is enabled.
1820 Bright "led" bitmap (displayed when PM123 has focus)
1821 Dark "led" bitmap (displayed when PM123 is not focused)
1830 to 1839 Digits 0-9 for bitrates, if resource 28 is enabled.
1900 The background bitmap. Resources 1611 and 1612 override this in small and tiny mode.
1901 "Time left", dark.
1902 "Time left", bright.
1903 "Playlist left", dark.
1904 "Playlist left", bright.
1906 New: Slider shaft (drawn before drawing slider handle)
Only regular mode
1310, 1300 Play button up/down
1312, 1302 Pause button up/down
1313, 1303 Rewind button up/down
1314, 1304 Fast forward button up/down
1315, 1305 Power button up/down
1316, 1306 Previous button up/down
1317, 1307 Next button up/down
1318, 1308 Shuffle button up/down
1319, 1309 Repeat button up/down
1320, 1321 Playlist button up/down
1322, 1323 Stop button up/down (hidden by default)
1324, 1325 Load file button up/down (hidden by default)
Small/tiny mode
5510, 5500 Play button up/down
5512, 5502 Pause button up/down
5513, 5503 Rewind button up/down
5514, 5504 Fast forward button up/down
5515, 5505 Power button up/down
5516, 5506 Previous button up/down
5517, 5507 Next button up/down
5518, 5508 Shuffle button up/down
5519, 5509 Repeat button up/down
5521, 5520 Playlist button up/down

Resource (bitmap) position settings


Position numberPosition explanation
1 Main timer
2 Main window size (sx, sy)
3 Play button, regular
4 Pause button, regular
5 Rewind button, regular
6 Fast forward button, regular
7 Playlist button, regular
8 Repeat button, regular
9 Shuffle button, regular
10 Previous button, regular
11 Next button, regular
12 Power button, regular
13 Text display, regular
14 Text display, small
15 "Time left" dark
16 "Time left" bright
17 "Playlist left" dark
18 "Playlist left" bright
19 "Time left" timer
20 "Playlist left" timer
21 Playmode indicator (no file/single/playlist)
22 Led bright
23 Led dark
24 Seek slider
25 Volume bar
26 No channels indicator
27 Mono indicator
28 Stereo indicator
29 Bitrate indicator
30 Main window size (sx, sy), small mode
31 Main window size (sx, sy), tiny mode
32 (unused)
33 Play button, small
34 Pause button, small
35 Rewind button, small
36 Fast forward button, small
37 Playlist button, small
38 Repeat button, small
39 Shuffle button, small
40 Previous button, small
41 Next button, small
42 Power button, small
43 to 52 (unused)
53 Play button, tiny
54 Pause button, tiny
55 Rewind button, tiny
56 Fast forward button, tiny
57 Playlist button, tiny
58 Repeat button, tiny
59 Shuffle button, tiny
60 Previous button, tiny
61 Next button, tiny
62 Power button, tiny
63 Playlist index indicator (1 of 2)
64 Playlist total indicator (1 of 2)
65 Stop button, regular (hidden by default)
66 Load file button, regular (hidden by default)
67 Location for the slider shaft (bitmap 1906)

Fonts


Starting from resource number 4400 is font 1. Font 2 starts from resource number 5000. The charset for both fonts is (quotes excluded):

"abcdefghijklmnopqrstuvwxyz-_&.0123456789 ()„”:,+%[]"

So letter A is resource number 4400 and 5000. Letter B is 4401 and 5001, and so on.

New: Support for national letters (ascii characters 127-255) is provided, starting with char 127 from resource 4453 for font 1 and 5053 for font 2. DBCS is not yet directly supported (a visual plugin can display DBCS though).