Chris Craik | ca2bf81 | 2013-07-29 15:28:30 -0700 | [diff] [blame] | 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 |