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