1#!/bin/sh
2# -*- shell-script -*-
3# Copyright (C) 2004-2012 GraphicsMagick Group
4# Test MSL Composite
5. ./common.shi
6. ${top_srcdir}/utilities/tests/common.sh
7
8#Author: Max Hohenegger
9#Last change: 2008-10-01
10#Module: conjure, MSL
11#Description: Test whether compositing images over a background image using
12#             gravity delivers the same result using conjure (MSL) and convert
13
14# Number of tests we plan to execute
15test_plan_fn 2
16
17COMPOSITE_CMD="${GM} composite"
18CONJURE_CMD="${GM} conjure -debug exception"
19CONVERT_CMD="${GM} convert"
20COMPARE_CMD="${GM} compare"
21DISPLAY_CMD="${GM} display"
22
23FORMAT="_out.pnm"
24
25BLANK="comp_blank$FORMAT"
26CENTER="comp_Center$FORMAT"
27NORTH="comp_North$FORMAT"
28NORTHEAST="comp_NorthEast$FORMAT"
29EAST="comp_East$FORMAT"
30SOUTHEAST="comp_SouthEast$FORMAT"
31SOUTH="comp_South$FORMAT"
32SOUTHWEST="comp_SouthWest$FORMAT"
33WEST="comp_West$FORMAT"
34NORTHWEST="comp_NorthWest$FORMAT"
35
36RESULT="comp_result_out$FORMAT"
37CONJURE_RESULT="comp_conjure_result_out$FORMAT"
38COMPARED="comp_compared$FORMAT"
39
40draw_text ()
41{
42    TEXT=$1
43    TARGET=$2
44
45    DRAWCMDFILE=msl_composite_draw_out.txt
46#    TEMPFILE=draw_text_tmp.svg
47#    cat <<EOF >$TEMPFILE
48#<?xml version="1.0" encoding="utf-8" ?>
49#<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
50# "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
51#<svg width="120" height="100" xmlns="http://www.w3.org/2000/svg">
52#    <style type="text/css"><![CDATA[ text {font-size:20px; text-anchor:middle;} ]]></style>
53#    <text x="50" y="50">$TEXT</text>
54#</svg>
55#EOF
56
57#    $CONVERT_CMD $TEMPFILE $TARGET || exit 1
58
59    echo "font-size 20 font '${GENERIC_TTF}' gravity center text 0,0 '$TEXT'" > ${DRAWCMDFILE}
60    $CONVERT_CMD -size 100x100 xc:white -draw @${DRAWCMDFILE} $TARGET
61    rm -f ${DRAWCMDFILE}
62#    rm -f $TEMPFILE
63}
64
65draw_blank ()
66{
67    TARGET=$1
68
69#    TEMPFILE=draw_blank_tmp.svg
70#    cat <<EOF >$TEMPFILE
71#<?xml version="1.0" encoding="utf-8" ?>
72#<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
73# "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
74#<svg width="500" height="500"
75# xmlns="http://www.w3.org/2000/svg">
76#</svg>
77#EOF
78
79#    $CONVERT_CMD $TEMPFILE $TARGET || exit 2
80    $CONVERT_CMD -size 500x500 xc:white $TARGET
81#   rm -f $TEMPFILE
82}
83
84########################## PREPARE TEST OBJECTS ###########################
85draw_blank $BLANK
86draw_text "Center" $CENTER
87draw_text "North" $NORTH
88draw_text "NorthEast" $NORTHEAST
89draw_text "East" $EAST
90draw_text "SouthEast" $SOUTHEAST
91draw_text "South" $SOUTH
92draw_text "SouthWest" $SOUTHWEST
93draw_text "West" $WEST
94draw_text "NorthWest" $NORTHWEST
95
96########################## CREATE TEST BASE ###########################
97cp $BLANK $RESULT
98$COMPOSITE_CMD $CENTER    $RESULT -gravity Center    $RESULT || exit 3
99$COMPOSITE_CMD $NORTH     $RESULT -gravity North     $RESULT || exit 3
100$COMPOSITE_CMD $NORTHEAST $RESULT -gravity NorthEast $RESULT || exit 3
101$COMPOSITE_CMD $EAST      $RESULT -gravity East      $RESULT || exit 3
102$COMPOSITE_CMD $SOUTHEAST $RESULT -gravity SouthEast $RESULT || exit 3
103$COMPOSITE_CMD $SOUTH     $RESULT -gravity South     $RESULT || exit 3
104$COMPOSITE_CMD $SOUTHWEST $RESULT -gravity SouthWest $RESULT || exit 3
105$COMPOSITE_CMD $WEST      $RESULT -gravity West      $RESULT || exit 3
106$COMPOSITE_CMD $NORTHWEST $RESULT -gravity NorthWest $RESULT || exit 3
107
108########################## CREATE TEST OBJECT ###########################
109TEMPFILE=composite_tmp.msl
110cat <<EOF >$TEMPFILE
111<?xml version="1.0" encoding="utf-8" ?>
112<group>
113    <image id="1"><read filename="$CENTER"/></image>
114    <image id="2"><read filename="$NORTH"/></image>
115    <image id="3"><read filename="$NORTHEAST"/></image>
116    <image id="4"><read filename="$EAST"/></image>
117    <image id="5"><read filename="$SOUTHEAST"/></image>
118    <image id="6"><read filename="$SOUTH"/></image>
119    <image id="7"><read filename="$SOUTHWEST"/></image>
120    <image id="8"><read filename="$WEST"/></image>
121    <image id="9"><read filename="$NORTHWEST"/></image>
122    <image>
123        <read filename="$BLANK"/>
124        <composite image="1" gravity="Center"/>
125        <composite image="2" gravity="North"/>
126        <composite image="3" gravity="NorthEast"/>
127        <composite image="4" gravity="East"/>
128        <composite image="5" gravity="SouthEast"/>
129        <composite image="6" gravity="South"/>
130        <composite image="7" gravity="SouthWest"/>
131        <composite image="8" gravity="West"/>
132        <composite image="9" gravity="NorthWest"/>
133    </image>
134    <write filename="$CONJURE_RESULT"/>
135</group>
136EOF
137test_command_fn 'Conjure' -F 'XML' $CONJURE_CMD $TEMPFILE
138
139################### COMPARE TEST OBJECT TO TESTBASE #########################
140
141#gm display $RESULT
142#gm display $CONJURE_RESULT
143
144cmp $RESULT $CONJURE_RESULT
145status=$?
146test_command_fn 'Verify Result' test $status
147if test $status -eq 0
148then
149  rm -f $TEMPFILE $BLANK $CENTER $NORTH $NORTHEAST $EAST $SOUTHEAST $SOUTH \
150    $SOUTHWEST $WEST $NORTHWEST $RESULT $CONJURE_RESULT
151fi
152#diff --report-identical-files $RESULT $CONJURE_RESULT
153#$COMPARE_CMD $RESULT $CONJURE_RESULT $COMPARED || exit 5
154#$DISPLAY_CMD $COMPARED || exit 6
155:
156