$cr2->lineTo(0, 5 * $patheight / 6.0); $cr2->setSourceRgb(0, 1, 0); $cr2->stroke(); $cr2->moveTo(5 * $patwidth / 6.0, 0); $cr2->lineTo($patwidth, 0); $cr2->lineTo($patwidth, $patheight / 6.0); $cr2->setSourceRgb(0, 0, 1); $cr2->stroke(); $cr2->moveTo(5 * $patwidth / 6.0, $patheight); $cr2->lineTo($patwidth, $patheight); $cr2->lineTo($patwidth, 5 * $patheight / 6.0); $cr2->setSourceRgb(1, 1, 0); $cr2->stroke(); $cr2->setSourceRgb(0.5, 0.5, 0.5); $cr2->setLineWidth($patwidth / 10.0); $cr2->moveTo(0, $patheight / 4.0); $cr2->lineTo($patwidth, $patheight / 4.0); $cr2->stroke(); $cr2->moveTo($patwidth / 4.0, 0); $cr2->lineTo($patwidth / 4.0, $patwidth); $cr2->stroke(); $pattern = new CairoSurfacePattern($pat_surface); $mat = new CairoMatrix(); $mat->scale(2, 1.5); $mat->rotate(1); $mat->translate(-$patwidth / 4.0, -$patwidth / 2.0); $pattern->setMatrix($mat); $pattern->setExtend(CairoExtend::NONE); $con->setSource($pattern); $con->paint(); $sur->writeToPng(dirname(__FILE__) . "/meta-surface-pattern-php.png");
<?php $sur = new CairoImageSurface(CairoFormat::ARGB32, 5, 5); $con = new CairoContext($sur); $color = ''; $color .= chr(0x4c); $color .= chr(0x33); $color .= chr(0x19); $color .= chr(0x80); $s = new CairoImageSurface(CairoFormat::ARGB32, 1, 1); $s->createForData($color, CairoFormat::ARGB32, 1, 1, 4); $pat = new CairoSurfacePattern($s); $pat->setExtend(CairoExtend::REPEAT); for ($i = 0; $i < 5; $i++) { switch ($i) { case 0: $con->setSourceRgb(0.6, 0.7, 0.8); break; case 1: $con->setSourceRgba(0.2, 0.4, 0.6, 0.5); break; case 2: $con->setSourceRgba(0.2, 0.4, 0.6, 0.5); break; case 3: default: $con->setSource($pat); } $con->rectangle($i, 0, 1, 5); $con->fill(); }