]> granicus.if.org Git - imagemagick/blob - tests/validate-colorspace.sh
(no commit message)
[imagemagick] / tests / validate-colorspace.sh
1 #!/bin/sh
2 #
3 #  Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization
4 #  dedicated to making software imaging solutions freely available.
5 #
6 #  You may not use this file except in compliance with the License.  You may
7 #  obtain a copy of the License at
8 #
9 #    http://www.imagemagick.org/script/license.php
10 #
11 #  Unless required by applicable law or agreed to in writing, software
12 #  distributed under the License is distributed on an "AS IS" BASIS,
13 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 #  See the License for the specific language governing permissions and
15 #  limitations under the License.
16 #
17 . ${srcdir}/tests/common.sh
18
19 depth=`eval ${MAGICK} xc:none -format '%[fx:QuantumRange]' info:-`
20 if [ "X$depth" == "X255" ]; then
21   exit 0
22 fi
23
24 # how to generate a one pixel (average rose) color and output its values
25 in="rose: -scale 1x1"    # a one pixel image of the average color.
26 out="-format '%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]' info:-"
27
28 # ----------------
29
30 # Colors to compare results to.
31 error=false
32 average=`eval ${MAGICK} "$in" -noop "$out"`
33 too_dark=`eval ${MAGICK} "$in" -colorspace RGB "$out"`
34 too_light=`eval ${MAGICK} "$in" -set colorspace RGB -colorspace sRGB "$out"`
35 format='%-30s%s\n'        # results formating
36 format2='%-30s%-14s%s\n'
37
38 printf "$format2" "Average \"rose:\" Color"  "$average" "sRGB(rose)"
39 printf "$format2" "Too Dark Color"  "$too_dark"  "sRGB(rose)->RGB result"
40 printf "$format2" "Too Light Color" "$too_light" "RGB(rose)->sRGB result"
41 echo ''
42
43 #
44 # Sanity checks
45 #
46 # NOTE: as a extra validation on sanity checks below...
47 #    eval ${MAGICK} "$in" -gamma .454545 "$out"
48 # produces a value of  74,25,20   which is close to 17,3,2 below.
49 #    eval ${MAGICK} "$in" -gamma 2.2 "$out"
50 # produces a value of  198,158,151  whcih is close to 229,207,203 below.
51 #
52 # Actual values used below come from IM v6.5.4-7 colorspace conversions
53 #
54 if [ "X$average" != "X146,89,80" ]; then
55   echo "Sanity Failure: Average expected to be 145,89,80 - ABORTING"
56   error=true
57 fi
58 if [ "X$too_dark" != "X17,3,2" ]; then
59   echo "Sanity Failure: Too Dark expected to be 17,3,2 - ABORTING"
60   error=true
61 fi
62 if [ "X$too_light" != "X229,207,203" ]; then
63   echo "Sanity Failure: Too Light expected to be 199,159,152 - ABORTING"
64   error=true
65 fi
66 $error && exit 1
67
68 test_color() {
69   test="sRGB"
70   cs='';
71   for i in "$@"; do
72     test="${test}->$i"        # format of the test being performed
73     cs="$cs -colorspace $i"   # colorspace operations to perform test
74   done
75   color=`eval ${MAGICK} "$in" $cs "$out"`
76
77   if [ "X$color" = "X$average" ]; then
78     printf "$format" "$test" "good"
79     return
80   fi
81   error=false
82   if [ "X$color" = "X$too_light" ]; then
83     printf "$format" "$test" "TOO_LIGHT"
84     return
85   fi
86   if [ "X$color" = "X$too_dark" ]; then
87     printf "$format" "$test" "TOO_DARK"
88     return
89   fi
90   printf "$format" "$test" "UNKNOWN COLOR (expect $average, got $color)"
91 }
92
93 # ----------------
94
95 test_color RGB     sRGB  # round trip (parts tested above)
96
97 test_color XYZ     sRGB
98 test_color XYZ RGB sRGB
99 test_color RGB XYZ sRGB
100
101 test_color LAB     sRGB
102 test_color XYZ LAB sRGB
103 test_color LAB XYZ sRGB
104 test_color RGB LAB sRGB  # this is failing
105 test_color LAB RGB sRGB
106
107 test_color CMY   sRGB
108 test_color CMYK  sRGB
109 test_color HSL   sRGB
110 test_color HSB   sRGB
111 test_color HWB   sRGB
112 test_color Log   sRGB
113 test_color YIQ   sRGB
114 test_color YUV   sRGB
115 test_color YCbCr sRGB
116 test_color OHTA  sRGB
117
118 $error && exit 1 # return the overall error result
119 exit 0