示例#1
0
 /**
  * Draw circle 
  * 
  * @param ezcGraphCoordinate $center Center of ellipse
  * @param mixed $width Width of ellipse
  * @param mixed $height height of ellipse
  * @param ezcGraphColor $color Color
  * @param mixed $filled Filled
  * @return void
  */
 public function drawCircle(ezcGraphCoordinate $center, $width, $height, ezcGraphColor $color, $filled = true)
 {
     $this->initiliazeSurface();
     $this->context->save();
     // Draw circular arc path
     $this->context->newPath();
     $this->context->translate($center->x, $center->y);
     $this->context->scale(1, $height / $width);
     $this->context->arc(0.0, 0.0, $width / 2, 0, 2 * M_PI);
     $this->context->restore();
     $this->getStyle($color, $filled);
     $this->context->stroke();
     // Create polygon array to return
     $polygonArray = array();
     for ($angle = 0; $angle < 2 * M_PI; $angle += deg2rad($this->options->imageMapResolution)) {
         $polygonArray[] = new ezcGraphCoordinate($center->x + cos($angle) * $width / 2, $center->y + sin($angle) * $height / 2);
     }
     return $polygonArray;
 }
示例#2
0
文件: sphere.php 项目: jamesan/cairo
<?php

$Surface = new CairoImageSurface(0, 256, 256);
$ctx = new CairoContext($Surface);
$ctx->setAntialias(0);
$ctx->setFillRule(0);
$ctx->scale(256 / 1.0, 256 / 1.0);
$pat = new CairoLinearGradient(0.0, 0.0, 0.0, 1.0);
$pat->addColorStopRgba(1, 0, 0, 0, 1);
$pat->addColorStopRgba(0, 1, 1, 1, 1);
$ctx->rectangle(0, 0, 1, 1);
$ctx->setSource($pat);
$ctx->fill();
$pat = new CairoRadialGradient(0.45, 0.4, 0.1, 0.4, 0.4, 0.5);
$pat->addColorStopRgba(0, 1, 1, 1, 1);
$pat->addColorStopRgba(1, 0, 0, 0, 1);
$ctx->setSource($pat);
$ctx->arc(0.5, 0.5, 0.3, 0, 2 * 3.14);
$ctx->fill();
$check = $ctx->getTarget();
$check->writeToPng(dirname(__FILE__) . '/sphere.png');
示例#3
0
<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 120, 100);
$con = new CairoContext($sur);
$con->setSourceRgb(1, 1, 1);
$con->paint();
$con->setSourceRgb(0, 0, 0);
$con->setMiterLimit(100000);
for ($xscale = 1; $xscale <= 1000; $xscale += 999) {
    for ($yscale = 1; $yscale <= 1000; $yscale += 999) {
        //$max_scale = ($xscale > $yscale) ? $xscale : $yscale;
        $max_scale = max($xscale, $yscale);
        $con->save();
        if ($xscale > 1) {
            $con->translate(50, 0);
        }
        if ($yscale > 1) {
            $con->translate(0, 50);
        }
        $con->scale($xscale, $yscale);
        $con->setLineWidth(10.0 / $max_scale);
        $con->moveTo(10.0 / $xscale, 10.0 / $yscale);
        $con->lineTo(40.0 / $xscale, 10.0 / $yscale);
        $con->lineTo(10.0 / $xscale, 30.0 / $yscale);
        $con->stroke();
        $con->restore();
    }
}
$sur->writeToPng(dirname(__FILE__) . "/miter-precision-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");
示例#5
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");
?>


示例#6
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");
    $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
<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 8, 8);
$con = new CairoContext($sur);
$con->setSourceRgb(1, 1, 1);
$con->paint();
$con->setSourceRgb(0, 0, 0);
$con->setLineJoin(CairoLineJoin::ROUND);
$con->scale(20.0 / 100.0, 20 / 100.0);
$con->scale(1.0 / 20, 1.0 / 20);
$con->setLineWidth(20);
$con->translate(-18300, -13200);
$con->newPath();
$con->moveTo(18928, 13843);
$con->lineTo(18500, 13843);
$con->lineTo(18500, 13400);
$con->lineTo(18928, 13400);
$con->lineTo(18928, 13843);
$con->stroke();
$sur->writeToPng(dirname(__FILE__) . "/infinite-join-php.png");
?>

