

                             hw_gfx_themes README
			  


This file describes how to create/modify themes for `--hw=gfx' twin driver.

Themes for this driver are simple: a single .xpm file holding all bitmaps.
Optionally, you can also use arbitrary .xpm files as screen root pixmap and
window interior pixmap. These are not bound to the font size, while themes are:

each theme .xpm file contains in its name the font size it requires: for example,

ShinyMetal_6x13.xpm
ShinyMetal_8x16.xpm
absolute-e_8x16.xpm
   default_8x16.xpm
 afterstep_9x19.xpm
      kde2_9x19.xpm
   default_9x19.xpm

There is currently no good way to convert a theme from a font size to another
(actually you can scale the whole picture, but quite probably the results will
be fuzzy and not very satisfying).

Each theme picture is composed by 15x7 cells (this will increase in the future),
and each cell is the same size as the required font (i.e. 6x13, 8x16, 9x19, ...).

Each cell contains the bitmap used to draw a border, a button, a scrollbar
or part of them. You can get a quick idea of the cell layout by viewing
the ShinyMetal_8x16.xpm theme, which is quite intuitive and complete.

If you want the details about what you should put in each cell,
this is the exact layout (each cell is named by its (column,row) pair) :

                              column
      0   1   2   3   4   5   6   7   8   9   A   B   C   D   E
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  0 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  1 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  2 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
r   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
o 3 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
w   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  4 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  5 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  6 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

0,0 : (currently unused)
1,0 : menu tile
2,0 : button 0,    normal, left  half
3,0 : button 0,    normal, right half
4,0 : button 1,    normal, left  half
5,0 : button 1,    normal, right half
6,0 : button 2,    normal, left  half
7,0 : button 2,    normal, right half
8,0 : button 3,    normal, left  half
9,0 : button 3,    normal, right half
A,0 : button 4,    normal, left  half
B,0 : button 4,    normal, right half
C,0 : scrollbar, inactive, vertical, background tile
D,0 : scrollbar,   active, vertical, background tile
E,0 : scrollbar,  pressed, vertical, background tile

0,1 : screen root tile
1,1 : window background tile
2,1 : button 0,   pressed, left  half
3,1 : button 0,   pressed, right half
4,1 : button 1,   pressed, left  half
5,1 : button 1,   pressed, right half
6,1 : button 2,   pressed, left  half
7,1 : button 2,   pressed, right half
8,1 : button 3,   pressed, left  half
9,1 : button 3,   pressed, right half
A,1 : button 4,   pressed, left  half
B,1 : button 4,   pressed, right half
C,1 : scrollbar, inactive, vertical, tab tile
D,1 : scrollbar,   active, vertical, tab tile
E,1 : scrollbar,  pressed, vertical, tab tile

0,2 : resize button, normal,  left  half
1,2 : resize button, normal,  right half
2,2 : button 5,    normal,  left  half
3,2 : button 5,    normal,  right half
4,2 : button 6,    normal,  left  half
5,2 : button 6,    normal,  right half
6,2 : button 7,    normal,  left  half
7,2 : button 7,    normal,  right half
8,2 : button 8,    normal,  left  half
9,2 : button 8,    normal,  right half
A,2 : button 9,    normal,  left  half
B,2 : button 9,    normal,  right half
C,2 : scrollbar, inactive, vertical, arrow up
D,2 : scrollbar,   active, vertical, arrow up
E,2 : scrollbar,  pressed, vertical, arrow up

0,3 : resize button, pressed, left  half
1,3 : resize button, pressed, right half
2,3 : button 5,   pressed, left  half
3,3 : button 5,   pressed, right half
4,3 : button 6,   pressed, left  half
5,3 : button 6,   pressed, right half
6,3 : button 7,   pressed, left  half
7,3 : button 7,   pressed, right half
8,3 : button 8,   pressed, left  half
9,3 : button 8,   pressed, right half
A,3 : button 9,   pressed, left  half
B,3 : button 9,   pressed, right half
C,3 : scrollbar, inactive, vertical, arrow down
D,3 : scrollbar,   active, vertical, arrow down
E,3 : scrollbar,  pressed, vertical, arrow down

0,4 : window,    inactive, up   left   corner
1,4 : window,    inactive, up          side   (except title)
2,4 : window,    inactive, up   right  corner
3,4 : window,    inactive,      left   side
4,4 : window,    inactive, up          side   (title only)
5,4 : window,    inactive,      right  side
6,4 : window,    inactive, down left   corner
7,4 : window,    inactive, down        side
8,4 : window,    inactive, down right  corner
9,4 : scrollbar, inactive, horizontal, background tile
A,4 : scrollbar, inactive, horizontal, tab tile
B,4 : scrollbar, inactive, horizontal, arrow left
C,4 : scrollbar, inactive, horizontal, arrow right
D,4 : (currently unused)
E,4 : (currently unused)

0,5 : window,      active, up   left   corner
1,5 : window,      active, up          side   (except title)
2,5 : window,      active, up   right  corner
3,5 : window,      active,      left   side
4,5 : window,      active, up          side   (title only)
5,5 : window,      active,      right  side
6,5 : window,      active, down left   corner
7,5 : window,      active, down        side
8,5 : window,      active, down right  corner
9,5 : scrollbar,   active, horizontal, background tile
A,5 : scrollbar,   active, horizontal, tab tile
B,5 : scrollbar,   active, horizontal, arrow left
C,5 : scrollbar,   active, horizontal, arrow right
D,5 : (currently unused)
E,5 : (currently unused)

0,6 : window,  pressed, up   left  corner
1,6 : window,  pressed, up         side   (except title)
2,6 : window,  pressed, up   right corner
3,6 : window,  pressed,      left  side
4,6 : window,  pressed, up         side   (title only)
5,6 : window,  pressed,      right side
6,6 : window,  pressed, down left  corner
7,6 : window,  pressed, down       side
8,6 : window,  pressed, down right corner
9,6 : scrollbar,  pressed, horizontal, background tile
A,6 : scrollbar,  pressed, horizontal, tab tile
B,6 : scrollbar,  pressed, horizontal, arrow left
C,6 : scrollbar,  pressed, horizontal, arrow right
D,6 : (currently unused)
E,6 : (currently unused)


A last note:
Unless you have copyright problems and/or are very selfish ;-),
you should really consider distributing your themes.
The preferred way is to open an issue or a pull request at
https://github.com/cosmos72/twin



That's all. Now pick you favourite image editor and be creative!

Massimiliano Ghilardi.

