<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$con = new CairoContext($sur);
$s = new CairoImageSurface(CairoFormat::ARGB32, 1, 1);
$s->createFromPng(dirname(__FILE__) . "/romedalen.png");
$con->setSourceRgb(0, 0, 0);
$con->rectangle(0, 0, 100, 100);
$con->fill();
$con->translate(10, 10);
$con->setOperator(CairoOperator::OVER);
$con->setSourceSurface($s, 0, 0);
$con->rectangle(0, 0, 90, 90);
$con->fill();
$sur->writeToPng(dirname(__FILE__) . "/composite-integer-translate-over-php.png");
?>

示例#2
0
 $con->moveTo($x, $y);
 $con->lineTo($x + $width, $y);
 $con->lineTo($x, $y + $height);
 $con->clip();
 switch ($i) {
     case 0:
         $wi = floor($width * 0.9);
         $he = floor($height * 0.9);
         $x += 0.05 * $width;
         $y += 0.05 * $height;
         //$stemp = $con->get_group_target();
         $msur = $sur->createSimilar(CairoContent::ALPHA, $wi, $he);
         $c2 = new CairoContext($msur);
         $c2->save();
         $c2->setSourceRgba(0, 0, 0, 0);
         $c2->setOperator(CairoOperator::SOURCE);
         $c2->paint();
         $c2->restore();
         $c2->setSourceRgb(1, 1, 1);
         $c2->arc(0.5 * $wi, 0.5 * $he, 0.45 * $he, 0, 2 * M_PI);
         $c2->fill();
         //unset($c2);
         $con->maskSurface($msur, $x, $y);
         //unset($msur);
         //unset($stemp);
         break;
     case 1:
         $con->setFontSize(0.9 * $height);
         $ext = $con->textExtents("FG");
         $con->moveTo($x + floor(($width - $ext["width"]) / 2 + 0.5) - $ext["x_bearing"], $y + floor(($height - $ext["height"]) / 2 + 0.5) - $ext["y_bearing"]);
         $con->showText("FG");
示例#3
0
$con->selectFontFace("Bitstream Vera Sans", CairoFontSlant::NORMAL, CairoFontWeight::NORMAL);
for ($j = 0; $j < 4; $j++) {
    for ($i = 0; $i < 2; $i++) {
        $x = $i * ($width + $pad) + $pad;
        $y = $j * ($height + $pad) + $pad;
        $con->save();
        $pat = new CairoLinearGradient($x + $width, $y, $x, $y + $height);
        $pat->addColorStopRgba(0.2, 0.0, 0.0, 1.0, 1.0);
        /* Solid blue */
        $pat->addColorStopRgba(0.8, 0.0, 0.0, 1.0, 0.0);
        /* Transparent blue */
        $con->setSource($pat);
        $con->rectangle($x, $y, $width, $height);
        $con->fillPreserve();
        $con->clip();
        $con->setOperator(CairoOperator::CLEAR);
        //pattern_funcs[i] ($x, $y);
        switch ($i) {
            case 0:
                set_solid_pattern($x, $y);
                break;
            case 1:
                set_gradient_pattern($x, $y);
                break;
        }
        //draw_funcs[j] (cr, x, y);
        switch ($j) {
            case 0:
                draw_mask($x, $y);
                break;
            case 1:
示例#4
0
<?php

$size = 40;
$pad = 2;
$width = $pad + $size + $pad;
$height = $width;
$sur = new CairoImageSurface(CairoFormat::ARGB32, $width, $height);
$con = new CairoContext($sur);
$con->translate($pad, $pad);
$con->moveTo($size / 2, $size / 2);
$con->relLineTo($size / 2, 0);
$con->relLineTo($size / -2, $size / 2);
$con->closePath();
$con->setOperator(CairoOperator::SOURCE);
$con->setSourceRgba(1, 0, 0, 0.5);
$con->fill();
$con->arc($size / 2, $size / 2, $size / 4, 0, 2 * M_PI);
$con->setOperator(CairoOperator::OVER);
$con->setSourceRgba(0, 1, 0, 0.5);
$con->fill();
$sur->writeToPng(dirname(__FILE__) . "/over-above-source-php.png");
?>