| #!/bin/sh |
| # |
| # Copyright 1999-2020 ImageMagick Studio LLC, a non-profit organization |
| # dedicated to making software imaging solutions freely available. |
| # |
| # You may not use this file except in compliance with the License. You may |
| # obtain a copy of the License at |
| # |
| # https://imagemagick.org/script/license.php |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| . ./common.shi |
| . ${srcdir}/tests/common.shi |
| |
| depth=`eval ${MAGICK} xc:none -format '%[fx:QuantumRange]' info:-` |
| if [ "X$depth" = "X255" ]; then |
| echo "1..1" |
| echo "ok" |
| exit 0 |
| fi |
| echo "1..19" |
| |
| # how to generate a one pixel (average rose) color and output its values |
| in="rose: -scale 1x1" # a one pixel image of the average color. |
| out="-format '%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]' info:-" |
| |
| # ---------------- |
| |
| # Colors to compare results to. |
| error=false |
| average=`eval ${MAGICK} "$in" -noop "$out"` |
| too_dark=`eval ${MAGICK} "$in" -colorspace RGB "$out"` |
| too_light=`eval ${MAGICK} "$in" -set colorspace RGB -colorspace sRGB "$out"` |
| format='%-30s%s\n' # results formating |
| format2='%-30s%-14s%s\n' |
| |
| printf "$format2" "Average \"rose:\" Color" "$average" "sRGB(rose)" |
| printf "$format2" "Too Dark Color" "$too_dark" "sRGB(rose)->RGB result" |
| printf "$format2" "Too Light Color" "$too_light" "RGB(rose)->sRGB result" |
| echo '' |
| |
| # |
| # Sanity checks |
| # |
| # NOTE: as a extra validation on sanity checks below... |
| # eval ${MAGICK} "$in" -gamma .454545 "$out" |
| # produces a value of 74,25,20 which is close to 73,26,21 below. |
| # eval ${MAGICK} "$in" -gamma 2.2 "$out" |
| # produces a value of 198,158,151 whcih is close to 199,160,152 below. |
| # |
| # Actual values used below come from IM v6.5.4-7 colorspace conversions |
| # |
| error=false |
| if [ "X$average" != "X146,89,80" ]; then |
| echo "Sanity Failure: Average expected to be 145,89,80 - ABORTING" |
| error=true |
| fi |
| if [ "X$too_dark" != "X73,26,21" ]; then |
| echo "Sanity Failure: Too Dark expected to be 73,26,21 - ABORTING" |
| error=true |
| fi |
| if [ "X$too_light" != "X199,160,152" ]; then |
| echo "Sanity Failure: Too Light expected to be 199,160,152 - ABORTING" |
| error=true |
| fi |
| $error && exit 1 |
| |
| test_color() { |
| test="sRGB" |
| cs=''; |
| for i in "$@"; do |
| test="${test}->$i" # format of the test being performed |
| cs="$cs -colorspace $i" # colorspace operations to perform test |
| done |
| color=`eval ${MAGICK} "$in" $cs "$out"` |
| |
| if [ "X$color" = "X$average" ]; then |
| return 0 |
| fi |
| # Its failed the round-trip test, now report how it failed! |
| error=true |
| if [ "X$color" = "X$too_light" ]; then |
| return 1 |
| fi |
| if [ "X$color" = "X$too_dark" ]; then |
| return 1 |
| fi |
| return 1 |
| } |
| |
| # ---------------- |
| |
| test_color RGB sRGB && echo "ok" || echo "not ok" |
| |
| test_color XYZ sRGB && echo "ok" || echo "not ok" |
| test_color XYZ RGB sRGB && echo "ok" || echo "not ok" |
| test_color RGB XYZ sRGB && echo "ok" || echo "not ok" |
| |
| test_color LAB sRGB && echo "ok" || echo "not ok" |
| test_color XYZ LAB sRGB && echo "ok" || echo "not ok" |
| test_color LAB XYZ sRGB && echo "ok" || echo "not ok" |
| test_color RGB LAB sRGB && echo "ok" || echo "not ok" |
| test_color LAB RGB sRGB && echo "ok" || echo "not ok" |
| |
| test_color CMY sRGB && echo "ok" || echo "not ok" |
| test_color CMYK sRGB && echo "ok" || echo "not ok" |
| test_color HSL sRGB && echo "ok" || echo "not ok" |
| test_color HSB sRGB && echo "ok" || echo "not ok" |
| test_color HWB sRGB && echo "ok" || echo "not ok" |
| test_color Log sRGB && echo "ok" || echo "not ok" |
| test_color YIQ sRGB && echo "ok" || echo "not ok" |
| test_color YUV sRGB && echo "ok" || echo "not ok" |
| test_color YCbCr sRGB && echo "ok" || echo "not ok" |
| test_color OHTA sRGB && echo "ok" || echo "not ok" |
| : |