Imported Upstream version 1.6.13
[platform/upstream/libpng.git] / contrib / libtests / gentests.sh
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