The original Doom HELP screen showed the default key bindings for the
game's controls. This is not so useful nowadays: at worst it's
outright misleading because the player might not be using the
defaults, but it's also redundant because most modern source ports
allow the key bindings to be changed via the menus, which doubles as a
convenient list of the current key bindings.
Z0k suggested an alternative HELP screen that shows the items and
powerups available in the game. More discussion can be seen in this
thread: http://www.doomworld.com/vb/freedoom/69458-help/
This extends the new font to include lower case as well as upper
case characters. Add a couple of kerning rules for the lower case
characters so that they render nicely, too.
Decompose the help screen into three parts: the background, the
text and the title. Generate all except the main text programatically:
the background as a color transformed version of the INTERPIC graphic
and the title using the textgen tool.
This replaces the old Freedoom font with a new chunky one named "Denex".
I (fraggle) have split the font out into separate images for use with
the textgen script, but have included the original source .pcx image
here.
Currently the font only includes uppercase characters and does not
include smaller lowercase ones, so I've hacked the textgen script to
convert all strings to uppercase before rendering. There are also no
font kerning rules for the time being.
If a text string contains all lower-case characters, then generate
it at a reduced height. This is necessary for certain graphics, like
the WIF graphic ("FINISHED") on the intermission screen, otherwise
it ends up in the wrong location (#49).
Adjust the offsets for some graphics in the build config to
compensate, and fix up the vertical offsets for WICOLON/WIMINUS while
we're at it.
Give a fourth channel blend percentage of zero so that the alpha channel
of the default fill colour (fully opaque black) is ignored. This fixes
the blue menu titles (skill, episode etc.) having black backgrounds.
The use of -colorize here blends 100% of the default fill colour (black)
into one or more channels of a greyscale image. Mixing in 100% black is
equivalent to nullifying the channel by setting it to zero, e.g. red
text is achieved by mixing 100% black into the green and blue channels.
It turns out, when passed more than one value (to affect all channels by
that percentage equally), -colorize looks for _four_ separate channel
values (RGB and alpha). If fewer are given, the missing ones inherit the
blend percentage of the first channel (red).
For red and white there is no effect, as the red channel is left alone.
But blue blends 100% of the red channel (thus, unwittingly, the alpha
channel) of fully opaque black into the image, making it fully opaque...
- factor out command line generation: a new function _make_command_line
returns most of the command line for a transparent image rendering.
- Callers render_transparent_text and render_text append the output
filename and extra imagemagick options to colour the background as
needed. This means imagemagick is only called once per generated
image, which makes the process considerably faster.
- This also works around a bug in the current version of imagemagick in
Debian sid, which caused single-character graphics (e.g. winum*) to be
generated with a black background.
DW: http://www.doomworld.com/vb/post/1221810
Acked-by: Simon Howard <fraggle@gmail.com>
Signed-off-by: RjY <rjy@users.sourceforge.net>
Remove the big text graphic images used for the menus and the
intermission screen. Instead, generate these graphics programatically
from a script. This allows them to be easily changed and extended
as desired.