• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/perl
2#  Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization
3#  dedicated to making software imaging solutions freely available.
4#
5#  You may not use this file except in compliance with the License.  You may
6#  obtain a copy of the License at
7#
8#    https://imagemagick.org/script/license.php
9#
10#  Unless required by applicable law or agreed to in writing, software
11#  distributed under the License is distributed on an "AS IS" BASIS,
12#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13#  See the License for the specific language governing permissions and
14#  limitations under the License.
15#
16# Test montage method.
17#
18BEGIN { $| = 1; $test=1, print "1..19\n"; }
19END {print "not ok 1\n" unless $loaded;}
20use Image::Magick;
21$loaded=1;
22
23require 't/subroutines.pl';
24
25chdir 't' || die 'Cd failed';
26
27#
28# 1) Test montage defaults (except no label that requires an exact font)
29#
30testMontage( q//,
31  q/background=>'#696e7e'/,
32  'd29f905749426e5491bbd8c4f58b7c14dc1a72250632b7e7b542910e0cbb7c77');
33
34#
35# 2) Test Center gravity
36#    Image should be centered in frame
37#
38++$test;
39testMontage( q//,
40  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'Center'/,
41  '21ab4077722e45db67c945b2364cfc1365d3f939d57fc6fb2c7b77f161381c2e');
42
43#
44# 3) Test NorthWest gravity
45#    Image should be at top-left in frame
46#
47++$test;
48testMontage( q//,
49  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'NorthWest'/,
50  'a518ad6aa1c3ad2b117864525d610481c1b3b9ead2c624c773fb427f85ef897b');
51
52#
53# 4) Test North gravity
54#    Image should be at top-center of frame
55#
56++$test;
57testMontage( q//,
58  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'North'/,
59  '4126725283eb699545d755a6b30c5fc6cee9ac16a1e8310cdbbedcbd054bebf6');
60
61#
62# 5) Test NorthEast gravity
63#    Image should be at top-right of frame
64#
65++$test;
66testMontage( q//,
67  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'NorthEast'/,
68  'e144c8d0da144864063753903838a286d46da56ca9ea0ce0b6080f84c6feac6c');
69
70#
71# 6) Test West gravity
72#    Image should be at left-center of frame
73#
74++$test;
75testMontage( q//,
76  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'West'/,
77  '67286cf1ed572e836f6b67c5d733a039bba9e6a7ef18d25397e46c17223b206f');
78
79#
80# 7) Test East gravity
81#    Image should be at right-center of frame.
82#
83++$test;
84testMontage( q//,
85  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'East'/,
86  'decf855bf26dfc3f7401769a09e302d8bac53cba6c27fd456cdfbc35e494be01');
87
88#
89# 8) Test SouthWest gravity
90#    Image should be at bottom-left of frame
91#
92++$test;
93testMontage( q//,
94  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'SouthWest'/,
95  '848fda241866b1a191ab4794b42272b5756dbeacac5b58ef5227a34a8c72817d');
96
97#
98# 9) Test South gravity
99#    Image should be at bottom of frame
100#
101++$test;
102testMontage( q//,
103  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'South'/,
104  'f5cccb291b3bea8cb62e5cd7a6c8e154eedfd8e12c20409a8e663231e62411c4');
105
106#
107# 10) Test SouthEast gravity
108#     Image should be at bottom-right of frame.
109#
110++$test;
111testMontage( q//,
112  q/background=>'#696e7e',  geometry=>'90x80+5+5>', gravity=>'SouthEast'/,
113  'a19748d933fefe536b29b8ba98ce0024e3f2dc98102a1f56307a229bc3042f1c');
114
115#
116# 11) Test Framed Montage
117#
118# Image border color 'bordercolor' controls frame background color
119# Image matte color 'mattecolor' controls frame color
120# Image pen color 'pen' controls label text foreground color
121++$test;
122testMontage( q/bordercolor=>'blue', mattecolor=>'red'/,
123  q/background=>'#696e7e',  tile=>'4x4', geometry=>'90x80+3+3>', frame=>'8x10',
124  borderwidth=>'0', gravity=>'Center', background=>'gray'/,
125  'dcfa6c2bc0e20ff0b5dba464559a1e106e605ec456c21c1205a53e478e4f3e02',
126  'dcfa6c2bc0e20ff0b5dba464559a1e106e605ec456c21c1205a53e478e4f3e02',
127  '72a7587a058c71cd62226e59b64c335190a37d7dd990d68534cf05df61084783');
128
129#
130# 12) Test Framed Montage with drop-shadows
131#
132++$test;
133testMontage( q/bordercolor=>'blue', mattecolor=>'red'/,
134  q/background=>'#696e7e',  tile=>'4x4', geometry=>'90x80+6+6>', frame=>'8x10',
135  borderwidth=>'0', gravity=>'Center', shadow=>'True',background=>'gray'/,
136  'b3b7a530270164b4c5e391ac8080736a901428e5f650694170969fd292559317',
137  'b3b7a530270164b4c5e391ac8080736a901428e5f650694170969fd292559317',
138  '9fe18e11ac759d3a86362f16d0bdee4b6952d617daa3ad2c3511e19050dda71d');
139
140#
141# 13) Test Framed Montage with drop-shadows and background texture
142#
143++$test;
144testMontage( q/bordercolor=>'blue', mattecolor=>'red'/,
145  q/background=>'#696e7e',  tile=>'4x4', geometry=>'90x80+6+6>', frame=>'8x10',
146  borderwidth=>'0', gravity=>'Center', shadow=>'True', texture=>'granite:'/,
147  '08d4dfa09995e13a518002565d862f6e89d65de37d59c1d1ab45d7c6cde6bd47');
148
149#
150# 14) Test Un-bordered, Un-framed Montage
151#
152++$test;
153testMontage( q//,
154  q/background=>'#696e7e',  tile=>'4x4', geometry=>'90x80+6+6>', mode=>'Unframe',
155  borderwidth=>'0', gravity=>'Center', background=>'gray'/,
156  '245f9fbee901f99e08458aad797ade92ea17e68b230212510ad2eca96e169e39',
157  '245f9fbee901f99e08458aad797ade92ea17e68b230212510ad2eca96e169e39',
158  'ab07c5591848f1aa8bfffc46c094be40cf662e18f68b19229f1f7e9d9eec4692');
159
160#
161# 15) Test Bordered, Un-framed Montage (mode=>'Unframe')
162#
163++$test;
164testMontage( q/bordercolor=>'red'/,
165  q/background=>'#696e7e',  tile=>'4x4', geometry=>'90x80+6+6>', mode=>'Unframe',
166  borderwidth=>'5', gravity=>'Center', background=>'gray'/,
167  '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0',
168  '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0',
169  '65bb1cd11a0dbbd90ca46b07ce58b2ba5fcfadc0869356e5a08eda53510e0126');
170
171#
172# 16) Test Bordered, Un-framed Montage (mode=>'UnFrame')
173#
174++$test;
175testMontage( q/bordercolor=>'red'/,
176  q/ tile=>'4x4', geometry=>'90x80+6+6>', mode=>'UnFrame',
177  borderwidth=>'5', gravity=>'Center', background=>'gray'/,
178  '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0',
179  '611833bd0e13681a82d34c4c40b2a263bf245ac879de240114df874f9eaca7f0',
180  '65bb1cd11a0dbbd90ca46b07ce58b2ba5fcfadc0869356e5a08eda53510e0126');
181
182#
183# 17) Test Un-bordered, Un-framed Montage with 16x1 tile
184#
185++$test;
186testMontage( q//,
187  q/background=>'#696e7e',  tile=>'16x1', geometry=>'90x80+0+0>', mode=>'Unframe',
188  borderwidth=>'0', gravity=>'Center', background=>'gray'/,
189  '49bf08b9ae34c7c8acee15b123c29e414ae6fb9bdf2a15dbdd3a33a753b8e7ff',
190  '49bf08b9ae34c7c8acee15b123c29e414ae6fb9bdf2a15dbdd3a33a753b8e7ff',
191  'c42d5f2bef5f30167f02d6ba85504ee82e06c16d9404bc6fc0f6e75c0f8f53e9');
192
193#
194# 18) Test concatenated thumbnail Montage (concatenated via special Concatenate mode)
195#     Thumbnails should be compacted tightly together in a grid
196#
197++$test;
198testMontage( q//,
199  q/background=>'#696e7e',  tile=>'4x4', geometry=>'90x80>', mode=>'Concatenate'/,
200  'b46f6d6c6305ab1d5f05f89030e775fca2f01dd5d40a8340372bd31dafaa4e83');
201#
202# 19) Test concatenated thumbnail Montage (concatentated by setting params to zero)
203#     Thumbnails should be compacted tightly together in a grid
204#
205++$test;
206testMontage( q//,
207  q/background=>'#696e7e',  tile=>'4x4', geometry=>'+0+0', mode=>'Unframe', shadow=>'False',
208  borderwidth=>'0', background=>'gray'/,
209  'b46f6d6c6305ab1d5f05f89030e775fca2f01dd5d40a8340372bd31dafaa4e83',
210  'b46f6d6c6305ab1d5f05f89030e775fca2f01dd5d40a8340372bd31dafaa4e83',
211  '6c61a8ad7be5f8c368dcb591f766349e648b623cbc41e6699ba3ea53ef182510');
212