示例#9
0
$con->translate($size + $pad, 0);
$con->moveTo(0, 0);
$con->relLineTo(0, $size);
$con->relLineTo($size, 0);
$con->closePath();
$con->moveTo(2 * $linewidth, 0);
$con->relLineTo(3 * $linewidth, 0);
$con->relLineTo(0, 3 * $linewidth);
$con->setLineCap(CairoLineCap::SQUARE);
$con->setLineJoin(CairoLineJoin::MITER);
$con->stroke();
$con->restore();
$con->translate(0, $size + 2 * $pad);
//$con->save();
$con->save();
$con->scale(1, 2);
$con->moveTo(0, 0);
$con->relLineTo(0, $size);
$con->relLineTo($size, 0);
$con->closePath();
$con->moveTo(2 * $linewidth, 0);
$con->relLineTo(3 * $linewidth, 0);
$con->relLineTo(0, 3 * $linewidth);
$con->setLineCap(CairoLineCap::BUTT);
$con->setLineJoin(CairoLineJoin::BEVEL);
$con->stroke();
$con->translate($size + $pad, 0);
$con->moveTo(0, 0);
$con->relLineTo(0, $size);
$con->relLineTo($size, 0);
$con->closePath();
示例#10
0
<?php

$sur = new CairoImageSurface(CairoFormat::RGB24, 165, 30);
$con = new CairoContext($sur);
$con->moveTo(0, 0);
$con->setSourceRgb(1, 1, 1);
$con->paint();
$con->setSourceRgb(0, 0, 0);
$con->moveTo(0, 0);
$con->translate(5, 5);
/* First compress the pen to a vertical line. */
$con->rectangle(0, 0, 20, 20);
$con->curveTo(20 / 2, 0, 20, 20 / 2, 20, 20);
$con->save();
$con->scale(1.0E-5, 1.0);
$con->stroke();
$con->restore();
$con->translate(5 + 20, 0);
/* Then compress the pen to a horizontal line. */
$con->rectangle(0, 0, 20, 20);
$con->curveTo(20 / 2, 0, 20, 20 / 2, 20, 20);
$con->save();
$con->scale(1.0, 1.0E-5);
$con->stroke();
$con->restore();
$con->translate(5 + 20, 0);
/* Finally a line at an angle. */
$con->rectangle(0, 0, 20, 20);
$con->curveTo(20 / 2, 0, 20, 20 / 2, 20, 20);
$con->save();
$con->rotate(M_PI / 4.0);
示例#11
0
    $con->save();
    $con->setDash($dash, 0.0);
    $con->moveTo(0, 0);
    $con->arc(0, 0, 12.5, 0, 3 * M_PI / 2);
    $con->closePath();
    $con->stroke();
    $con->restore();
}
$sur = new CairoImageSurface(CairoFormat::ARGB32, 200, 200);
$con = new CairoContext($sur);
$con->setSourceRgb(1, 1, 1);
$con->paint();
$con->setSourceRgb(0, 0, 0);
$con->save();
$con->translate(50, 50);
$con->scale(1, 1);
draw_symbol($con);
$con->restore();
$con->save();
$con->translate(150, 50);
$con->scale(-1, 1);
draw_symbol($con);
$con->restore();
$con->save();
$con->translate(150, 150);
$con->scale(-1, -1);
draw_symbol($con);
$con->restore();
$con->save();
$con->translate(50, 150);
$con->scale(1, -1);
示例#12
0
<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 76, 76);
$con = new CairoContext($sur);
$con->setSourceRgb(1, 1, 1);
$con->paint();
$con->setAntialias(CairoAntialias::MODE_NONE);
$con->setSourceRgb(0, 0, 0);
$con->translate(-300, -300);
$con->scale(677.0 / 26, 677.0 / 26);
$con->translate(1, 1);
$con->rectangle(11, 11, 1, 1);
$con->rectangle(11, 12, 1, 1);
$con->rectangle(12, 11, 1, 1);
$con->rectangle(12, 12, 1, 1);
$con->setSourceRgb(0, 0, 0);
$con->fill();
$sur->writeToPng(dirname(__FILE__) . "/rectangle-rounding-error-php.png");
?>