Home | History | Annotate | Download | only in libtests
      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 #
     16 usage(){
     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 
     23 mp="$PWD/makepng"
     24 test -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
     34 testdir="tests"
     35 test $# -gt 1 && {
     36    testdir="$1"
     37    shift
     38 }
     39 test $# -eq 0 || usage
     40 
     41 # Take care not to clobber something
     42 if test -e "$testdir"
     43 then
     44    test -d "$testdir" || usage
     45 else
     46    # mkdir -p isn't portable, so do the following
     47    mkdir "$testdir" 2>/dev/null || mkdir -p "$testdir" || usage
     48 fi
     49 
     50 # This fails in a very satisfactory way if it's not accessible
     51 cd "$testdir"
     52 :>"test$$.png" || {
     53    exec >&2
     54    echo "$testdir: directory not writable"
     55    usage
     56 }
     57 rm "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
     67 doit(){
     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 #
     86 for ct in gray palette
     87 do
     88    for bd in 1 2 4 8
     89    do
     90       doit "$ct" "$bd"
     91    done
     92 done
     93 #
     94 doit "gray" "16"
     95 #
     96 for ct in gray-alpha rgb rgb-alpha
     97 do
     98    for bd in 8 16
     99    do
    100       doit "$ct" "$bd"
    101    done
    102 done
    103