95 lines
2.5 KiB
Bash
Executable File
95 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Include our configuration
|
|
. ${PREVIOUS_PWD}/CI/ft-tests.config
|
|
|
|
# Arguments
|
|
COMMIT=$1
|
|
FONT=$2
|
|
SIZE=$3
|
|
DPI=$4
|
|
DUMP=$5
|
|
BENCH=$6
|
|
VIEW=$7
|
|
STRING=$8
|
|
START_GLYPH=$9
|
|
END_GLYPH=${10}
|
|
|
|
OUT_DIR="${TEST_OUTDIR}/${COMMIT}/$(basename ${FONT})/${SIZE}/"
|
|
|
|
# Ensure directory we want to write to exists.
|
|
mkdir -p $OUT_DIR
|
|
|
|
# This script dumps specified metrics for a specified font. The arguments listed
|
|
# above allow you to specify which metricts to dum when this script is called
|
|
# from ft-test.sh
|
|
|
|
|
|
# Below sets up a virtual X framebuffer to run the demos in. It is 1024x768 at
|
|
# 24b depth. If you need a larget screen to fit the demos change the resolution
|
|
# here.
|
|
function startX {
|
|
if [ ! -f "/tmp/.X${1}-lock" ]; then
|
|
Xvfb :"$1" -screen 0 1024x768x24 &
|
|
# Wait 2 seconds to ensure X is ready.
|
|
sleep 2
|
|
fi
|
|
}
|
|
|
|
# Below is a utility function to run a command inside the virtual frame buffer,
|
|
# wait 1 second and capture the screen and kill it.The first two arguments are
|
|
# the xvfb ID and the output image file name.
|
|
function xvfbRunAndScreenShot {
|
|
display="$1"
|
|
shift
|
|
screenshot_name="$1"
|
|
shift
|
|
DISPLAY=:"$display" $@ &
|
|
PID=$!
|
|
sleep 1
|
|
DISPLAY=:"$display" xwd -root -silent\
|
|
| convert -colorspace sRGB -define png:color-type=2 -trim xwd:- png:${OUT_DIR}/${screenshot_name}
|
|
kill $PID
|
|
}
|
|
|
|
# Because witing 1 second for every command can be slow we set up multiple xvfbs
|
|
# in order to expedite the proccess.
|
|
for worker in $(seq 1 $WORKERS)
|
|
do
|
|
startX $((98 + ${worker})) &
|
|
done
|
|
|
|
# Below are simple metricts to test that only require one run per font.
|
|
if [[ "$DUMP" -eq 1 ]]; then
|
|
${DEMOS_DIR}/ftdump ${FONT} &> ${OUT_DIR}/dump.txt
|
|
fi
|
|
|
|
if [[ "$BENCH" -eq 1 ]]; then
|
|
${DEMOS_DIR}/ftbench ${FONT} &> ${OUT_DIR}/bench.txt
|
|
fi
|
|
|
|
if [[ "$STRING" -eq 1 ]]; then
|
|
xvfbRunAndScreenShot 99 "ftstring.png" ${DEMOS_DIR}/ftstring\
|
|
-r $DPI ${SIZE} ${FONT}
|
|
fi
|
|
|
|
if [[ "$VIEW" -eq 1 ]]; then
|
|
xvfbRunAndScreenShot 99 "ftview.png" ${DEMOS_DIR}/ftview -r $DPI ${SIZE} ${FONT}
|
|
fi
|
|
|
|
# For ftgrid we run it on thousands of glyphys so this loop takes advantage of
|
|
# the above mentioned xvfb workers to speed it up.
|
|
for GLYPH in $(seq ${START_GLYPH} ${END_GLYPH})
|
|
do
|
|
((i=i%WORKERS)); ((i++==0)) && wait
|
|
echo "$(basename $FONT) ftgrid ${GLYPH}"
|
|
# Pad name with 0s to maintain order
|
|
GLYPH_padded=$(printf "%04d" ${GLYPH})
|
|
xvfbRunAndScreenShot $((98 + ${i})) "ftgrid_${GLYPH_padded}.png"\
|
|
${DEMOS_DIR}/ftgrid -r $DPI -f ${GLYPH} ${SIZE} ${FONT} &
|
|
done
|
|
|
|
sleep 2 # wait for workers to finish up
|
|
#killall Xvfb
|
|
sleep 2 # wait for all xvfb to die
|