<?php $sur = new CairoImageSurface(CairoFormat::ARGB32, 3 * (3 + 6 + 3), 8 * (6 + 3) + 3); $con = new CairoContext($sur); $cap = array(CairoLineCap::ROUND, CairoLineCap::SQUARE, CairoLineCap::BUTT); $dash = array(2.0, 2.0); $dash_long = array(6.0, 6.0); $con->setSourceRgb(1, 0, 0); for ($i = 0; $i < 3; $i++) { $con->save(); $con->setLineCap($cap[$i]); /* simple degenerate paths */ $con->setLineWidth(6); $con->moveTo(6, 6); $con->lineTo(6, 6); $con->stroke(); $con->translate(0, 3 * 3); $con->moveTo(6, 6); $con->closePath(); $con->stroke(); /* degenerate paths starting with dash on */ $con->setDash($dash, 0.0); $con->translate(0, 3 * 3); $con->moveTo(6, 6); $con->lineTo(6, 6); $con->stroke(); $con->translate(0, 3 * 3); $con->moveTo(6, 6); $con->closePath(); $con->stroke(); /* degenerate paths starting with dash off */
<?php $sur = new CairoImageSurface(CairoFormat::ARGB32, 25 * 60, 4 * 60); $con = new CairoContext($sur); $dash = array(20.0, 20.0); $con->setSourceRgb(0, 0, 0); $con->paint(); for ($a = 0; $a < 4; $a++) { for ($b = 0; $b < 5; $b++) { for ($c = 0; $c < 5; $c++) { $con->moveTo(($b * 5 + $c) * 60 + 10, $a * 60 + 10); $con->relCurveTo(0, $b * 10, 0, $b * 10, $c * 10, $b * 10); $con->setSourceRgb(1, 1, 1); $con->setLineWidth(8); $con->setLineCap(CairoLineCap::ROUND); $con->setDash($dash, $a * 10); $con->strokePreserve(); $con->setSourceRgb(0, 0.5, 1); $con->setLineWidth(2); $con->setLineCap(2); $ar = array(8.0, 8.0); $con->setDash($ar, 0); $con->stroke(); } } } $sur->writeToPng(dirname(__FILE__) . '/dash-curve-php.png');
$con->setSourceRgb(1, 1, 1); $con->paint(); $con->restore(); for ($i = 0; $i < 2; $i++) { $con->save(); $con->setLineWidth($linewidth); $con->setDash($dash, $dashoff); $con->translate($pad, $pad); $con->moveTo(0, 0); $con->relLineTo(0, $size); $con->relLineTo($size, 0); $con->closePath(); $con->moveTo(2 * $linewidth, 0); $con->relLineTo(3 * $linewidth, 0); $con->relLineTo(0, 3 * $linewidth); $con->setLineCap(CairoLineCap::BUTT); $con->setLineJoin(CairoLineJoin::BEVEL); $con->stroke(); $con->translate($size + $pad, 0); $con->moveTo(0, 0); $con->relLineTo(0, $size); $con->relLineTo($size, 0); $con->closePath(); $con->moveTo(2 * $linewidth, 0); $con->relLineTo(3 * $linewidth, 0); $con->relLineTo(0, 3 * $linewidth); $con->setLineCap(CairoLineCap::ROUND); $con->setLineJoin(CairoLineJoin::ROUND); $con->stroke(); $con->translate($size + $pad, 0); $con->moveTo(0, 0);