all repos — mgba @ ef3cc7bd9f28d73fdff912587fc42260948d5b51

mGBA Game Boy Advance Emulator

src/third-party/libpng/contrib/libtests/gentests.sh (view raw)

  1#!/bin/sh
  2#
  3# Copyright (c) 2013 John Cunningham Bowler
  4#
  5# Last changed in libpng 1.6.0 [February 14, 2013]
  6#
  7# This code is released under the libpng license.
  8# For conditions of distribution and use, see the disclaimer
  9# and license in png.h
 10#
 11# Generate a set of PNG test images.  The images are generated in a
 12# sub-directory called 'tests' by default, however a command line argument will
 13# change that name.  The generation requires a built version of makepng in the
 14# current directory.
 15#
 16usage(){
 17   exec >&2
 18   echo "$0 [<directory>]"
 19   echo '  Generate a set of PNG test files in "directory" ("tests" by default)'
 20   exit 1
 21}
 22
 23mp="$PWD/makepng"
 24test -x "$mp" || {
 25   exec >&2
 26   echo "$0: the 'makepng' program must exist"
 27   echo "  in the directory within which this program:"
 28   echo "    $mp"
 29   echo "  is executed"
 30   usage
 31}
 32
 33# Just one argument: the directory
 34testdir="tests"
 35test $# -gt 1 && {
 36   testdir="$1"
 37   shift
 38}
 39test $# -eq 0 || usage
 40
 41# Take care not to clobber something
 42if test -e "$testdir"
 43then
 44   test -d "$testdir" || usage
 45else
 46   # mkdir -p isn't portable, so do the following
 47   mkdir "$testdir" 2>/dev/null || mkdir -p "$testdir" || usage
 48fi
 49
 50# This fails in a very satisfactory way if it's not accessible
 51cd "$testdir"
 52:>"test$$.png" || {
 53   exec >&2
 54   echo "$testdir: directory not writable"
 55   usage
 56}
 57rm "test$$.png" || {
 58   exec >&2
 59   echo "$testdir: you have create but not write privileges here."
 60   echo "  This is unexpected.  You have a spurion; "'"'"test$$.png"'"'"."
 61   echo "  You need to remove this yourself.  Try a different directory."
 62   exit 1
 63}
 64
 65# Now call makepng ($mp) to create every file we can think of with a
 66# reasonable name
 67doit(){
 68   for gamma in "" --sRGB --linear --1.8
 69   do
 70      case "$gamma" in
 71         "")
 72            gname=;;
 73         --sRGB)
 74            gname="-srgb";;
 75         --linear)
 76            gname="-lin";;
 77         --1.8)
 78            gname="-18";;
 79         *)
 80            gname="-$gamma";;
 81      esac
 82      "$mp" $gamma "$1" "$2" "test-$1-$2$gname.png"
 83   done
 84}
 85#
 86for ct in gray palette
 87do
 88   for bd in 1 2 4 8
 89   do
 90      doit "$ct" "$bd"
 91   done
 92done
 93#
 94doit "gray" "16"
 95#
 96for ct in gray-alpha rgb rgb-alpha
 97do
 98   for bd in 8 16
 99   do
100      doit "$ct" "$bd"
101   done
102done