1<?php
2
3/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4
5/**
6 * This is not a test in itself, since it depends on another source part to
7 * create the canvas. It is merely a common canvas test include, to avoid
8 * redundant code in every canvas test.
9 *
10 * PHP versions 4 and 5
11 *
12 * LICENSE: This library is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License as published by
14 * the Free Software Foundation; either version 2.1 of the License, or (at your
15 * option) any later version. This library is distributed in the hope that it
16 * will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
17 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
18 * General Public License for more details. You should have received a copy of
19 * the GNU Lesser General Public License along with this library; if not, write
20 * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
21 * 02111-1307 USA
22 *
23 * @category   Images
24 * @package    Image_Canvas
25 * @author     Jesper Veggerby <pear.nosey@veggerby.dk>
26 * @copyright  Copyright (C) 2003, 2004 Jesper Veggerby Hansen
27 * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
28 * @version    CVS: $Id: canvas_body.php 262259 2008-07-08 11:45:42Z steinm $
29 * @link       http://pear.php.net/package/Image_Canvas
30 */
31
32$canvas->addText(array('x' => 5, 'y' => 5, 'text' => 'Line'));
33
34$canvas->setLineColor('black');
35$canvas->line(array('x0' => 100, 'x1' => 195, 'y0' => 5, 'y1' => 5));
36$canvas->setLineColor('red');
37$canvas->line(array('x0' => 200, 'x1' => 295, 'y0' => 5, 'y1' => 5));
38$canvas->setLineColor('green');
39$canvas->line(array('x0' => 300, 'x1' => 395, 'y0' => 5, 'y1' => 5));
40$canvas->setLineColor('blue');
41$canvas->line(array('x0' => 400, 'x1' => 495, 'y0' => 5, 'y1' => 5));
42
43$canvas->setLineColor(array('blue', 'red'));
44$canvas->line(array('x0' => 100, 'x1' => 195, 'y0' => 10, 'y1' => 10));
45
46$canvas->setLineColor(array('blue', 'blue', 'transparent'));
47$canvas->line(array('x0' => 200, 'x1' => 295, 'y0' => 10, 'y1' => 10));
48
49$canvas->setLineColor('yellow');
50$canvas->setLineThickness(2);
51$canvas->line(array('x0' => 300, 'x1' => 395, 'y0' => 10, 'y1' => 10));
52
53$canvas->setLineColor('red');
54$canvas->setLineThickness(4);
55$canvas->line(array('x0' => 400, 'x1' => 495, 'y0' => 10, 'y1' => 10));
56
57$canvas->setLineColor('black@0.4');
58$canvas->setLineThickness(4);
59$canvas->line(array('x0' => 100, 'x1' => 220, 'y0' => 15, 'y1' => 15));
60$canvas->setLineColor('red@0.4');
61$canvas->setLineThickness(4);
62$canvas->line(array('x0' => 200, 'x1' => 320, 'y0' => 15, 'y1' => 15));
63$canvas->setLineColor('green@0.4');
64$canvas->setLineThickness(4);
65$canvas->line(array('x0' => 300, 'x1' => 420, 'y0' => 15, 'y1' => 15));
66$canvas->setLineColor('blue@0.4');
67$canvas->setLineThickness(4);
68$canvas->line(array('x0' => 400, 'x1' => 495, 'y0' => 15, 'y1' => 15));
69
70$canvas->addText(array('x' => 5, 'y' => 30, 'text' => 'Rectangle'));
71
72$canvas->setLineColor('black');
73$canvas->rectangle(array('x0' => 100, 'x1' => 150, 'y0' => 30, 'y1' => 80));
74$canvas->setLineColor('red');
75$canvas->rectangle(array('x0' => 155, 'x1' => 205, 'y0' => 30, 'y1' => 80));
76$canvas->setLineColor('green');
77$canvas->rectangle(array('x0' => 210, 'x1' => 260, 'y0' => 30, 'y1' => 80));
78$canvas->setLineColor('blue');
79$canvas->rectangle(array('x0' => 265, 'x1' => 315, 'y0' => 30, 'y1' => 80));
80
81$canvas->setFillColor('black');
82$canvas->rectangle(array('x0' => 100, 'x1' => 150, 'y0' => 85, 'y1' => 135));
83$canvas->setLineColor('black');
84$canvas->setFillColor('red');
85$canvas->rectangle(array('x0' => 155, 'x1' => 205, 'y0' => 85, 'y1' => 135));
86$canvas->setLineColor('black');
87$canvas->setFillColor('green');
88$canvas->rectangle(array('x0' => 210, 'x1' => 260, 'y0' => 85, 'y1' => 135));
89$canvas->setLineColor('black');
90$canvas->setFillColor('blue');
91$canvas->rectangle(array('x0' => 265, 'x1' => 315, 'y0' => 85, 'y1' => 135));
92
93$canvas->setLineColor('red');
94$canvas->setFillColor('red@0.3');
95$canvas->rectangle(array('x0' => 340, 'x1' => 400, 'y0' => 30, 'y1' => 90));
96$canvas->setLineColor('green');
97$canvas->setFillColor('green@0.3');
98$canvas->rectangle(array('x0' => 380, 'x1' => 440, 'y0' => 50, 'y1' => 110));
99$canvas->setLineColor('blue');
100$canvas->setFillColor('blue@0.3');
101$canvas->rectangle(array('x0' => 360, 'x1' => 420, 'y0' => 70, 'y1' => 130));
102
103$canvas->addText(array('x' => 90, 'y' => 140, 'text' => "Circle / Ellipse", 'alignment' => array('horizontal' => 'right')));
104
105$canvas->setLineColor('black');
106$canvas->ellipse(array('x' => 130, 'y' => 170, 'rx' => 30, 'ry' => 30));
107$canvas->setLineColor('red');
108$canvas->ellipse(array('x' => 195, 'y' => 170, 'rx' => 30, 'ry' => 30));
109$canvas->setLineColor('blue');
110$canvas->ellipse(array('x' => 250, 'y' => 170, 'rx' => 30, 'ry' => 30));
111$canvas->setLineColor('green');
112$canvas->ellipse(array('x' => 305, 'y' => 170, 'rx' => 30, 'ry' => 30));
113
114$canvas->setFillColor('black');
115$canvas->ellipse(array('x' => 130, 'y' => 235, 'rx' => 30, 'ry' => 30));
116$canvas->setLineColor('black');
117$canvas->setFillColor('red');
118$canvas->ellipse(array('x' => 195, 'y' => 235, 'rx' => 30, 'ry' => 30));
119$canvas->setLineColor('black');
120$canvas->setFillColor('blue');
121$canvas->ellipse(array('x' => 250, 'y' => 235, 'rx' => 30, 'ry' => 30));
122$canvas->setLineColor('black');
123$canvas->setFillColor('green');
124$canvas->ellipse(array('x' => 305, 'y' => 235, 'rx' => 30, 'ry' => 30));
125
126$canvas->setLineColor('brown');
127$canvas->setFillColor('brown@0.3');
128$canvas->ellipse(array('x' => 400, 'y' => 200, 'rx' => 40, 'ry' => 40));
129$canvas->setLineColor('orange');
130$canvas->setFillColor('orange@0.3');
131$canvas->ellipse(array('x' => 430, 'y' => 220, 'rx' => 30, 'ry' => 40));
132$canvas->setLineColor('purple');
133$canvas->setFillColor('purple@0.3');
134$canvas->ellipse(array('x' => 390, 'y' => 230, 'rx' => 40, 'ry' => 20));
135
136$canvas->addText(array('x' => 5, 'y' => 270, 'text' => 'Pie slices'));
137
138$c = 0;
139for ($i = 360; $i >= 45; $i -= 30) {
140    $canvas->setLineColor('black');
141    $canvas->setFillColor('blue@' . sprintf('%0.1f', ((360 - $i) / 360)));
142    $canvas->pieslice(
143        array(
144            'x' => 130 + $c * 55,
145            'y' => 295,
146            'rx' => 25,
147            'ry' => 25,
148            'v1' => 0,
149            'v2' => $i
150        )
151    );
152    $c++;
153}
154
155$canvas->addText(array('x' => 5, 'y' => 325, 'text' => 'Polygon'));
156
157$canvas->setLineColor('green');
158for ($i = 0; $i < 8; $i++) {
159    $canvas->addVertex(array('x' => 115 + $i * 50, 'y' => 330));
160    $canvas->addVertex(array('x' => 100 + $i * 50, 'y' => 325));
161    $canvas->addVertex(array('x' => 125 + $i * 50, 'y' => 350));
162}
163$canvas->polygon(array('connect' => false));
164
165$canvas->setLineColor('purple');
166$canvas->setFillColor('purple@0.3');
167for ($i = 0; $i < 8; $i++) {
168    $canvas->addVertex(array('x' => 100 + $i * 50, 'y' => 355));
169    $canvas->addVertex(array('x' => 125 + $i * 50, 'y' => 380 + 2 * $i));
170}
171$canvas->addVertex(array('x' => 550, 'y' => 355));
172for ($i = 4; $i >= 0; $i--) {
173    $canvas->addVertex(array('x' => 120 + $i * 100, 'y' => 430 + $i * 5));
174    $canvas->addVertex(array('x' => 110 + $i * 100, 'y' => 405 - $i * 5));
175}
176$canvas->polygon(array('connect' => true));
177
178$canvas->addText(array('x' => 5, 'y' => 455, 'text' => 'Splines'));
179
180$points = array();
181$points[] = array(
182    'x' => 100, 'y' => 470,
183    'p1x' => 120, 'p1y' => 455,
184    'p2x' => 150, 'p2y' => 460
185);
186
187$points[] = array(
188    'x' => 170, 'y' => 490,
189    'p1x' => 190, 'p1y' => 500,
190    'p2x' => 200, 'p2y' => 510
191);
192
193$points[] = array(
194    'x' => 210, 'y' => 540,
195    'p1x' => 200, 'p1y' => 550,
196    'p2x' => 160, 'p2y' => 560
197);
198
199$points[] = array(
200    'x' => 120, 'y' => 480
201);
202
203// draw control points! not directly a canvas test!
204foreach ($points as $point) {
205    if (isset($last)) {
206        $canvas->setLineColor('gray@0.2');
207        $canvas->line(array('x0' => $last['p2x'], 'y0' => $last['p2y'], 'x1' => $point['x'], 'y1' => $point['y']));
208    }
209
210    $canvas->setLineColor('red');
211    $canvas->ellipse(array('x' => $point['x'], 'y' => $point['y'], 'rx' => 3, 'ry' => 3));
212
213    if (isset($point['p1x'])) {
214        $canvas->setLineColor('green');
215        $canvas->ellipse(array('x' => $point['p1x'], 'y' => $point['p1y'], 'rx' => 2, 'ry' => 2));
216        $canvas->setLineColor('green');
217        $canvas->ellipse(array('x' => $point['p2x'], 'y' => $point['p2y'], 'rx' => 2, 'ry' => 2));
218
219        $canvas->setLineColor('gray@0.2');
220        $canvas->line(array('x0' => $point['x'], 'y0' => $point['y'], 'x1' => $point['p1x'], 'y1' => $point['p1y']));
221        $canvas->setLineColor('gray@0.2');
222        $canvas->line(array('x0' => $point['p1x'], 'y0' => $point['p1y'], 'x1' => $point['p2x'], 'y1' => $point['p2y']));
223
224        $last  = $point;
225    }
226}
227
228foreach ($points as $point) {
229    if (isset($point['p1x'])) {
230        $canvas->addSpline($point);
231    } else {
232        $canvas->addVertex($point);
233    }
234}
235
236$canvas->setLineColor('black');
237$canvas->polygon(array('connect' => false));
238
239$points = array();
240$points[] = array(
241    'x' => 220, 'y' => 470,
242    'p1x' => 240, 'p1y' => 455,
243    'p2x' => 270, 'p2y' => 460
244);
245
246$points[] = array(
247    'x' => 240, 'y' => 490,
248    'p1x' => 310, 'p1y' => 460,
249    'p2x' => 320, 'p2y' => 470
250);
251
252$points[] = array(
253    'x' => 330, 'y' => 500,
254    'p1x' => 320, 'p1y' => 550,
255    'p2x' => 280, 'p2y' => 560
256);
257
258$points[] = array(
259    'x' => 240, 'y' => 520,
260    'p1x' => 230, 'p1y' => 490,
261    'p2x' => 225, 'p2y' => 490
262);
263
264$points[] = array(
265    'x' => 220, 'y' => 470
266);
267
268unset($last);
269// draw control points! not directly a canvas test!
270foreach ($points as $point) {
271    if (isset($last)) {
272        $canvas->setLineColor('gray@0.2');
273        $canvas->line(array('x0' => $last['p2x'], 'y0' => $last['p2y'], 'x1' => $point['x'], 'y1' => $point['y']));
274    }
275
276    $canvas->setLineColor('red');
277    $canvas->ellipse(array('x' => $point['x'], 'y' => $point['y'], 'rx' => 3, 'ry' => 3));
278
279    if (isset($point['p1x'])) {
280        $canvas->setLineColor('green');
281        $canvas->ellipse(array('x' => $point['p1x'], 'y' => $point['p1y'], 'rx' => 2, 'ry' => 2));
282        $canvas->setLineColor('green');
283        $canvas->ellipse(array('x' => $point['p2x'], 'y' => $point['p2y'], 'rx' => 2, 'ry' => 2));
284
285        $canvas->setLineColor('gray@0.2');
286        $canvas->line(array('x0' => $point['x'], 'y0' => $point['y'], 'x1' => $point['p1x'], 'y1' => $point['p1y']));
287        $canvas->setLineColor('gray@0.2');
288        $canvas->line(array('x0' => $point['p1x'], 'y0' => $point['p1y'], 'x1' => $point['p2x'], 'y1' => $point['p2y']));
289
290        $last  = $point;
291    }
292}
293
294foreach ($points as $point) {
295    if (isset($point['p1x'])) {
296        $canvas->addSpline($point);
297    } else {
298        $canvas->addVertex($point);
299    }
300}
301
302$canvas->setLineColor('black');
303$canvas->setFillColor('red@0.2');
304$canvas->polygon(array('connect' => true));
305
306$canvas->addText(array('x' => 375, 'y' => 455, 'text' => 'Image'));
307
308$canvas->image(array('x' => 445, 'y' => 455, 'filename' => './pear-icon.png', 'url' => 'http://pear.veggerby.dk/', 'target' => '_blank'));
309
310$canvas->image(array('x' => 445, 'y' => 495, 'filename' => './pear-icon.png', 'width' => 20, 'height' => 20));
311
312$canvas->image(array('x' => 445, 'y' => 523, 'filename' => './pear-icon.png', 'width' => 40, 'height' => 40));
313
314//$canvas->show();
315$type = basename($_SERVER['SCRIPT_NAME'], '.php');
316$canvas->toHtml(
317    array(
318        'filename' => 'test' . $type . '.' . $type,
319        'urlpath' => '',
320        'filepath' => './',
321        'width' => '100%',
322        'height' => '100%'
323    )
324);
325
326?>
327