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