#!/bin/sh
font="fonts/Vera.ttf"
background="#d4d4a4"
black="#000000"
green="#009900"
red="#cc0000"
standard="#666633"
if test "x$1" == x--font; then
shift
font="$1"
shift
fi
if test $ echo Usage: tools/makebuttons "[--font filename]" locale buttons.txt
exit 1
elif test ! -d tools; then
echo ERROR: You MUST run the makebuttons script from the main CUPS source directory!
exit 1
elif test "x`convert --help | grep extent`" = x; then
echo ERROR: This script requires ImageMagick 6.2.4 or higher.
exit 1
else
locale=$1
list=$2
fi
if test ! -f $list; then
echo "ERROR: $list: file not found."
exit 1
elif test ! -r $list; then
echo "ERROR: $list: cannot read file."
exit 1
fi
function generate_button()
{
filename=$1
shift
color=$1
shift
txt="$*"
echo Creating $filename...
bgclr=$background
case x$color in
xb*)
fgclr=$black
fuzz="10%"
;;
xg*)
fgclr=$green
fuzz="10%"
;;
xr*)
fgclr=$red
fuzz="1%"
;;
xs*)
fgclr=$standard
fuzz="10%"
;;
*)
echo "ERROR: Unknown color $color for $filename!"
exit 1
;;
esac
add_arrows=0
if echo $txt | grep '@UP' > /dev/null 2>&1; then
add_arrows=1
txt="`echo $txt | sed 's|@UP||g'`"
elif echo $txt | grep '@DOWN' > /dev/null 2>&1; then
add_arrows=2
txt="`echo $txt | sed 's|@DOWN||g'`"
fi
tmp_btn=/tmp/cups-btn-$$.bmp
convert xc:transparent -extent 400x40 -fill "$fgclr" \
-draw "rectangle 0,0 399,39" \
-fill "#ffffff" -encoding Unicode -pointsize 13 -font "$font" \
-gravity Center -annotate 0x0+0+0 "$txt" -trim $tmp_btn
txt_h=`identify -format "%h" $tmp_btn`
txt_w=`identify -format "%w" $tmp_btn`
if test $txt_h -gt 40; then
echo "ERROR: 2 lines maximum for the button text"
exit 1
fi
if test $txt_h -ge 18; then
btn_h=40
else
btn_h=20
fi
if test $add_arrows -gt 0; then
if test $btn_h -eq 20; then
txt_w=`expr $txt_w + 36`
elif test $btn_h -eq 40; then
txt_w=`expr $txt_w + 58`
fi
fi
rad=`expr $btn_h / 2`
btn_w=`expr $txt_w + $rad + $rad`
btn_top=`expr $btn_h - 1`
convert xc:transparent \
-extent $btn_w'x'$btn_h -fill "$bgclr" \
-draw "rectangle 0,0 $btn_w,$btn_h" -fill "$fgclr" \
-draw "roundRectangle 0,0 `expr $btn_w - 1`,$btn_top `expr $rad - 1`,$rad" \
-fuzz $fuzz -transparent "$bgclr" -write $filename \
-fill "#ffffff" -encoding Unicode -pointsize 13 \
-font "$font" -gravity Center -annotate 0x0+0-1 "$txt" \
$filename
if test $add_arrows -gt 0; then
if test $add_arrows -eq 1; then
if test $btn_h -eq 20; then
pts1="9,15 21,15 15,4"
pts2="`expr $btn_w - 10`,15 `expr $btn_w - 22`,15 `expr $btn_w - 16`,4"
else
pts1="16,30 34,30 25,10"
pts2="`expr $btn_w - 17`,30 `expr $btn_w - 35`,30 `expr $btn_w - 26`,10"
fi
else
if [ $btn_h -eq 20 ]; then
pts1="9,4 21,4 15,15"
pts2="`expr $btn_w - 10`,4 `expr $btn_w - 22`,4 `expr $btn_w - 16`,15"
else
pts1="16,10 34,10 25,30"
pts2="`expr $btn_w - 17`,10 `expr $btn_w - 35`,10 `expr $btn_w - 26`,30"
fi
fi
convert $filename -fill "#ffffff" -draw "polygon $pts1" \
-draw "polygon $pts2" $filename
fi
convert $filename -colors 32 $filename
rm -f $tmp_btn
}
if test "$locale" != en; then
if test ! -d doc/$locale/images; then
echo Creating doc/$locale/images...
mkdir -p doc/$locale/images
fi
fi
cat $list | while read line; do
if test "x`echo $line | cut -c1`" = "x#"; then
continue
fi
if test "$locale" = en; then
generate_button doc/images/$line
else
generate_button doc/$locale/images/$line
fi
done