/** * 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; }
<?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');
<?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");
<?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"); ?>
$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");
<?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"); ?>
$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();
<?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);
$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);
<?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"); ?>