13cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III#!/bin/sh
23cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III#
33cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# Make a set of test PNG files, MAKEPNG is the name of the makepng executable
43cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# built from contrib/libtests/makepng.c
53cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
63cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# Copyright (c) 2015 John Cunningham Bowler
73cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
83cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# Last changed in libpng 1.6.20 [December 3, 2015]
93cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
103cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# This code is released under the libpng license.
113cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# For conditions of distribution and use, see the disclaimer
123cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# and license in png.h
133cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
143cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# The arguments say whether to build all the files or whether just to build the
153cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# ones that extend the code-coverage of libpng from the existing test files in
163cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III# contrib/pngsuite.
173cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins IIItest -n "$MAKEPNG" || MAKEPNG=./makepng
183cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins IIIopts=
193cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
203cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins IIImp(){
213cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   ${MAKEPNG} $opts $1 "$3" "$4" "$3-$4$2.png"
223cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III}
233cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
243cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins IIImpg(){
253cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   if test "$1" = "none"
263cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   then
273cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mp "" "" "$2" "$3"
283cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   else
293cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mp "--$1" "-$1" "$2" "$3"
303cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   fi
313cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III}
323cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
333cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins IIImptrans(){
343cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   if test "$1" = "none"
353cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   then
363cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mp "--tRNS" "-tRNS" "$2" "$3"
373cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   else
383cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mp "--tRNS --$1" "-$1-tRNS" "$2" "$3"
393cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   fi
403cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III}
413cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
423cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins IIIcase "$1" in
433cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   --small)
443cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      opts="--small";;&
453cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
463cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   --all|--small)
473cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      for g in none sRGB linear 1.8
483cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      do
493cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         for c in gray palette
503cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         do
513cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            for b in 1 2 4
523cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            do
533cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III               mpg "$g" "$c" "$b"
543cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III               mptrans "$g" "$c" "$b"
553cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            done
563cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         done
573cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
583cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         mpg "$g" palette 8
593cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         mptrans "$g" palette 8
603cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
613cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         for b in 8 16
623cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         do
633cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            for c in gray gray-alpha rgb rgb-alpha
643cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            do
653cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III               mpg "$g" "$c" "$b"
663cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            done
673cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            for c in gray rgb
683cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            do
693cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III               mptrans "$g" "$c" "$b"
703cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III            done
713cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III         done
723cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      done;;
733cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
743cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   --coverage)
753cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      # Comments below indicate cases known to be required and not duplicated
763cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      # in other (required) cases; the aim is to get a minimal set that gives
773cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      # the maxium code coverage.
783cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg none gray-alpha 8 # required: code coverage, sRGB opaque component
793cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg none palette 8 # required: basic palette read
803cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg 1.8 gray 2 # required: tests gamma threshold code
813cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg 1.8 palette 2 # required: code coverage
823cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg 1.8 palette 4 # required: code coverage
833cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg 1.8 palette 8 # error limits only
843cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg linear palette 8 # error limits only
853cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg linear rgb-alpha 16 # error limits only
863cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg sRGB palette 1 # required: code coverage
873cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      mpg sRGB rgb-alpha 16 # required: code coverage: pngread.c:2422 untested
883cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      :;;
893cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III
903cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III   *)
913cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      echo "$0 $1: unknown argument, usage:" >&2
923cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      echo "  $0 [--all|--coverage|--small]" >&2
933cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins III      exit 1
943cc83ac4b563ffa7a1bae9572f5fc3c1ee5f8a10Leon Scroggins IIIesac
95