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
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 number | Resource 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 |
| Resource number | Resource 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 number | Position 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) |
Note: Your button's bitmap will be drawn 1 pixel higher and 1 pixel at the left of the position you specify to make place for an optional border indicating the state of the button (ie.: pressed or not).
Fonts
Starting from resource number 1400 is font 1. Font 2 starts from resource number 4400. The charset for both fonts is (quotes excluded):
"abcdefghijklmnopqrstuvwxyz-_&.0123456789 ()äö:,+%[]"
So letter A is resource number 1400 and 4400. Letter B is 1401 and 4401, and so on.
New: Support for national letters (ascii characters 127-255) is provided, starting with char 127 from resource 1453 for font 1 and 4453 for font 2. DBCS is not yet directly supported (a visual plugin can display DBCS though).