$width
$width : integer
Image width in pixels
Class Rectangle
$fillColor : \Grafika\Color
$borderColor : \Grafika\Color
__construct(array $points = array(array(0, 0), array(0, 0), array(0, 0)), integer $borderSize = 1, \Grafika\Color|string|boolean $borderColor = '#000000', \Grafika\Color|string|boolean $fillColor = '#FFFFFF')
Creates a polygon.
array | $points | Array of all X and Y positions. Must have at least three positions. |
integer | $borderSize | Size of the border in pixels. Defaults to 1 pixel. Set to 0 for no border. |
\Grafika\Color|string|boolean | $borderColor | Border color. Defaults to black. Set to null for no color. |
\Grafika\Color|string|boolean | $fillColor | Fill color. Defaults to white. Set to null for no color. |
getFillColor() : \Grafika\Color
getBorderColor() : \Grafika\Color
draw(\Grafika\ImageInterface $image) : \Grafika\ImageInterface
\Grafika\ImageInterface | $image |
<?php
namespace Grafika\Gd\DrawingObject;
use Grafika\DrawingObject\Polygon as Base;
use Grafika\DrawingObjectInterface;
use Grafika\Gd\Editor;
/**
* Class Rectangle
* @package Grafika
*/
class Polygon extends Base implements DrawingObjectInterface
{
public function draw($image)
{
if(function_exists('imageantialias')){
imageantialias($image->getCore(), true);
}
$points = $this->points();
$count = count($this->points);
// Create filled polygon
if( null !== $this->fillColor){
list($r, $g, $b, $alpha) = $this->getFillColor()->getRgba();
$fillColorResource = imagecolorallocatealpha(
$image->getCore(), $r, $g, $b,
Editor::gdAlpha($alpha)
);
imagefilledpolygon($image->getCore(), $points,
$count,
$fillColorResource
);
}
// Create polygon borders. It will be placed on top of the filled polygon (if present)
if ( 0 < $this->getBorderSize() and null !== $this->borderColor) { // With border > 0 AND borderColor !== null
list($r, $g, $b, $alpha) = $this->getBorderColor()->getRgba();
$borderColorResource = imagecolorallocatealpha(
$image->getCore(), $r, $g, $b,
Editor::gdAlpha($alpha)
);
imagepolygon($image->getCore(), $points,
$count,
$borderColorResource
);
}
return $image;
}
protected function points(){
$points = array();
foreach($this->points as $point){
$points[] = $point[0];
$points[] = $point[1];
}
if( count($points) < 6 ){
throw new \Exception('Polygon needs at least 3 points.');
}
return $points;
}
}