graphics: Generate HELP screens programatically.

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 commit is contained in:
Simon Howard 2014-06-30 00:10:54 +00:00
parent c06cb4478c
commit 7f281321c9
8 changed files with 34 additions and 33 deletions

View file

@ -3,5 +3,6 @@ wi*.gif
wilv*.gif
cwilv*.gif
dmwilv*.gif
help*.gif
prboom.gif
graphics.stamp

View file

@ -1,4 +1,4 @@
GRAPHICS = \
TEXTGEN_GRAPHICS = \
m_detail.gif m_disopt.gif m_disp.gif m_endgam.gif m_epi1.gif \
m_epi2.gif m_epi3.gif m_epi4.gif m_episod.gif m_gdhigh.gif \
m_gdlow.gif m_hurt.gif m_jkill.gif m_lgttl.gif m_loadg.gif \
@ -13,7 +13,7 @@ GRAPHICS = \
m_mess.gif m_mouse.gif m_multi.gif m_player.gif m_serial.gif \
m_setup.gif m_sound.gif m_stat.gif m_status.gif m_tcpip.gif \
m_versen.gif m_video.gif m_wad.gif m_wadopt.gif m_weap.gif \
prboom.gif \
prboom.gif helpttl.gif \
m_ultra.gif wibp1.gif wibp2.gif wibp3.gif wibp4.gif \
wicolon.gif wienter.gif wif.gif wifrgs.gif wipcnt.gif \
wiminus.gif wimstar.gif wimstt.gif wiostf.gif wiosti.gif \
@ -37,13 +37,13 @@ GRAPHICS = \
wilv33.gif wilv34.gif wilv35.gif wilv36.gif wilv37.gif \
wilv38.gif
all: $(GRAPHICS)
all: $(TEXTGEN_GRAPHICS) help.gif
# textgen creates multiple outputs, which is awkward to express in
# make. Use a witness file (graphics.stamp) as suggested in the
# automake manual: "Handling Tools that Produce Many Outputs"
$(GRAPHICS): graphics.stamp
$(TEXTGEN_GRAPHICS): graphics.stamp
@if test -f $@; then :; else \
rm -f graphics.stamp; \
$(MAKE) data.stamp; \
@ -55,5 +55,14 @@ graphics.stamp: config.py fontchars ../../lumps/fraggle/freedoom.bex
./textgen
@mv graphics.tmp $@
help.gif: helpbg.gif helptext.gif helpttl.gif
convert helpbg.gif \
-draw 'image over 0,0 0,0 helptext.gif' \
-draw 'image over 140,5 0,0 helpttl.gif' \
help.gif
helpbg.gif: ../interpic.gif
convert ../interpic.gif -fill '#0077ff' -tint 50 helpbg.gif
clean:
rm -f $(GRAPHICS) graphics.stamp *.pyc
rm -f $(TEXTGEN_GRAPHICS) helpbg.gif help.gif graphics.stamp *.pyc

View file

@ -210,6 +210,12 @@ red_graphics = {
'm_multi': 'Multiplayer',
}
# Rendered with transparent background:
transparent_graphics = {
# Title for the HELP/HELP1 screen:
'helpttl': 'Help',
}
def read_bex_lump(filename):
"""Read the BEX (Dehacked) lump from the given filename.

BIN
graphics/text/helptext.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -208,20 +208,6 @@ class Font(object):
return command_line
def render_transparent_text(self, text, output_filename, color):
"""Render the given text to the given output file.
The rendered text is generated with a transparent background.
"""
if UPPERCASE_FONT:
text = text.upper()
command_line = self._make_command_line(text, color)
command_line.append(output_filename)
invoke_command(command_line)
def render_text(self, text, output_filename,
color=COLOR_WHITE, bgcolor=BACKGROUND_COLOR):
"""Render text to a file with the given background color."""
@ -230,16 +216,19 @@ class Font(object):
text = text.upper()
command_line = self._make_command_line(text, color)
command_line.extend([
'-background', bgcolor, '-flatten',
output_filename])
if bgcolor is not None:
command_line.extend([
'-background', bgcolor, '-flatten'])
command_line.append(output_filename)
invoke_command(command_line)
def generate_graphics(graphics, color=COLOR_WHITE):
def generate_graphics(graphics, color=COLOR_WHITE, bgcolor=BACKGROUND_COLOR):
for name, text in sorted(graphics.items()):
print("# %s.gif: '%s'" % (name, text))
font.render_text(text, '%s.gif' % name, color=color)
font.render_text(text, '%s.gif' % name,
color=color, bgcolor=bgcolor)
def generate_kerning_test():
pairs = []
@ -257,7 +246,8 @@ font = Font('fontchars', kerning_table=FONT_KERNING_RULES)
# Enable to generate test image file for tweaking kerning values:
#generate_kerning_test()
generate_graphics(red_graphics, COLOR_RED)
generate_graphics(blue_graphics, COLOR_BLUE)
generate_graphics(white_graphics, COLOR_WHITE)
generate_graphics(red_graphics, color=COLOR_RED)
generate_graphics(blue_graphics, color=COLOR_BLUE)
generate_graphics(white_graphics, color=COLOR_WHITE)
generate_graphics(transparent_graphics, color=COLOR_RED, bgcolor=None)