dockapps/wmcdplay/ARTWORK

256 lines
8.6 KiB
Plaintext

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 */
static const char * led_xpm[] = {
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 */
static const char * ledsym_xpm[] = {
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 */
static const char * ledtsel_xpm[] = {
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 */
static const char * symbols_xpm[] = {
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 */
static const char * cdplayer_xpm[] = {
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
P I E D
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
=============
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.