2014-12-18 18:30:39 +00:00
|
|
|
wmcdplay - A cd player designed for WindowMaker
|
|
|
|
Copyright (C) 1998 Sam Hawker <shawkie@geocities.com>
|
|
|
|
This software comes with ABSOLUTELY NO WARRANTY
|
|
|
|
This software is free software, and you are welcome to redistribute it
|
|
|
|
under certain conditions
|
|
|
|
See the README file for a more complete notice.
|
|
|
|
|
|
|
|
|
|
|
|
ARTWORK
|
|
|
|
=======
|
|
|
|
|
|
|
|
The artwork mechanism allows you to customise the appearance (and more) of
|
|
|
|
wmcdplay at run-time, by loading an artwork file with the "-f artwork_file"
|
|
|
|
command line argument - yes, THIS IS A CHANGE!!!!! IT USED TO BE "-a"
|
|
|
|
----------------------------------------
|
|
|
|
|
|
|
|
This file trys to explain how to create artwork files. Please feel free to send
|
|
|
|
me comments or improved versions.
|
|
|
|
|
|
|
|
|
|
|
|
BASICS
|
|
|
|
======
|
|
|
|
|
|
|
|
wmcdplay can be in any one of 6 states:
|
|
|
|
Data 0
|
|
|
|
Stopped 1
|
|
|
|
Playing 2
|
|
|
|
Paused 3
|
|
|
|
NoCD 4
|
|
|
|
TrayOpen 5
|
|
|
|
|
|
|
|
wmcdplay buttons can perform any of 10 actions, and the action can
|
|
|
|
depend on the current state of wmcdplay:
|
|
|
|
NOTHING 0
|
|
|
|
Stop 1
|
|
|
|
Play 2
|
|
|
|
Pause 3
|
|
|
|
Resume 4
|
|
|
|
Prev 5
|
|
|
|
Next 6
|
|
|
|
Rewd 7
|
|
|
|
FFwd 8
|
|
|
|
Eject 9
|
|
|
|
Close 10
|
|
|
|
|
|
|
|
|
|
|
|
PIXMAPS
|
|
|
|
=======
|
|
|
|
|
|
|
|
The following symbolic color names may be used in any pixmaps:
|
|
|
|
led_color_high
|
|
|
|
led_color_med
|
|
|
|
led_color_low
|
|
|
|
color_back
|
|
|
|
and should be used appropriately to ensure that the led and background
|
|
|
|
colors can be set at runtime with the "-l led_color" and "-back_color"
|
|
|
|
command line arguments
|
|
|
|
|
|
|
|
led.xpm
|
|
|
|
-------
|
|
|
|
This pixmap is used by wmcdplay to draw the digits of the time and
|
|
|
|
track displays
|
|
|
|
It represents the string of characters: "00112233445566778899 DDAATTNNOOCC--PPEE:;_"
|
|
|
|
"00" means the character "0" but states that it is double width (eg 7+1 pixels wide)
|
|
|
|
":" means the character ":" which is only single width (eg 3+1 pixels wide)
|
|
|
|
";" means an unlit ":" single width character
|
|
|
|
"_" means a single width "-" character
|
|
|
|
The digit size used does not matter, but ensure that 1 pixel spaces are left between
|
|
|
|
digits and that (double width + 1 space) = 2 * (single width + 1 space)
|
|
|
|
eg. ( 7 + 1 ) = 2 * ( 3 + 1 )
|
|
|
|
Transparency is _NOT_ interpreted
|
|
|
|
This file must begin with these 2 lines (character perfect):
|
|
|
|
|
|
|
|
/* XPM */
|
2014-12-18 18:30:49 +00:00
|
|
|
static const char * led_xpm[] = {
|
2014-12-18 18:30:39 +00:00
|
|
|
|
|
|
|
ledsym.xpm
|
|
|
|
----------
|
|
|
|
This pixmap is used by wmcdplay to draw the symbols illustrating the current status
|
|
|
|
It should contain symbols for the following (in sequence):
|
|
|
|
Data, Stopped, Playing, Paused, NoCD, TrayOpen
|
|
|
|
The symbol size used does not matter, but ensure that 1 pixel spaces are left between
|
|
|
|
symbols
|
|
|
|
Transparency is _NOT_ interpreted
|
|
|
|
This file must begin with these 2 lines (character perfect):
|
|
|
|
|
|
|
|
/* XPM */
|
2014-12-18 18:30:49 +00:00
|
|
|
static const char * ledsym_xpm[] = {
|
2014-12-18 18:30:39 +00:00
|
|
|
|
|
|
|
ledtsel.xpm
|
|
|
|
-----------
|
|
|
|
This pixmap is used by wmcdplay to draw the symbols illustrating the current track
|
|
|
|
selection mode
|
|
|
|
It should contain symbols for the following (in sequence):
|
|
|
|
None, Next, Repeat, RepeatCD, Random
|
|
|
|
The symbol size used does not matter, but ensure that 1 pixel spaces are left between
|
|
|
|
symbols
|
|
|
|
Transparency is _NOT_ interpreted
|
|
|
|
This file must begin with these 2 lines (character perfect):
|
|
|
|
|
|
|
|
/* XPM */
|
2014-12-18 18:30:49 +00:00
|
|
|
static const char * ledtsel_xpm[] = {
|
2014-12-18 18:30:39 +00:00
|
|
|
|
|
|
|
symbols.xpm
|
|
|
|
-----------
|
|
|
|
This pixmap contains the symbols to be drawn onto the buttons
|
|
|
|
It should contain symbols for the following (in sequence):
|
|
|
|
NOTHING, Stop, Play, Pause, Resume, Prev, Next, Rewd, FFwd, Eject, Close
|
|
|
|
The symbol size used does not matter, but ensure that 1 pixel spaces are left between
|
|
|
|
symbols
|
|
|
|
Transparency _IS_ interpreted
|
|
|
|
This file must begin with these 2 lines (character perfect):
|
|
|
|
|
|
|
|
/* XPM */
|
2014-12-18 18:30:49 +00:00
|
|
|
static const char * symbols_xpm[] = {
|
2016-12-23 23:28:17 +00:00
|
|
|
|
2014-12-18 18:30:39 +00:00
|
|
|
cdplayer.xpm
|
|
|
|
------------
|
|
|
|
This pixmap provides the basic background for wmcdplay
|
|
|
|
It _must_ be 64x64 pixels
|
|
|
|
It should provide solid areas (the size and color of which will depend on the
|
|
|
|
led.xpm, ledsym.xpm and ledtsel.xpm files used), for any required displays to
|
|
|
|
be drawn onto
|
|
|
|
These areas are usually bordered in some way
|
|
|
|
It can also be used to provide solid areas which can form buttons
|
|
|
|
(Although the button symbols can themselves form the buttons)
|
|
|
|
Transparency _IS_ interpreted
|
|
|
|
This file must begin with these 2 lines (character perfect):
|
|
|
|
|
|
|
|
/* XPM */
|
2014-12-18 18:30:49 +00:00
|
|
|
static const char * cdplayer_xpm[] = {
|
2014-12-18 18:30:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
THE DATA FILE - artwork.dat
|
|
|
|
===========================
|
|
|
|
|
|
|
|
So far, all we have in our artwork file is a set of pixmaps. But we also
|
|
|
|
need a data file (artwork.dat), to answer the following questions:
|
|
|
|
|
|
|
|
How many buttons are there?
|
|
|
|
Where exactly is each button?
|
|
|
|
What does each button do?
|
|
|
|
Should do-NOTHING buttons be hidden?
|
|
|
|
Which led displays are there?
|
|
|
|
Where are they?
|
|
|
|
|
|
|
|
The formats of entries in this file must follow the examples given quite closely.
|
|
|
|
Basically, anything before an '=' must appear exactly as shown and at the
|
|
|
|
beginning of the line (not indented as here). Also, all entries must be on a single
|
|
|
|
line unless shown otherwise here.
|
|
|
|
Comments and blank lines are, however, perfectly legal (between entries).
|
|
|
|
|
|
|
|
How many buttons?
|
|
|
|
-----------------
|
|
|
|
eg.
|
|
|
|
|
|
|
|
int art_nbtns=5;
|
|
|
|
|
|
|
|
Where exactly is each button?
|
|
|
|
-----------------------------
|
|
|
|
Buttons must be shaped as convex polygons, so you give the position
|
|
|
|
(and shape) of each as a list of coordinates of its verticies.
|
|
|
|
The polygon defined by these points is used to interpret mouse clicks,
|
|
|
|
and also (optionally) to hide do-NOTHING buttons.
|
|
|
|
|
|
|
|
Also, tell wmcdplay where on the button to put the symbol. This is in the
|
|
|
|
form of the co-ordinates of the top-left corner of the symbol, relative
|
|
|
|
to the top-left corner of wmcdplay.
|
|
|
|
A single entry, defines all buttons.
|
|
|
|
|
|
|
|
eg.
|
|
|
|
|
|
|
|
int art_btns[]={ 8 , 38 , 5 , 5 , 27 , 7 , 27 , 20 , 40 , 7 , 54 , 5 , 54 ,
|
|
|
|
19 , 26 , 5 , 6 , 22 , 28 , 22 , 28 , 39 , 22 , 39 , 6 , 24 ,
|
|
|
|
19 , 50 , 5 , 6 , 57 , 21 , 42 , 28 , 42 , 28 , 59 , 6 , 59 ,
|
|
|
|
35 , 26 , 5 , 31 , 22 , 52 , 22 , 52 , 24 , 37 , 39 , 31 , 39 ,
|
|
|
|
51 , 31 , 5 , 42 , 36 , 56 , 22 , 59 , 22 , 59 , 39 , 42 , 39 };
|
|
|
|
|
|
|
|
Each line defines 1 button:
|
|
|
|
symbol_x , symbol_y , num_vertices , x1 , y1 , x2 , y2 , x3 , y3 , x4 , y4 , x5 , y5
|
|
|
|
|
|
|
|
Different buttons may have different numbers of vertices, so different numbers of fields.
|
|
|
|
The button must be a _convex_ polygon, and the vertices must be given in sequence, going
|
|
|
|
_clockwise_ around the button.
|
|
|
|
|
|
|
|
What does each button do?
|
|
|
|
-------------------------
|
|
|
|
This is answered with a set of integer actions (see list given earlier) for each button,
|
|
|
|
for each state (see list given earlier):
|
|
|
|
|
|
|
|
wmcdplay state: 0 1 2 3 4 5
|
|
|
|
|
|
|
|
D S P P N T
|
|
|
|
A T L A O R
|
|
|
|
T O A U A
|
|
|
|
A P Y S C Y
|
2016-12-23 23:28:17 +00:00
|
|
|
P I E D
|
2014-12-18 18:30:39 +00:00
|
|
|
T E N D O
|
|
|
|
R D G P
|
|
|
|
K E
|
|
|
|
N
|
|
|
|
|
|
|
|
eg.
|
|
|
|
|
|
|
|
int art_actions[]={ 0 , 2 , 3 , 4 , 0 , 0 ,
|
|
|
|
5 , 5 , 5 , 0 , 0 , 0 ,
|
|
|
|
6 , 6 , 6 , 0 , 0 , 0 ,
|
|
|
|
0 , 0 , 1 , 1 , 0 , 0 ,
|
|
|
|
9 , 9 , 9 , 9 , 9 , 10 };
|
|
|
|
|
|
|
|
Should do-NOTHING buttons be hidden?
|
|
|
|
------------------------------------
|
|
|
|
This can be set so that whenever a button has NOTHING assigned to it, it is hidden
|
|
|
|
(using the region defined by style_btns). Otherwise it is left and the symbol
|
|
|
|
representing NOTHING is drawn onto it.
|
|
|
|
|
|
|
|
eg.
|
|
|
|
|
|
|
|
bool art_hidebtns=false;
|
|
|
|
|
|
|
|
Which led displays are there?
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
eg.
|
|
|
|
|
|
|
|
bool style_leds[4]={ true, true, false, false};
|
|
|
|
|
|
|
|
That's basically:
|
|
|
|
show_time=true , show_track=true , show_status=false , show_trksel=false
|
|
|
|
|
|
|
|
Where are they?
|
|
|
|
---------------
|
|
|
|
eg.
|
|
|
|
|
|
|
|
int art_ledpos[3][2]={ 8 , 7 , 37 , 45 , 0 , 0 , 0 , 0 };
|
|
|
|
|
|
|
|
That's basically:
|
|
|
|
time_x=8 , time_y=7 , track_x=37 , track_y=45 , status_x=0 , status_y=0 , trksel_x=0 , trksel_y=0
|
|
|
|
|
|
|
|
These are the co-ordinates of the top-left corner of each display
|
|
|
|
relative to the top-left corner of wmcdplay.
|
|
|
|
You should enter valid integers even for displays which you have
|
|
|
|
chosen not to use.
|
|
|
|
|
|
|
|
|
|
|
|
ARTWORK FILES
|
|
|
|
=============
|
|
|
|
|
2014-12-18 18:30:48 +00:00
|
|
|
All the above files should be placed in an appropriately named directory and the
|
|
|
|
"makeart" script (installed by default in /usr/local/share/wmcdplay) should be
|
|
|
|
executed in the parent directory. You should end up with a new .art file. You
|
|
|
|
should be able to load wmcdplay with this artwork using the "-f artwork_file"
|
|
|
|
command line argument.
|
|
|
|
You should also be able to make your new artwork the compile-time default by
|
|
|
|
using the "--with-art" option to the "configure" script.
|