示例#1
0
<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 256 + 32 * 2, 192 + 32 * 2);
$con = new CairoContext($sur);
$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$s->createFromPng(dirname(__FILE__) . "/romedalen.png");
//$s1 = new CairoImageSurface(FORMATARGB32,100, 100);
$s1 = $sur->createSimilar($sur->getContent(), 320, 256);
$con2 = new CairoContext($s1);
$con2->setSourceSurface($s, 32, 32);
$con2->setOperator(CairoOperator::SOURCE);
$pat = $con2->getSource();
$pat->setExtend(CairoExtend::REPEAT);
$con2->paint();
$con->setSourceSurface($s1, 0, 0);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/extend-repeat-similar-php.png");
?>

    $data .= chr(0xff);
}
for ($i = 0; $i < 2; $i++) {
    $data .= chr(0x0);
    $data .= chr(0xff);
    $data .= chr(0x0);
    $data .= chr(0xff);
    $data .= chr(0x0);
    $data .= chr(0xff);
    $data .= chr(0x0);
    $data .= chr(0xff);
    $data .= chr(0xff);
    $data .= chr(0x0);
    $data .= chr(0x0);
    $data .= chr(0xff);
    $data .= chr(0xff);
    $data .= chr(0x0);
    $data .= chr(0x0);
    $data .= chr(0xff);
}
$con->setSourceRgb(0, 0, 0);
$con->paint();
$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$s->createForData($data, CairoFormat::RGB24, 4, 4, 16);
//$con->test_paint_checkered();
$con->scale(0.5, 0.5);
$con->setSourceSurface($s, 4, 4);
$pat = $con->getSource();
$pat->setFilter(CairoFilter::NEAREST);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/scale-down-source-surface-paint-php.png");
示例#3
0
$sur = new CairoImageSurface(CairoFormat::ARGB32, 90, 90);
$con = new CairoContext($sur);
$surface_size = (90 - 30) / 10;
$con->setSourceRgba(0, 0, 0, 1);
$con->rectangle(0, 0, 90, 90);
$con->fill();
$surface = new CairoImageSurface(CairoFormat::RGB24, $surface_size, $surface_size);
$con2 = new CairoContext($surface);
$con2->setSourceRgb(1, 1, 1);
$con2->rectangle(0, 0, $surface_size / 2, $surface_size / 2);
$con2->fill();
$con2->setSourceRgb(1, 0, 0);
$con2->rectangle($surface_size / 2, 0, $surface_size / 2, $surface_size / 2);
$con2->fill();
$con2->setSourceRgb(0, 1, 0);
$con2->rectangle(0, $surface_size / 2, $surface_size / 2, $surface_size / 2);
$con2->fill();
$con2->setSourceRgb(0, 0, 1);
$con2->rectangle($surface_size / 2, $surface_size / 2, $surface_size / 2, $surface_size / 2);
$con2->fill();
$con->scale(10, 10);
$con->setSourceSurface($surface, 1.5, 1.5);
/* Using EXTEND_REFLECT makes this test pass for image and xlib backends */
$pattern = $con->getSource();
$pattern->setExtend(CairoExtend::PAD);
$con->rectangle(1.5, 1.5, 6, 6);
$con->clip();
$con->setSource($pattern);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/extend-pad-php.png");