示例#1
0
    $con = new CairoContext($s);
    $con->setSourceRgb(1, 1, 1);
    $con->rectangle(0, 0, $surface_size / 2, $surface_size / 2);
    $con->fill();
    $con->setSourceRgb(1, 0, 0);
    $con->rectangle($surface_size / 2, 0, $surface_size / 2, $surface_size / 2);
    $con->fill();
    $con->setSourceRgb(0, 1, 0);
    $con->rectangle(0, $surface_size / 2, $surface_size / 2, $surface_size / 2);
    $con->fill();
    $con->setSourceRgb(0, 0, 1);
    $con->rectangle($surface_size / 2, $surface_size / 2, $surface_size / 2, $surface_size / 2);
    $con->fill();
    //	$s->writeToPng(dirname(__FILE__)  . "temp1.png");
}
$size = 90;
$sur = new CairoPSSurface("ps-surface-source.ps", $size, $size);
$sur->setFallbackResolution(72, 72);
$con = new CairoContext($sur);
$con->setSourceRgb(0, 0, 0);
$con->paint();
$surface_size = $size - 30;
$s = new CairoPSSurface("temp.pdf", $surface_size, $surface_size);
draw_pattern($surface_size);
$s->writeToPng(dirname(__FILE__) . "/temp1.png");
$con->setSourceSurface($s, 15.0, 15.0);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/ps-surface-source-php.png");
?>

示例#2
0
$c = array();
$color = "";
$color .= chr(0xff);
$color .= chr(0xff);
$color .= chr(0xff);
$color .= chr(0xff);
$c[0] = $color;
$color = "";
$color .= chr(0x0);
$color .= chr(0x0);
$color .= chr(0xff);
$color .= chr(0xff);
$c[1] = $color;
$color = "";
$color .= chr(0x0);
$color .= chr(0xff);
$color .= chr(0x0);
$color .= chr(0xff);
$c[2] = $color;
$color = "";
$color .= chr(0xff);
$color .= chr(0x0);
$color .= chr(0x0);
$color .= chr(0xff);
$c[3] = $color;
for ($i = 0; $i < 4; $i++) {
    $s->createForData($c[$i], CairoFormat::RGB24, 1, 1, 4);
    $con->setSourceSurface($s, $i % 2, $i / 2);
    $con->paint();
}
$sur->writeToPng(dirname(__FILE__) . "/move-to-show-surface-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");
示例#4
0
<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 36, 36);
$con = new CairoContext($sur);
$s = new CairoImageSurface(CairoFormat::ARGB32, 2, 2);
$con2 = new CairoContext($s);
$con2->setSourceRgb(1, 0, 0);
$con2->paint();
$con2->setSourceRgb(0, 0, 1);
$con2->rectangle(0, 1, 1, 1);
$con2->rectangle(1, 0, 1, 1);
$con2->fill();
$con->setSourceRgb(0, 0, 0);
$con->paint();
$con->save();
$con->translate(3, 3);
$con->scale(10, 10);
$con->translate(0.5, 0.5);
$con->setSourceSurface($s, 0, 0);
$con->paint();
$con->restore();
$sur->writeToPng(dirname(__FILE__) . "/filter-bilinear-extents-php.png");
?>


示例#5
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");
$con->setSourceSurface($s, 32, 32);
$pat = $con->getSource();
$pat->setExtend(CairoExtend::REPEAT);
$con->setSource($pat);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/extend-repeat-php.png");
?>

示例#6
0
<?php

$size = 10;
$pad = 2;
$sur = new CairoImageSurface(CairoFormat::ARGB32, $size, $size);
$con = new CairoContext($sur);
$con->setSourceRgb(0, 0, 1);
$con->rectangle($pad, $pad, $size - 2 * $pad, $size - 2 * $pad);
$con->fill();
$s = $con->getGroupTarget();
$c = $s->getContent();
$s1 = $s->createSimilar($c, $size / 2, $size / 2);
$c = new CairoContext($s1);
$c->setSourceRgb(1, 0, 0);
$c->rectangle($pad, $pad, $size - 2 * $pad, $size - 2 * $pad);
$c->fill();
$s1->setDeviceOffset($size / 2, $size / 2);
$con->setSourceSurface($s1, $size / 2, $size / 2);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/device-offset-positive-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);
}
echo $data;
//$con->setSourceRgb(0,0,0);
//$con->paint();
$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$s->createForData($data, CairoFormat::RGB24, 4, 4, 16);
$con->scale(2, 2);
$con->setSourceSurface($s, 1, 1);
$pat = $con->getSource();
$pat->setFilter(CairoFilter::NEAREST);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/scale-source-surface-paint-php.png");
示例#8
0
    $data .= chr(0x0);
    $data .= chr(0x80);
    $data .= chr(0x80);
}
for ($i = 0; $i < 2; $i++) {
    $data .= chr(0x0);
    $data .= chr(0x80);
    $data .= chr(0x0);
    $data .= chr(0x80);
    $data .= chr(0x0);
    $data .= chr(0x80);
    $data .= chr(0x0);
    $data .= chr(0x80);
    $data .= chr(0x80);
    $data .= chr(0x0);
    $data .= chr(0x0);
    $data .= chr(0x80);
    $data .= chr(0x80);
    $data .= chr(0x0);
    $data .= chr(0x0);
    $data .= chr(0x80);
}
echo $data;
$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$s->createForData($data, CairoFormat::ARGB32, 4, 4, 16);
$con->scale(4, 4);
$con->setSourceSurface($s, 2, 2);
$pat = $con->getSource();
$pat->setFilter(CairoFilter::NEAREST);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/paint-source-alpha-php.png");
示例#9
0
<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 2, 2);
$con = new CairoContext($sur);
$s = new CairoImageSurface(CairoFormat::ARGB32, 2, 2);
$file = fopen(dirname(__FILE__) . "/create-from-png-ref.png", "r");
$s->createFromPng($file);
$con->setSourceSurface($s);
$con->paint();
$sur->writeToPng(dirname(__FILE__) . "/create-from-png-stream-php.png");
示例#10
0
$width = $pad + $points * 2 + $pad;
$height = $width;
$sur = new CairoImageSurface(CairoFormat::ARGB32, $width, $height);
$s = new CairoImageSurface(CairoFormat::ARGB32, 1, 1);
$con = new CairoContext($sur);
$c = new CairoContext($s);
$c->setSourceRgb(0, 0, 0);
$c->paint();
$con->setSourceRgb(1, 1, 1);
$con->paint();
$con->setSourceRgb(0, 0, 0);
$con->translate($pad, $pad);
$con->setAntialias(CairoAntialias::MODE_NONE);
for ($i = 0; $i < $points; $i++) {
    for ($j = 0; $j < $points; $j++) {
        $t1 = 2 * $i + ($i + 1) * $step;
        $t2 = 2 * $j + ($j + 1) * $step;
        $con->setSourceSurface($s, $t1, $t2);
        $pat = $con->getSource();
        $pat->setFilter(CairoFilter::NEAREST);
        $con->paint();
    }
}
$sur->writeToPng(dirname(__FILE__) . '/a1-image-sample-php.png');
?>





示例#11
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");