cli-colorspace.tap revision 7ce65e7125a4e1df1a274ce373c537a9df9c16cd
1#!/bin/sh
2#
3#  Copyright 1999-2016 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. ./common.shi
18. ${srcdir}/tests/common.shi
19
20depth=`eval ${MAGICK} xc:none -format '%[fx:QuantumRange]' info:-`
21if [ "X$depth" = "X255" ]; then
22  echo "1..1"
23  echo "ok"
24  exit 0
25fi
26echo "1..19"
27
28# how to generate a one pixel (average rose) color and output its values
29in="rose: -scale 1x1"    # a one pixel image of the average color.
30out="-format '%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]' info:-"
31
32# ----------------
33
34# Colors to compare results to.
35error=false
36average=`eval ${MAGICK} "$in" -noop "$out"`
37too_dark=`eval ${MAGICK} "$in" -colorspace RGB "$out"`
38too_light=`eval ${MAGICK} "$in" -set colorspace RGB -colorspace sRGB "$out"`
39format='%-30s%s\n'        # results formating
40format2='%-30s%-14s%s\n'
41
42printf "$format2" "Average \"rose:\" Color"  "$average" "sRGB(rose)"
43printf "$format2" "Too Dark Color"  "$too_dark"  "sRGB(rose)->RGB result"
44printf "$format2" "Too Light Color" "$too_light" "RGB(rose)->sRGB result"
45echo ''
46
47#
48# Sanity checks
49#
50# NOTE: as a extra validation on sanity checks below...
51#    eval ${MAGICK} "$in" -gamma .454545 "$out"
52# produces a value of  74,25,20   which is close to 73,26,21 below.
53#    eval ${MAGICK} "$in" -gamma 2.2 "$out"
54# produces a value of  198,158,151  whcih is close to 199,160,152 below.
55#
56# Actual values used below come from IM v6.5.4-7 colorspace conversions
57#
58error=false
59if [ "X$average" != "X146,89,80" ]; then
60  echo "Sanity Failure: Average expected to be 145,89,80 - ABORTING"
61  error=true
62fi
63if [ "X$too_dark" != "X73,26,21" ]; then
64  echo "Sanity Failure: Too Dark expected to be 73,26,21 - ABORTING"
65  error=true
66fi
67if [ "X$too_light" != "X199,160,152" ]; then
68  echo "Sanity Failure: Too Light expected to be 199,160,152 - ABORTING"
69  error=true
70fi
71$error && exit 1
72
73test_color() {
74  test="sRGB"
75  cs='';
76  for i in "$@"; do
77    test="${test}->$i"        # format of the test being performed
78    cs="$cs -colorspace $i"   # colorspace operations to perform test
79  done
80  color=`eval ${MAGICK} "$in" $cs "$out"`
81
82  if [ "X$color" = "X$average" ]; then
83    return 0
84  fi
85  # Its failed the round-trip test, now report how it failed!
86  error=true
87  if [ "X$color" = "X$too_light" ]; then
88    return 1
89  fi
90  if [ "X$color" = "X$too_dark" ]; then
91    return 1
92  fi
93  return 1
94}
95
96# ----------------
97
98test_color RGB     sRGB && echo "ok" || echo "not ok"
99
100test_color XYZ     sRGB && echo "ok" || echo "not ok"
101test_color XYZ RGB sRGB && echo "ok" || echo "not ok"
102test_color RGB XYZ sRGB && echo "ok" || echo "not ok"
103
104test_color LAB     sRGB && echo "ok" || echo "not ok"
105test_color XYZ LAB sRGB && echo "ok" || echo "not ok"
106test_color LAB XYZ sRGB && echo "ok" || echo "not ok"
107test_color RGB LAB sRGB && echo "ok" || echo "not ok"
108test_color LAB RGB sRGB && echo "ok" || echo "not ok"
109
110test_color CMY   sRGB && echo "ok" || echo "not ok"
111test_color CMYK  sRGB && echo "ok" || echo "not ok"
112test_color HSL   sRGB && echo "ok" || echo "not ok"
113test_color HSB   sRGB && echo "ok" || echo "not ok"
114test_color HWB   sRGB && echo "ok" || echo "not ok"
115test_color Log   sRGB && echo "ok" || echo "not ok"
116test_color YIQ   sRGB && echo "ok" || echo "not ok"
117test_color YUV   sRGB && echo "ok" || echo "not ok"
118test_color YCbCr sRGB && echo "ok" || echo "not ok"
119test_color OHTA  sRGB && echo "ok" || echo "not ok"
120:
121