1--TEST--
2Test Imagick, evaluateImage
3--SKIPIF--
4<?php
5$imageMagickRequiredVersion=0x675;
6require_once(dirname(__FILE__) . '/skipif.inc');
7checkFormatPresent('png');
8?>
9--FILE--
10<?php
11
12$evaluateType = 1;
13$firstTerm = 0.5;
14$gradientStartColor = 'black';
15$gradientEndColor = 'white';
16
17$evaluateTypes = array(
18	\Imagick::EVALUATE_ADD,
19	\Imagick::EVALUATE_AND,
20	\Imagick::EVALUATE_MAX,
21	\Imagick::EVALUATE_MIN,
22	\Imagick::EVALUATE_OR,
23	\Imagick::EVALUATE_SET,
24	\Imagick::EVALUATE_SUBTRACT,
25	\Imagick::EVALUATE_XOR,
26	\Imagick::EVALUATE_THRESHOLD,
27	\Imagick::EVALUATE_THRESHOLDBLACK,
28	\Imagick::EVALUATE_THRESHOLDWHITE,
29	\Imagick::EVALUATE_ADDMODULUS,
30
31	\Imagick::EVALUATE_DIVIDE,
32	\Imagick::EVALUATE_MULTIPLY,
33	\Imagick::EVALUATE_RIGHTSHIFT,
34	\Imagick::EVALUATE_LEFTSHIFT,
35	\Imagick::EVALUATE_POW,
36	\Imagick::EVALUATE_LOG,
37	\Imagick::EVALUATE_GAUSSIANNOISE,
38	\Imagick::EVALUATE_IMPULSENOISE,
39	\Imagick::EVALUATE_LAPLACIANNOISE,
40	\Imagick::EVALUATE_MULTIPLICATIVENOISE,
41	\Imagick::EVALUATE_POISSONNOISE,
42	\Imagick::EVALUATE_UNIFORMNOISE,
43	\Imagick::EVALUATE_COSINE,
44	\Imagick::EVALUATE_SINE,
45);
46
47
48
49function evaluateImage($evaluateType, $firstTerm, $gradientStartColor, $gradientEndColor) {
50    $imagick = new \Imagick();
51    $size = 400;
52    $imagick->newPseudoImage(
53        $size,
54        $size,
55        "gradient:$gradientStartColor-$gradientEndColor"
56    );
57
58    $quantumScaledTypes = array(
59        \Imagick::EVALUATE_ADD,
60        \Imagick::EVALUATE_AND,
61        \Imagick::EVALUATE_MAX,
62        \Imagick::EVALUATE_MIN,
63        \Imagick::EVALUATE_OR,
64        \Imagick::EVALUATE_SET,
65        \Imagick::EVALUATE_SUBTRACT,
66        \Imagick::EVALUATE_XOR,
67        \Imagick::EVALUATE_THRESHOLD,
68        \Imagick::EVALUATE_THRESHOLDBLACK,
69        \Imagick::EVALUATE_THRESHOLDWHITE,
70        \Imagick::EVALUATE_ADDMODULUS,
71    );
72
73    $unscaledTypes = array(
74        \Imagick::EVALUATE_DIVIDE,
75        \Imagick::EVALUATE_MULTIPLY,
76        \Imagick::EVALUATE_RIGHTSHIFT,
77        \Imagick::EVALUATE_LEFTSHIFT,
78        \Imagick::EVALUATE_POW,
79        \Imagick::EVALUATE_LOG,
80        \Imagick::EVALUATE_GAUSSIANNOISE,
81        \Imagick::EVALUATE_IMPULSENOISE,
82        \Imagick::EVALUATE_LAPLACIANNOISE,
83        \Imagick::EVALUATE_MULTIPLICATIVENOISE,
84        \Imagick::EVALUATE_POISSONNOISE,
85        \Imagick::EVALUATE_UNIFORMNOISE,
86        \Imagick::EVALUATE_COSINE,
87        \Imagick::EVALUATE_SINE,
88    );
89
90    if (in_array($evaluateType, $unscaledTypes)) {
91        $imagick->evaluateimage($evaluateType, $firstTerm);
92    }
93    else if (in_array($evaluateType, $quantumScaledTypes)) {
94        $imagick->evaluateimage($evaluateType, $firstTerm * \Imagick::getQuantum());
95    }
96    else {
97        throw new \Exception("Evaluation type $evaluateType is not listed as either scaled or unscaled");
98    }
99
100    $imagick->setimageformat('png');
101    $bytes = $imagick->getImageBlob();
102    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
103}
104
105foreach ($evaluateTypes as $evaluateType) {
106	evaluateImage($evaluateType, $firstTerm, $gradientStartColor, $gradientEndColor) ;
107}
108echo "Ok";
109?>
110--EXPECTF--
111Ok