예제 #1
0
     $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");
     break;
 case 2:
     $wi = floor($width * 9 / 10);
     $he = floor($height * 9 / 10);
     $x += 0.05 * $width;
     $y += 0.05 * $height;
     $con->newPath();
예제 #2
0
$con = new CairoContext($sur);
$con->setSourceRgb(0, 0, 1);
$con->paint();
$s = new CairoImageSurface(CairoFormat::A1, 6400, 20);
$stride = $s->getStride();
$height = $s->getHeight();
$width = $s->getWidth();
$data = "";
for ($y = 0; $y < $height; $y++) {
    for ($x = 0; $x < ($width + 7) / 8; $x++) {
        $data = $data . chr(5);
    }
}
$s->createForData($data, CairoFormat::A1, $width, $height, $stride);
$con->setSourceRgb(1, 0, 0);
$con->maskSurface($s);
$con->fill();
$s = new CairoImageSurface(CairoFormat::A1, 20, 6400);
$stride = $s->getStride();
$height = $s->getHeight();
$width = $s->getWidth();
$data = "";
for ($y = 0; $y < $height; $y++) {
    for ($x = 0; $x < ($width + 7) / 8; $x++) {
        $data = $data . chr(80);
    }
}
$s->createForData($data, CairoFormat::A1, $width, $height, $stride);
$con->setSourceRgb(0, 1, 0);
$con->maskSurface($s, 0, 0);
$sur->writeToPng(dirname(__FILE__) . "/large-source-php.png");
예제 #3
0
<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 10, 10);
$con = new CairoContext($sur);
$data = "";
for ($i = 0; $i < 4; $i++) {
    $data = $data . chr(0x80);
    $data = $data . chr(0x0);
    $data = $data . chr(0x0);
    $data = $data . chr(0x0);
}
$s = new CairoImageSurface(CairoFormat::ARGB32, 1, 1);
$s->createForData(data, CairoFormat::ARGB32, 2, 2, 8);
//$pat = new CairoSurfacePattern($s);
$con->setSourceRgb(1, 0, 0);
$con->save();
$con->translate(2, 2);
$con->maskSurface($s, 0, 0);
$con->restore();
$con->maskSurface($s, 4, 4);
//$mat = new CairoMatrix();
$con->translate(2, 2);
//$pat->setMatrix($mat);
$con->maskSurface($s, 4, 4);
$sur->writeToPng(dirname(__FILE__) . "/mask-surface-ctm-php.png");
?>