You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
519 lines
22 KiB
519 lines
22 KiB
############ GQmpeg skin specifications file. ############
|
|
|
|
(A quick reference of what is required in the image files
|
|
for each widget type is located at the end of this document )
|
|
|
|
Skins are simply a directory which contain image files and
|
|
a skindata file (named skindata).
|
|
|
|
All skin features are configured in the skindata file.
|
|
|
|
Note: when using an alternate skin, it's specs go into a file named
|
|
skindata_alt, it uses the same format as the skindata file. Pressing
|
|
the Alt_Skin_Button button switches between the two skins.
|
|
(each skin must contain an Alt_Skin_Button if you want the alternate
|
|
skin feature to work)
|
|
|
|
Any line can be made into a comment by prefacing it with a '#' symbol.
|
|
|
|
All image files can be any size, GQmpeg will calculate the drawing data
|
|
for you. Skins can have any size buttons, display items, digits,
|
|
fonts, etc. The files can be of any type supported by gdk-pixbuf (xpm, png,
|
|
jpeg, gif, etc.) The recommended file format is png.
|
|
|
|
Prelights are optional on all items that support them. A prelight is an
|
|
alternate image that is displayed when the mouse is over a pressable
|
|
item (button, slider, dial). For example, the default skin includes prelights
|
|
for all buttons, notice the buttons 'brighten' when the mouse moves over
|
|
them.
|
|
|
|
Every image within a file must have the same width and height, for example
|
|
if the play button was 30 by 20, the resulting image file would be
|
|
180 by 20. (6 button states total, including status lights and prelights)
|
|
|
|
Addendum: If the above button was specified with the status light and
|
|
prelight options as false, the resulting image file would be
|
|
60 by 20. (2 button states total, 1 for normal, 1 for pressed)
|
|
|
|
Note that images for buttons and numbers contain the items horizontally,
|
|
the images for items contain the items vertically, the image for a font
|
|
contains 3 rows of 32 items, and the slider contains the background and
|
|
handle horizontally or vertically (depending if a slider is horizontal
|
|
or verticle, respectivley).
|
|
|
|
Only the background image is required, all other elements are optional
|
|
(although it would be nice to always have a play button :)
|
|
If you do not want an item displayed, comment out the line with
|
|
a '#' symbol.
|
|
|
|
IMPORTANT:
|
|
Slots enclosed in "[]" are optional, but are so only to retain backward
|
|
compatibility of skins. Please specify all options for each type as in the
|
|
future the options enclosed in "[]" may no longer be "optional". Please
|
|
separate each option with a single space, and do not add extra characters
|
|
at the end of the line, as the extra info may be mistaken for expanded
|
|
options in the event that options are added to the skin spec in the future.
|
|
|
|
PROPER TRANSPARENCY:
|
|
The main background image uses a threshold of 1 (out of 256 levels) for the
|
|
window shape, the rest is used for partially overwiting the background when
|
|
the Transparency option is true.
|
|
|
|
Portions of items, buttons, sliders, numbers, and text that never change and
|
|
are the same as the background image should be set transparent so that the
|
|
'force transparent' option works properly.
|
|
|
|
############# skindata file format #################
|
|
|
|
Note: For an example skindata file see the file skindata-template.
|
|
|
|
x and y are always the position in the window (use the -skinhelp command line
|
|
option to have GQmpeg print out the mouse coordinates as the mouse moves)
|
|
|
|
And finally, to what is available:
|
|
|
|
==========================
|
|
Main options
|
|
==========================
|
|
|
|
Background: filename
|
|
|
|
filename
|
|
The background image file, the window will be the same size as this image.
|
|
Add transparency to this image for shaped skins, the cutoff threshold for
|
|
transparency is 1 on images with muli-level alpha (like in png).
|
|
|
|
Transparency: flag
|
|
|
|
flag
|
|
True or False, this specifies if the background image (above) has a multiple
|
|
level alpha channel (as in png files) to apply when overwriting the root
|
|
window's background.
|
|
|
|
Mask: filename
|
|
|
|
(this is DEPRECATED!, for transparent skins just add transparency to the
|
|
Background image, Mask remains merely for backwards compatibility)
|
|
filename
|
|
The mask image file, only needed for skins which are shaped windows (not
|
|
rectangular). Contains a transparency mask for the main window.
|
|
|
|
==========================
|
|
Text display
|
|
==========================
|
|
|
|
Title/Album/Artist/Genre: filename length [extended] x y
|
|
|
|
filename
|
|
Should contain a fixed font. With 3 or 6 lines of 32 characters each,
|
|
these are the characters, they are listed in three rows so you can copy
|
|
and past them into you graphics program. (first character in the top line
|
|
is a space)
|
|
|
|
!"#$%&'()*+,-./0123456789:;<=>?
|
|
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
|
|
`abcdefghijklmnopqrstuvwxyz{|}~
|
|
|
|
When extended is TRUE these are the 3 addition lines of international chars
|
|
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
XXXXXXX FIXME! TO DO! XXXXXXXXXX
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
length
|
|
Maximum number of characters to display in window.
|
|
|
|
extended
|
|
(optional, absence defaults to FALSE)
|
|
When TRUE, the image contains 3 additional lines for internation
|
|
characters. The result is 6 lines of 32 characters each.
|
|
|
|
==========================
|
|
Buttons (that optionally include an 'active' mode)
|
|
==========================
|
|
|
|
Play/Pause/Stop/Shuffle/Repeat/
|
|
Time_Remaining/Time_Total_Button: filename prelight status_light x y [clip_filename]
|
|
|
|
filename
|
|
Image file. Contains the buttons horizontally in this order:
|
|
normal, normal pressed, normal active, normal active pressed, prelit, prelit active
|
|
(the actual number of images may vary, see next two options)
|
|
|
|
prelight
|
|
TRUE or FALSE, specifies whether or not prelight buttons are available, If
|
|
FALSE, do not include the last two prelight buttons in the image file.
|
|
|
|
status_light
|
|
TRUE or FALSE, specifies whether or not button lights are available. If FALSE,
|
|
do not include the 'lit up', 'lit down', and 'prelight lit up' buttons in the
|
|
image file.
|
|
|
|
clip_filename (optional)
|
|
When specified, defines an image with transparency to be used as the button's
|
|
draw clip mask. The clip mask is placed at location x, y The transparency is used to
|
|
indicate the portions of the button that should be visible (drawn) and respond to
|
|
mouse clicks. If the image contains a multiple level alpha channel, the mask is reduced
|
|
such that levels above 50% are visible and those below 50% are not visible.
|
|
|
|
==========================
|
|
Buttons (standard)
|
|
==========================
|
|
|
|
Next/Prev/FF/RW/Playlist/Config/Iconify/Mixer/Exit/Alt_Skin/Volume_Up/Volume_Down/
|
|
Balance_Left/Balance_Right_Button: filename prelight x y [clip_filename]
|
|
Preset_1_/.../Preset_10_Button: filename prelight x y [clip_filename]
|
|
|
|
filename
|
|
Image file. Contains the buttons horizontally in this order:
|
|
normal, normal pressed, prelit
|
|
(the actual number of images may vary, see next option)
|
|
|
|
prelight
|
|
TRUE or FALSE, specifies whether or not prelight buttons are available. If
|
|
FALSE, do not include the last prelight button in the image file.
|
|
|
|
clip_filename (optional)
|
|
When specified, defines an image with transparency to be used as the button's
|
|
draw clip mask. The clip mask is placed at location x, y The transparency is used to
|
|
indicate the portions of the button that should be visible (drawn) and respond to
|
|
mouse clicks. If the image contains a multiple level alpha channel, the mask is reduced
|
|
such that levels above 50% are visible and those below 50% are not visible.
|
|
|
|
|
|
==========================
|
|
Items (with fixed number sections)
|
|
==========================
|
|
|
|
Stereo/Shuffle/Repeat/Mpegversion/Mpeglayer/Mpegmode/Status/
|
|
Minus/Total_Item: filename x y
|
|
|
|
filename
|
|
Image file. Contains the items vertically in the order below:
|
|
|
|
Stereo_Item: blank, mono , stereo
|
|
Shuffle_Item: off, on
|
|
Repeat_Item: off, on
|
|
Mpegversion_Item: blank, 1, 2
|
|
Mpeglayer_Item: blank, 1, 2, 3
|
|
Mpegmode_Item: blank, stereo, joint-stereo, dual-channel, single-channel
|
|
Status_Item: stop, pause, play
|
|
Minus_Item: time counts up, time counts down
|
|
Total_Item: time refers to current song only, to total playlist, to live
|
|
|
|
==========================
|
|
Items (animation oriented)
|
|
==========================
|
|
|
|
Load_Item: filename sections x y
|
|
|
|
filename
|
|
Image file. Contains animations for the following items:
|
|
|
|
Load_Item: Animation for loading playlist in background.
|
|
|
|
sections
|
|
The total number of sections in the image file. The first section is always
|
|
blank (animation is off), the subsequent images are cycled through to create
|
|
the animation. This number is a total count, so it will be 1 (first is always
|
|
blank) plus the number of animation frames.
|
|
|
|
==========================
|
|
Items (value oriented)
|
|
==========================
|
|
|
|
Position/Volume/Balance_Item: filename sections x y
|
|
|
|
filename
|
|
Image file. Contains images vertically in the order representing the lowest to
|
|
highest values.
|
|
|
|
sections
|
|
The number of images within the file, recommended number of images is 16 to 32.
|
|
The most possible usable images is 101 for volume and blance (from volume=0%
|
|
to volume = 100%).
|
|
|
|
Note:
|
|
These items must be listed before their respective sliders:
|
|
(see Position/Volume/Balance_Slider).
|
|
|
|
==========================
|
|
Digit placeholder (for convenience, less memory usage with many similar numbers)
|
|
==========================
|
|
|
|
Digit_Large/Digit_Small_Default: filename
|
|
|
|
filename
|
|
Image file. Contains digits horizontally from 0 to 9, and a blank space.
|
|
|
|
These two digits are a convenience function, if you want to use a digit more than
|
|
once it is quicker to load it into on of these two slots. Then when using the digit
|
|
in the number item type below, use the words 'Large' or 'Small' in place of the
|
|
filename.
|
|
|
|
==========================
|
|
Numbers
|
|
==========================
|
|
|
|
Hour/Minute/Second/Song/Total/In_Rate/In_Hz/Out_Bits/Out_Hz/
|
|
Song_Minute/Song_Second/Frame/Frame_Total/CPU/
|
|
Hour_Total/Minute_Total/Second_Total_Number: filename [length center] x y
|
|
|
|
filename
|
|
Image file for the number's digit, or the word 'Large' or 'Small' (see above).
|
|
If a filename is specified, the image should contain the digits horizontally
|
|
from 0 to 9, and a blank space.
|
|
|
|
length (optional)
|
|
The number of digits to display, if not present the default is assumed.
|
|
|
|
center (optional, but if specified length is required too)
|
|
TRUE or FALSE, specify to center the number.
|
|
|
|
==========================
|
|
Sliders
|
|
==========================
|
|
|
|
Position/Volume/Balance_Slider: filename prelight [verticle reversed] length x y
|
|
|
|
filename
|
|
Image file. Contains images horizontally in this order:
|
|
slider background, handle normal, handle pressed, handle prelit
|
|
(handles must have the same dimensions)
|
|
|
|
prelight
|
|
TRUE or FALSE, specifies whether or not a prelight handle is available, if FALSE,
|
|
do not include a 'handle prelit' in the image file.
|
|
|
|
verticle
|
|
TRUE or FALSE. If false the slider is horizontal, if true, verticle.
|
|
|
|
reversed
|
|
TRUE or FALSE. If true, the slider works opposite than normal. For example
|
|
when false the slider moves from left to right, when true the slider moves
|
|
from right to left. On a verticle slider and reversed is false, the slider
|
|
moves from top to bottom.
|
|
|
|
length
|
|
The width of the slider's background, this is the complete width the slider will
|
|
be in the window, and must match the length of the 'slider background' in the
|
|
image file.
|
|
|
|
==========================
|
|
Dials (AKA knobs)
|
|
==========================
|
|
|
|
Position/Volume/Balance_Dial: filename has_press_image has_prelight_image reversed
|
|
angle_start angle_end handle_offset_x handle_offset_y center_x center_y
|
|
x y w h [clip_filename]
|
|
|
|
filename
|
|
Image file. Contains images for the dial's handle vertically in this order:
|
|
normal
|
|
pressed (being dragged with mouse, optional)
|
|
prelit (mouse over highlight, optional)
|
|
|
|
has_press_image
|
|
TRUE or FALSE, specifies whether or not handle has a pressed image (above)
|
|
|
|
has_prelight_image
|
|
TRUE or FALSE, specifies whether or not handle has a pressed image (above)
|
|
|
|
reversed
|
|
TRUE of FALSE, normally a dial works clockwise with angle_start being the
|
|
lowest (zero) value and angle_end being the highest value. When TRUE the dial
|
|
works counter-clockwise with angle_end being the lowest (zero) value to
|
|
angle_start being the highest position.
|
|
|
|
angle_start
|
|
angle_end
|
|
The start and end angles define the end points of the dial's rotation in integer
|
|
degrees, the degrees count from 0 located right of center axis increasing clockwise
|
|
to a value of 359. (360 is equivelent to 0, but the only accepted numbers are 0 - 359.
|
|
This (admittedly poor) figure might help:
|
|
|
|
|
|
270 ____ center axis
|
|
_|_ /
|
|
/ /
|
|
/ / \
|
|
180 -| + |- 0 (360)
|
|
\ /
|
|
\_ _/
|
|
|
|
|
90
|
|
|
|
handle_offset_x
|
|
handle_offset_y
|
|
The x and y coordinates into the handle image that represents the handle center
|
|
of rotation (pivot point), this does not have to actually be within the image size.
|
|
|
|
center_x
|
|
center_y
|
|
The x and y coordinates on the skin image for the handle center of rotation.
|
|
|
|
x, y, width, height:
|
|
Marks the clipping region to draw the dial, basically the handle is not drawn
|
|
outside this region. (width and height will be ignored if a clip mask image
|
|
is specified (see next option).
|
|
|
|
clip_filename (optional)
|
|
When specified, defines an image with transparency to be used as the dial's
|
|
draw clip mask. The clip mask is placed at x, y (above) and the image's dimensions
|
|
are used in place of width, height (above). The transparency is used to indicate the
|
|
portions of the dial that should be visible (drawn) and respond to mouse clicks.
|
|
If the image contains a multiple level alpha channel, the mask is reduced such that
|
|
levels above 50% are visible and those below 50% are not visible.
|
|
|
|
==============================================================================
|
|
************ Quick reference tables **************
|
|
==============================================================================
|
|
|
|
Note: All example values below set (*)coordinates x=1 and y=1, and filename to fn.png.
|
|
(*) Except Dials.
|
|
|
|
--------------------------
|
|
Buttons (all button images contained horizontally)
|
|
--------------------------
|
|
|
|
Play/Pause/Stop/Shuffle/Repeat_Button: filename prelight status_light x y
|
|
Time_Remaining/Time_Total_Button: filename prelight status_light x y
|
|
|
|
Option line: | # images | Normal | Pressed | Lit | Lit | Prelit | Prelit |
|
|
| total | | | Normal | Pressed | Normal | Lit Normal |
|
|
-----------------------+----------+--------+---------+--------+---------+--------+------------+
|
|
fn.png TRUE TRUE 1 1 | 6 | X | X | X | X | X | X |
|
|
fn.png TRUE FALSE 1 1 | 3 | X | X | | | X | |
|
|
fn.png FALSE TRUE 1 1 | 4 | X | X | X | X | | |
|
|
fn.png FALSE FALSE 1 1| 2 | X | X | | | | |
|
|
|
|
Next/Prev/FF/RW/Playlist/Config/Iconify/Mixer/Exit/Alt_Skin_Button: filename prelight x y
|
|
Volume_Up/Volume_Down/Balance_Left/Balance_Right_Button: filename prelight x y
|
|
|
|
Option line: | # images | Normal | Pressed | Prelit |
|
|
| total | | | Normal |
|
|
-----------------------+----------+--------+---------+--------+
|
|
fn.png TRUE 1 1 | 3 | X | X | X |
|
|
fn.png FALSE 1 1 | 2 | X | X | |
|
|
|
|
|
|
--------------------------
|
|
Items (all item images contained vertically)
|
|
--------------------------
|
|
|
|
Stereo/Shuffle/Repeat/Mpegversion/Mpeglayer/Mpegmode/Status/Minus/Total_Item: filename x y
|
|
|
|
Item: | # images | Image 1 | Image 2 | Image 3 | Image 4 | Image 5 |
|
|
| total | | | | | |
|
|
-----------------------+----------+---------+---------+---------+---------+---------+
|
|
Stereo_Item | 3 | blank | mono | stereo | | |
|
|
Shuffle_Item | 2 | off | on | | | |
|
|
Repeat_Item | 2 | off | on | | | |
|
|
Mpegversion_Item | 3 | blank | ver 1 | ver 2 | | |
|
|
Mpeglayer_Item | 4 | blank | layer 1 | layer 2 | layer 3 | |
|
|
Mpegmode_Item | 5 | blank | stereo | j-stereo| dual-ch |single-ch|
|
|
Status_Item | 3 | stop | pause | play | | |
|
|
Minus_Item | 2 | normal |remaining| | | |
|
|
Total_Item | 2 | normal | total | live | | |
|
|
|
|
|
|
Load_Item: filename section_count x y
|
|
|
|
(These are special Animation items, any number of sections can be included)
|
|
|
|
Option line: | # images | Image 1 | Image 2 | ....... | Last Image |
|
|
| total | | | | |
|
|
-------------------+----------+---------+---------+---------+------------+
|
|
fn.png 8 1 1 | 8 | blank | Frame 1 | F2...F6 | Frame 7 |
|
|
fn.png 4 1 1 | 4 | blank | Frame 1 | Frame 2 | Frame 3 |
|
|
|
|
|
|
Position/Volume/Balance_Item: filename sections x y
|
|
|
|
Option Line: (*) | # images | 1st Image | middle Image | Last Image |
|
|
| total | | | |
|
|
----------------------------+----------+-----------+--------------+---------------+
|
|
Volume_Item fn.png 17 1 1 | 17 | 1 - 0% vol| 9 - 50 % vol | 17 - 100% vol |
|
|
Volume_Item fn.png 31 1 1 | 31 | 1 - 0% vol| 16 - 50 % vol| 31 - 100% vol |
|
|
Balance_Item fn.png 17 1 1 | 17 | 1 - Left | 9 - middle | 17 - Right |
|
|
Balance_Item fn.png 13 1 1 | 13 | 1 - Left | 6 - middle | 13 - Right |
|
|
|
|
(*)note: The values (17, 31, 17, 13) above are only examples, any number of images
|
|
can be specified.
|
|
|
|
|
|
--------------------------
|
|
Sliders (all slider images contained horizontally)
|
|
--------------------------
|
|
|
|
Position/Volume/Balance_Slider: filename prelight [verticle reversed] length x y
|
|
|
|
Option line: | # images | Background | Normal | Pressed | Prelit |
|
|
| total | width | | | Normal |
|
|
-----------------------------------+----------+-------------+--------+---------+--------+
|
|
fn.png TRUE FALSE FALSE 32 1 1 | 4 | 32 pixels | X | X | X |
|
|
fn.png FALSE FALSE FALSE 250 1 1 | 3 | 250 pixels | X | X | |
|
|
|
|
|
|
--------------------------
|
|
Dials (can be confusing, see detailed description, above)
|
|
--------------------------
|
|
|
|
Position/Volume/Balance_Dial: filename has_press_image has_prelight_image reversed
|
|
angle_start angle_end handle_offset_x handle_offset_y center_x center_y
|
|
x y w h [clip_filename]
|
|
|
|
Option line: | # images | Normal | Pressed | Prelit |
|
|
| total | | | Normal |
|
|
----------------------------------------------------------+----------+--------+---------+--------+
|
|
fn.png TRUE TRUE TRUE 0 180 16 16 200 100 140 40 80 80 | 3 | X | X | X |
|
|
fn.png FALSE TRUE TRUE 0 180 16 16 200 100 140 40 80 80 | 2 | X | | X |
|
|
fn.png FALSE FALSE TRUE 0 180 16 16 200 100 140 40 80 80 | 1 | X | | |
|
|
|
|
--------------------------
|
|
Numbers (all number images contained horizontally)
|
|
--------------------------
|
|
|
|
*_Number: filename [length centered] x y
|
|
|
|
Option line: | # images | Images in order (left to right) |
|
|
| total | |
|
|
---------------------+----------+------------------------------------------------+
|
|
fn.png 1 1 | 11 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, " "(blank space) |
|
|
fn.png 3 FALSE 1 1 | 11 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, " "(blank space) |
|
|
|
|
|
|
--------------------------
|
|
Fonts (all font images contained in 3 or 6 rows of 32 columns)
|
|
--------------------------
|
|
|
|
Title/Album/Artist/Genre: filename length [extended] x y
|
|
|
|
Option line: | # images | Images in order |
|
|
| total | |
|
|
------------------------+----------+--------------------+
|
|
fn.png 16 1 1 | 96 | see grid 1 (below) |
|
|
fn.png 16 FALSE 1 1 | 96 | see grid 1 (below) |
|
|
fn.png 16 TRUE 1 1 | 192 | see grid 2 (below) |
|
|
|
|
+------------------------------------+
|
|
character grid 1: | |
|
|
(standard) | !"#$%&'()*+,-./0123456789:;<=>? |
|
|
| @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ |
|
|
| `abcdefghijklmnopqrstuvwxyz{|}~ |
|
|
| |
|
|
+------------------------------------+
|
|
|
|
+------------------------------------+
|
|
character grid 2: | |
|
|
(international | !"#$%&'()*+,-./0123456789:;<=>? |
|
|
extended) | @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ |
|
|
| `abcdefghijklmnopqrstuvwxyz{|}~ |
|
|
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
|
|
| XXXXXXX FIXME! TO DO! XXXXXXXXXX |
|
|
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
|
|
| |
|
|
+------------------------------------+
|
|
|
|
#################################
|